-Hong Kwon <hhh.kwon at samsung dot com>
-Minho Kim <minho07.kim at samsung dot com>
+Junghyun Kim <jh1114.kim@samsung.com>
+Hong Kwon <hhh.kwon@samsung.com>
+MyungHo Ham <mh.ham@samsung.com>
PROJECT(volume C)
SET(SRCS
- src/volume.c
- src/_util_efl.c
- src/_logic.c
- src/_sound.c
+ src/main.c
+ src/view.c
+ src/control.c
+ src/x_event.c
+ src/key_event.c
+ src/timer.c
+ src/sound.c
+ src/bt.c
)
SET(VENDOR "tizen")
SET(PREFIX ${CMAKE_INSTALL_PREFIX})
SET(BINDIR "${PREFIX}/bin")
SET(RESDIR "${PREFIX}/res")
+SET(DATADIR "/opt/usr/apps/com.${VENDOR}.${PACKAGE}/data")
SET(LOCALEDIR "${RESDIR}/locale")
-SET(ICONDIR "${TZ_SYS_SHARE}/icons/default/small")
+SET(ICONDIR "/usr/share/icons/default/small")
SET(IMAGEDIR "${RESDIR}/images/${PACKAGE}")
SET(EDJDIR "${RESDIR}/edje")
ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
INCLUDE(FindPkgConfig)
pkg_check_modules(pkgs REQUIRED
+ capi-appfw-application
+ capi-appfw-app-manager
appcore-efl
- ecore-input
- ecore-x
+# ecore-x
ecore
evas
edje
- mm-sound
+ capi-media-sound-manager
+ capi-network-bluetooth
vconf
- utilX
+# utilX
syspopup
+ syspopup-caller
bundle
- svi
feedback
- glib-2.0
- ui-gadget-1
notification
- capi-system-info
- libtzplatform-config
+# x11 xcomposite xext xi
)
FOREACH(flag ${pkgs_CFLAGS})
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
ENDFOREACH(flag)
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
-SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
-SET(CMAKE_C_FLAGS_RELEASE "-O2")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIE")
+SET(CMAKE_C_FLAGS_PROFILING "-O0 -g -pg -fPIE")
+SET(CMAKE_CXX_FLAGS_PROFILING "-O0 -std=c++0x -g -pg -fPIE")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g -fPIE")
+SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -std=c++0x -g -fPIE")
+SET(CMAKE_C_FLAGS_RELEASE "-O2 -g -fPIE")
+SET(CMAKE_CXX_FLAGS_RELEASE "-O2 std=c++0x -g -fPIE")
+SET(CMAKE_C_FLAGS_CCOV "-O2 -g --coverage -fPIE")
+SET(CMAKE_CXX_FLAGS_CCOV "-O2 std=c++0x -g --coverage -fPIE")
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
FIND_PROGRAM(UNAME NAMES uname)
EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
ADD_DEFINITIONS("-DPACKAGE_NAME=\"${PKGNAME}\"")
ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
ADD_DEFINITIONS("-DRESDIR=\"${RESDIR}\"")
+ADD_DEFINITIONS("-DDATADIR=\"${DATADIR}\"")
ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"")
ADD_DEFINITIONS("-DICONDIR=\"${ICONDIR}\"")
ADD_DEFINITIONS("-DIMAGEDIR=\"${IMAGEDIR}\"")
ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"")
-#SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
-SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed")
-
ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} -lm)
INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
-
# install desktop file & icon
#CONFIGURE_FILE(${PKGNAME}.desktop.in ${CMAKE_BINARY_DIR}/${PKGNAME}.desktop)
INSTALL(FILES ${CMAKE_BINARY_DIR}/${PKGNAME}.xml DESTINATION /usr/share/packages)
INSTALL(FILES ${CMAKE_SOURCE_DIR}/${PKGNAME}.png DESTINATION ${ICONDIR})
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/${PKGNAME}.efl DESTINATION /etc/smack/accesses.d)
# data
ADD_SUBDIRECTORY(data)
--- /dev/null
+Copyright (c) 2009-2014 Samsung Electronics Co., Ltd All Rights Reserved
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+++ /dev/null
-Flora License
-
-Version 1.1, April, 2013
-
-http://floralicense.org/license/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-"License" shall mean the terms and conditions for use, reproduction,
-and distribution as defined by Sections 1 through 9 of this document.
-
-"Licensor" shall mean the copyright owner or entity authorized by
-the copyright owner that is granting the License.
-
-"Legal Entity" shall mean the union of the acting entity and
-all other entities that control, are controlled by, or are
-under common control with that entity. For the purposes of
-this definition, "control" means (i) the power, direct or indirect,
-to cause the direction or management of such entity,
-whether by contract or otherwise, or (ii) ownership of fifty percent (50%)
-or more of the outstanding shares, or (iii) beneficial ownership of
-such entity.
-
-"You" (or "Your") shall mean an individual or Legal Entity
-exercising permissions granted by this License.
-
-"Source" form shall mean the preferred form for making modifications,
-including but not limited to software source code, documentation source,
-and configuration files.
-
-"Object" form shall mean any form resulting from mechanical
-transformation or translation of a Source form, including but
-not limited to compiled object code, generated documentation,
-and conversions to other media types.
-
-"Work" shall mean the work of authorship, whether in Source or Object form,
-made available under the License, as indicated by a copyright notice
-that is included in or attached to the work (an example is provided
-in the Appendix below).
-
-"Derivative Works" shall mean any work, whether in Source or Object form,
-that is based on (or derived from) the Work and for which the editorial
-revisions, annotations, elaborations, or other modifications represent,
-as a whole, an original work of authorship. For the purposes of this License,
-Derivative Works shall not include works that remain separable from,
-or merely link (or bind by name) to the interfaces of, the Work and
-Derivative Works thereof.
-
-"Contribution" shall mean any work of authorship, including the original
-version of the Work and any modifications or additions to that Work or
-Derivative Works thereof, that is intentionally submitted to Licensor
-for inclusion in the Work by the copyright owner or by an individual or
-Legal Entity authorized to submit on behalf of the copyright owner.
-For the purposes of this definition, "submitted" means any form of
-electronic, verbal, or written communication sent to the Licensor or
-its representatives, including but not limited to communication on
-electronic mailing lists, source code control systems, and issue
-tracking systems that are managed by, or on behalf of, the Licensor
-for the purpose of discussing and improving the Work, but excluding
-communication that is conspicuously marked or otherwise designated
-in writing by the copyright owner as "Not a Contribution."
-
-"Contributor" shall mean Licensor and any individual or Legal Entity
-on behalf of whom a Contribution has been received by Licensor and
-subsequently incorporated within the Work.
-
-"Tizen Certified Platform" shall mean a software platform that complies
-with the standards set forth in the Tizen Compliance Specification
-and passes the Tizen Compliance Tests as defined from time to time
-by the Tizen Technical Steering Group and certified by the Tizen
-Association or its designated agent.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
-this License, each Contributor hereby grants to You a perpetual,
-worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-copyright license to reproduce, prepare Derivative Works of,
-publicly display, publicly perform, sublicense, and distribute the
-Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
-this License, each Contributor hereby grants to You a perpetual,
-worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-(except as stated in this section) patent license to make, have made,
-use, offer to sell, sell, import, and otherwise transfer the Work
-solely as incorporated into a Tizen Certified Platform, where such
-license applies only to those patent claims licensable by such
-Contributor that are necessarily infringed by their Contribution(s)
-alone or by combination of their Contribution(s) with the Work solely
-as incorporated into a Tizen Certified Platform to which such
-Contribution(s) was submitted. If You institute patent litigation
-against any entity (including a cross-claim or counterclaim
-in a lawsuit) alleging that the Work or a Contribution incorporated
-within the Work constitutes direct or contributory patent infringement,
-then any patent licenses granted to You under this License for that
-Work shall terminate as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
-Work or Derivative Works thereof pursuant to the copyright license
-above, in any medium, with or without modifications, and in Source or
-Object form, provided that You meet the following conditions:
-
- 1. You must give any other recipients of the Work or Derivative Works
- a copy of this License; and
- 2. You must cause any modified files to carry prominent notices stating
- that You changed the files; and
- 3. You must retain, in the Source form of any Derivative Works that
- You distribute, all copyright, patent, trademark, and attribution
- notices from the Source form of the Work, excluding those notices
- that do not pertain to any part of the Derivative Works; and
- 4. If the Work includes a "NOTICE" text file as part of its distribution,
- then any Derivative Works that You distribute must include a readable
- copy of the attribution notices contained within such NOTICE file,
- excluding those notices that do not pertain to any part of
- the Derivative Works, in at least one of the following places:
- within a NOTICE text file distributed as part of the Derivative Works;
- within the Source form or documentation, if provided along with the
- Derivative Works; or, within a display generated by the Derivative Works,
- if and wherever such third-party notices normally appear.
- The contents of the NOTICE file are for informational purposes only
- and do not modify the License. You may add Your own attribution notices
- within Derivative Works that You distribute, alongside or as an addendum
- to the NOTICE text from the Work, provided that such additional attribution
- notices cannot be construed as modifying the License. You may add Your own
- copyright statement to Your modifications and may provide additional or
- different license terms and conditions for use, reproduction, or
- distribution of Your modifications, or for any such Derivative Works
- as a whole, provided Your use, reproduction, and distribution of
- the Work otherwise complies with the conditions stated in this License
- and your own copyright statement or terms and conditions do not conflict
- the conditions stated in the License including section 3.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
-any Contribution intentionally submitted for inclusion in the Work
-by You to the Licensor shall be under the terms and conditions of
-this License, without any additional terms or conditions.
-Notwithstanding the above, nothing herein shall supersede or modify
-the terms of any separate license agreement you may have executed
-with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
-names, trademarks, service marks, or product names of the Licensor,
-except as required for reasonable and customary use in describing the
-origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
-agreed to in writing, Licensor provides the Work (and each
-Contributor provides its Contributions) on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-implied, including, without limitation, any warranties or conditions
-of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-PARTICULAR PURPOSE. You are solely responsible for determining the
-appropriateness of using or redistributing the Work and assume any
-risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
-whether in tort (including negligence), contract, or otherwise,
-unless required by applicable law (such as deliberate and grossly
-negligent acts) or agreed to in writing, shall any Contributor be
-liable to You for damages, including any direct, indirect, special,
-incidental, or consequential damages of any character arising as a
-result of this License or out of the use or inability to use the
-Work (including but not limited to damages for loss of goodwill,
-work stoppage, computer failure or malfunction, or any and all
-other commercial damages or losses), even if such Contributor
-has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
-the Work or Derivative Works thereof, You may choose to offer,
-and charge a fee for, acceptance of support, warranty, indemnity,
-or other liability obligations and/or rights consistent with this
-License. However, in accepting such obligations, You may act only
-on Your own behalf and on Your sole responsibility, not on behalf
-of any other Contributor, and only if You agree to indemnify,
-defend, and hold each Contributor harmless for any liability
-incurred by, or claims asserted against, such Contributor by reason
-of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Flora License to your work
-
-To apply the Flora License to your work, attach the following
-boilerplate notice, with the fields enclosed by brackets "[]"
-replaced with your own identifying information. (Don't include
-the brackets!) The text should be enclosed in the appropriate
-comment syntax for the file format. We also recommend that a
-file or class name and description of purpose be included on the
-same "printed page" as the copyright notice for easier
-identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Flora License, Version 1.1 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://floralicense.org/license/
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.
-Except as noted, this software is licensed under Flora License, Version 1.1
-Please, see the LICENSE file for Flora License, Version 1.1 terms and conditions.
+Copyright (c) 2009-2014 Samsung Electronics Co., Ltd All Rights Reserved
+
# install edj
ADD_CUSTOM_COMMAND(OUTPUT volume_app.edj
- COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/images/private
- ${CMAKE_CURRENT_SOURCE_DIR}/volume_app.edc ${CMAKE_BINARY_DIR}/volume_app.edj
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/volume_app.edc
+ COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/images/private/volume
+ ${CMAKE_CURRENT_SOURCE_DIR}/volume_app.edc ${CMAKE_BINARY_DIR}/volume_app.edj
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/volume_app.edc
)
ADD_CUSTOM_TARGET(edj_build DEPENDS volume_app.edj)
# install images
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/images/public/ DESTINATION ${IMAGEDIR} FILES_MATCHING PATTERN "*.png")
-
/*
- * org.tizen.volume
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2014 Samsung Electronics Co., Ltd All Rights Reserved
*
- * Licensed under the Flora License, Version 1.1 (the License);
+ * Licensed under the Apache License, Version 2.0 (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/
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
+ * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+/* ___________________________________________________________________________________________________________________________________
+| | | | |
+| | | | |
+| | |*-----------------*| | |CONTENT |*-----------------*| WIN |
+| | |* *| CONTENT | | RIGHT |* *| RIGTH |
+| | |* *| LEFT | | PADDING |* *| PADDING |
+| LEFT |WIN |* IC_SIZE *| PADDING | | |* IC *| |
+| PADDING |LEFT |* *| | CONTENT | |* SETTING *| |
+| |PADDING |* *| | SIZE | |* (IC_SIZE) *| |
+| | |* *| | | |* *| |
+| | |* *| | | |* *| |
+| | |*-----------------*| | | |*-----------------*| |
+| | | | |
+| |___________________________________________|___________________________________________|___________________________________________|
+*/
+
+
+/*
+* Helper sizes
+*/
+#define SCREEN_HEIGHT 800
+#define SCREEN_WIDTH 480
+
+#define SCREEN_HEIGHT_L 480
+#define SCREEN_WIDTH_L 800
+
+
+/**
+ * Values above should be modified if something will be changed in GUI
+ */
+#define WIN_HEIGHT 102
+#define WIN_WIDTH 456
+
+#define LEFT_PADDING 12
+#define RIGHT_PADDING 12
+#define TOP_PADDING 113
+
+#define WIN_LEFT_PADDING 24
+#define WIN_RIGHT_PADDING 26
+#define SETTING_RIGHT_PADDING 21
+
+#define IC_ICON_SIZE 42
+
+#define CONTENT_TOP_PADDING 28
+#define CONTENT_BOTTOM_PADDING CONTENT_TOP_PADDING
+#define CONTENT_LEFT_PADDING 26
+#define CONTENT_RIGHT_PADDING 26
+
+#define CONTENT_SLIDER_WIDTH 291
+#define CONTENT_SLIDER_WIDTH_L 600
+#define CONTENT_HEIGHT 46
+
+#define WARNING_POPUP_HEIGHT 222
+#define WARRNING_TEXT_TOP_PADDING 38
+#define WARRNING_TEXT_HEIGHT 128
+
+/**
+ * This parameters describes window size and position.
+ */
+#define WIN_X_MIN LEFT_PADDING/SCREEN_WIDTH
+#define WIN_X_MAX 1.0-(RIGHT_PADDING/SCREEN_WIDTH)
+#define WIN_Y_MIN TOP_PADDING/SCREEN_HEIGHT
+#define WIN_Y_MAX (TOP_PADDING+WIN_HEIGHT)/SCREEN_HEIGHT
+
+#define WIN_X_MIN_L LEFT_PADDING/SCREEN_WIDTH_L
+#define WIN_X_MAX_L 1.0-(RIGHT_PADDING/SCREEN_WIDTH_L)
+#define WIN_Y_MIN_L TOP_PADDING/SCREEN_HEIGHT_L
+#define WIN_Y_MAX_L (TOP_PADDING+WIN_HEIGHT)/SCREEN_HEIGHT_L
+
+#define WARRING_Y_MAX (TOP_PADDING+WARNING_POPUP_HEIGHT)/SCREEN_HEIGHT
+#define WARRING_Y_MAX_L (TOP_PADDING+WARNING_POPUP_HEIGHT)/SCREEN_HEIGHT_L
+
+/*
+* IC sound (Positioned to clipper)
+*/
+#define IC_SOUND_X_MIN (LEFT_PADDING+WIN_LEFT_PADDING)/SCREEN_WIDTH
+#define IC_SOUND_X_MAX (LEFT_PADDING+WIN_LEFT_PADDING+IC_ICON_SIZE)/SCREEN_WIDTH
+#define IC_SOUND_Y_MIN (CONTENT_TOP_PADDING+TOP_PADDING)/SCREEN_HEIGHT
+#define IC_SOUND_Y_MAX (CONTENT_TOP_PADDING+IC_ICON_SIZE+TOP_PADDING)/SCREEN_HEIGHT
+
+#define IC_SOUND_X_MIN_L (LEFT_PADDING+WIN_LEFT_PADDING)/SCREEN_WIDTH_L
+#define IC_SOUND_X_MAX_L (LEFT_PADDING+WIN_LEFT_PADDING+IC_ICON_SIZE)/SCREEN_WIDTH_L
+#define IC_SOUND_Y_MIN_L (CONTENT_TOP_PADDING+TOP_PADDING)/SCREEN_HEIGHT_L
+#define IC_SOUND_Y_MAX_L (CONTENT_TOP_PADDING+IC_ICON_SIZE+TOP_PADDING)/SCREEN_HEIGHT_L
+
+/*
+* IC setting (Positioned to clipper)
+*/
+#define IC_SETTING_X_MIN 1.0-(SETTING_RIGHT_PADDING+IC_ICON_SIZE+RIGHT_PADDING)/SCREEN_WIDTH
+#define IC_SETTING_X_MAX 1.0-((SETTING_RIGHT_PADDING+RIGHT_PADDING)/SCREEN_WIDTH)
+#define IC_SETTING_Y_MIN (CONTENT_TOP_PADDING+TOP_PADDING)/SCREEN_HEIGHT
+#define IC_SETTING_Y_MAX (CONTENT_TOP_PADDING+IC_ICON_SIZE+TOP_PADDING)/SCREEN_HEIGHT
+
+#define IC_SETTING_X_MIN_L 1.0-(SETTING_RIGHT_PADDING+IC_ICON_SIZE+RIGHT_PADDING)/SCREEN_WIDTH_L
+#define IC_SETTING_X_MAX_L 1.0-((SETTING_RIGHT_PADDING+RIGHT_PADDING)/SCREEN_WIDTH_L)
+#define IC_SETTING_Y_MIN_L (CONTENT_TOP_PADDING+TOP_PADDING)/SCREEN_HEIGHT_L
+#define IC_SETTING_Y_MAX_L (CONTENT_TOP_PADDING+IC_ICON_SIZE+TOP_PADDING)/SCREEN_HEIGHT_L
+
+/*
+* Content swallow (Positioned to clipper)
+*/
+#define IC_CONTENT_X_MIN (WIN_LEFT_PADDING+IC_ICON_SIZE+4+LEFT_PADDING)/SCREEN_WIDTH
+#define IC_CONTENT_X_MAX (WIN_LEFT_PADDING+IC_ICON_SIZE+CONTENT_SLIDER_WIDTH+4+LEFT_PADDING)/SCREEN_WIDTH
+#define IC_CONTENT_Y_MIN (CONTENT_TOP_PADDING+TOP_PADDING)/SCREEN_HEIGHT
+#define IC_CONTENT_Y_MAX (CONTENT_HEIGHT+CONTENT_TOP_PADDING+TOP_PADDING)/SCREEN_HEIGHT
+
+#define IC_CONTENT_X_MIN_L (WIN_LEFT_PADDING+IC_ICON_SIZE+4+LEFT_PADDING)/SCREEN_WIDTH_L
+#define IC_CONTENT_X_MAX_L (WIN_LEFT_PADDING+IC_ICON_SIZE+CONTENT_SLIDER_WIDTH_L+4+LEFT_PADDING)/SCREEN_WIDTH_L
+#define IC_CONTENT_Y_MIN_L (CONTENT_TOP_PADDING+TOP_PADDING)/SCREEN_HEIGHT_L
+#define IC_CONTENT_Y_MAX_L (CONTENT_HEIGHT+CONTENT_TOP_PADDING+TOP_PADDING)/SCREEN_HEIGHT_L
+
+/**
+ * Divider line
+ */
+#define DIVIDER_X_MIN 386/SCREEN_WIDTH
+#define DIVIDER_X_MAX 388/SCREEN_WIDTH
+#define DIVIDER_Y_MIN (TOP_PADDING+CONTENT_TOP_PADDING)/SCREEN_HEIGHT
+#define DIVIDER_Y_MAX (TOP_PADDING+CONTENT_TOP_PADDING+CONTENT_HEIGHT)/SCREEN_HEIGHT
+
+#define DIVIDER_X_MIN_L IC_CONTENT_X_MAX_L+15/SCREEN_WIDTH_L
+#define DIVIDER_X_MAX_L IC_CONTENT_X_MAX_L+17/SCREEN_WIDTH_L
+#define DIVIDER_Y_MIN_L (TOP_PADDING+CONTENT_TOP_PADDING)/SCREEN_HEIGHT_L
+#define DIVIDER_Y_MAX_L (TOP_PADDING+CONTENT_TOP_PADDING+CONTENT_HEIGHT)/SCREEN_HEIGHT_L
+
+/**
+ * Warnign text
+ */
+#define WARRNING_TEXT_X_MIN (LEFT_PADDING+WIN_LEFT_PADDING)/SCREEN_WIDTH
+#define WARRNING_TEXT_X_MAX 1.0-(RIGHT_PADDING+WIN_RIGHT_PADDING)/SCREEN_HEIGHT
+#define WARRNING_TEXT_Y_MIN (TOP_PADDING+WARRNING_TEXT_TOP_PADDING+CONTENT_TOP_PADDING+CONTENT_HEIGHT)/SCREEN_HEIGHT
+#define WARRNING_TEXT_Y_MAX (TOP_PADDING+WARRNING_TEXT_TOP_PADDING+CONTENT_TOP_PADDING+WARRNING_TEXT_HEIGHT)/SCREEN_HEIGHT
+
+#define WARRNING_TEXT_X_MIN_L (LEFT_PADDING+WIN_LEFT_PADDING)/SCREEN_WIDTH_L
+#define WARRNING_TEXT_X_MAX_L 1.0-(RIGHT_PADDING+WIN_RIGHT_PADDING)/SCREEN_WIDTH_L
+#define WARRNING_TEXT_Y_MIN_L (TOP_PADDING+WARRNING_TEXT_TOP_PADDING+CONTENT_TOP_PADDING+CONTENT_HEIGHT)/SCREEN_HEIGHT_L
+#define WARRNING_TEXT_Y_MAX_L (TOP_PADDING+WARRNING_TEXT_TOP_PADDING+CONTENT_TOP_PADDING+WARRNING_TEXT_HEIGHT)/SCREEN_HEIGHT_L
+
+
#define RESOURCE_IMAGE( FILE_NAME ) \
group { \
name : FILE_NAME; \
image.normal : FILE_NAME; \
aspect : 1 1; \
aspect_preference : BOTH; \
+ color_class: "W0661"; \
+ } \
+ } \
+ } \
+ }
+
+#define RESOURCE_IMAGE_DIM( FILE_NAME ) \
+ group { \
+ name : FILE_NAME; \
+ images.image: FILE_NAME COMP; \
+ parts { \
+ part { name: "image"; \
+ description { \
+ state : "default" 0.0; \
+ image.normal : FILE_NAME; \
+ aspect : 1 1; \
+ aspect_preference : BOTH; \
+ color_class: "W0661D"; \
+ } \
+ } \
+ } \
+ }
+
+#define RESOURCE_IMAGE_PRESS( FILE_NAME ) \
+ group { \
+ name : FILE_NAME; \
+ images.image: FILE_NAME COMP; \
+ parts { \
+ part { name: "image"; \
+ description { \
+ state : "default" 0.0; \
+ image.normal : FILE_NAME; \
+ aspect : 1 1; \
+ aspect_preference : BOTH; \
+ color_class: "B0563L1P"; \
} \
} \
} \
collections {
RESOURCE_IMAGE("00_volume_icon.png");
-RESOURCE_IMAGE("00_volume_icon_Call.png");
-RESOURCE_IMAGE("00_volume_icon_Mute.png");
-RESOURCE_IMAGE("00_volume_icon_Vibrat.png");
+RESOURCE_IMAGE("00_volume_icon_call.png");
+RESOURCE_IMAGE("00_volume_icon_mute.png");
+RESOURCE_IMAGE("00_volume_icon_vibrat.png");
RESOURCE_IMAGE("00_volume_icon_headphone.png");
RESOURCE_IMAGE("00_volume_icon_media.png");
+RESOURCE_IMAGE("00_volume_icon_notification.png");
+RESOURCE_IMAGE("00_volume_icon_notification_vibrate.png");
+RESOURCE_IMAGE("00_volume_icon_notification_mute.png");
+RESOURCE_IMAGE_DIM("00_volume_icon_settings_disabled.png");
+RESOURCE_IMAGE("00_volume_icon_settings.png");
+RESOURCE_IMAGE_PRESS("00_volume_icon_settings_pressed.png");
+ group {
+ name : "volume_layout";
+ images {
+ image: "00_popup_bubble_bg.#.png" COMP;
+ }
+ styles {
+ style {
+ name: "textblock_style";
+ base: "font=Tizen font_size=24 align=left color=#000000 wrap=mixed";
+ }
+ }
+ parts{
+ part {
+ name : "clipper";
+ type : RECT;
-group { name: "popup_volumebar";
- images {
- image: "00_divider_line.png" COMP;
- }
- parts {
- part { name:"bg";
- type: RECT;
- scale : 1;
- description { state: "default" 0.0;
- min: 668 134;
- align: 0.5 0.5;
- fixed: 1 1;
- visible: 0;
- rel1 { relative: 0.5 0.5; offset: 0 -10; }
- rel2 { relative: 0.5 0.5; offset: 0 -10; }
- }
- }
- part { name: "pad_l";
- type: RECT;
- scale: 1;
- description { state: "default" 0.0;
- min : 0 20;
- max : 0 20;
- fixed: 1 1;
- rel1.to: "bg";
- rel2.to: "bg";
- visible: 0;
- align: 0.0 0.0;
- }
- }
- part { name: "pad_r";
- type: RECT;
- scale: 1;
- description { state: "default" 0.0;
- min : 0 20;
- max : 0 20;
- fixed: 1 1;
- rel1.to: "bg";
- rel2.to: "bg";
- visible: 0;
- align: 1.0 1.0;
- }
- }
- part { name: "elm.swallow.content";
- type: SWALLOW;
- scale: 1;
- description { state: "default" 0.0;
- min : 568 134;
- fixed: 1 1;
- rel1 {
- relative: 1.0 0.5;
- to_x: "pad_l";
- to_y: "bg";
- }
- rel2 {
- relative: 0.0 0.5;
- to_x: "pad_after_content";
- to_y: "bg";
- }
- align: 0.5 0.5;
- }
- }
- part { name: "pad_after_content";
- type: RECT;
- scale: 1;
- description { state: "default" 0.0;
- min: 16 0;
- fixed: 1 0;
- rel1 {
- relative: 0.0 0.5;
- to_x: "divider";
- to_y: "bg";
- }
- rel2 {
- relative: 0.0 0.5;
- to_x: "divider";
- to_y: "bg";
- }
- align: 1.0 0.5;
- visible: 0;
- }
- }
- part { name: "divider";
- scale: 1;
- description { state: "default" 0.0;
- min: 4 18;
- max: 4 99999;
- fixed: 1 1;
- rel1 {
- relative: 0.0 1.0;
- to_x: "pad_after_divider";
- to_y: "pad_l";
- }
- rel2 {
- relative: 0.0 0.0;
- to_x: "pad_after_divider";
- to_y: "pad_r";
- }
- image.normal: "00_divider_line.png";
- align: 1.0 0.5;
- }
- }
- part { name: "pad_after_divider";
- type: RECT;
- scale: 1;
- description { state: "default" 0.0;
- min: 16 0;
- max: 16 0;
- fixed: 1 1;
- visible: 0;
- rel1 {
- relative: 0.0 0.5;
- to_x: "elm.swallow.icon";
- to_y: "bg";
- }
- rel2 {
- relative: 0.0 0.5;
- to_x: "elm.swallow.icon";
- to_y: "bg";
- }
- align: 1.0 0.5;
- }
- }
- part { name: "elm.swallow.icon";
- type: SWALLOW;
- scale: 1;
- description { state: "default" 0.0;
- min: 64 64;
- max: 64 64;
- fixed: 1 1;
- rel1 {
- relative: 0.0 0.5;
- to_x: "pad_r";
- to_y: "bg";
- }
- rel2 {
- relative: 0.0 0.5;
- to_x: "pad_r";
- to_y: "bg";
- }
- align: 1.0 0.5;
- }
- }
- }
-}
+ description {
+ state : "default" 0.0;
+ }
+ description{
+ state : "transit" 0.0;
+ color: 0 0 0 0;
+ }
+ }
- group { name : "block_events";
- parts{
- part { name : "blockevent";
+ part {
+ name : "bg";
type : RECT;
+ clip_to: "clipper";
+ scale: 1;
description {
+ state : "default" 0.0;
color : 0 0 0 0;
+ rel1 {relative: WIN_X_MIN WIN_Y_MIN; to: "clipper";}
+ rel2 {relative: WIN_X_MAX WIN_Y_MAX; to: "clipper";}
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ rel1 {relative: WIN_X_MIN_L WIN_Y_MIN_L; to: "clipper";}
+ rel2 {relative: WIN_X_MAX_L WIN_Y_MAX_L; to: "clipper";}
+ }
+ description {
+ state: "warning_displayed" 0.0;
+ inherit: "default" 0.0;
+ color : 0 0 0 0;
+ rel2 {relative: WIN_X_MAX WARRING_Y_MAX; to: "clipper";}
+ }
+ description {
+ state: "warning_displayed_l" 0.0;
+ inherit: "default" 0.0;
+ color : 0 0 0 0;
+ rel1 {relative: WIN_X_MIN_L WIN_Y_MIN_L; to: "clipper";}
+ rel2 {relative: WIN_X_MAX_L WARRING_Y_MAX_L; to: "clipper";}
}
}
- }
- programs{
- program{
- name : "clicked";
- source : "blockevent";
- signal : "mouse,clicked,1";
- action : SIGNAL_EMIT "clicked" "*";
- }
- }
- }
- /* END group "block_events" */
- group { name : "volumeLayout";
- images {
- image: "00_popup_bg.png" COMP;
- }
- parts{
- part { name : "base";
+ part {
+ name : "popup_bg";
type : IMAGE;
+ clip_to: "clipper";
+ mouse_events : 0;
scale : 1;
- description { state: "default" 0.0;
- image {
- normal: "00_popup_bg.png";
- border: 18 18 32 52;
- border_scale: 1;
- }
- min: 720 182;
- max: 720 1120;
- align: 0.5 0.5;
+ description {
+ state : "default" 0.0;
+ image.normal: "00_popup_bubble_bg.#.png";
+ rel1.to : "bg";
+ rel2.to : "bg";
+ }
+ description {
+ state : "portrait" 0.0;
+ image.normal: "00_popup_bubble_bg.#.png";
+ rel1.to : "bg";
+ rel2.to : "bg";
+ }
+ description {
+ state : "landscape" 0.0;
+ visible : 1;
+ image.normal: "00_popup_bubble_bg.#.png";
+ rel1.to : "bg";
+ rel2.to : "bg";
}
}
- part { name: "elm.swallow.content";
- type: SWALLOW;
+ part {
+ name : "ic_sound";
+ type : SWALLOW;
+ clip_to: "clipper";
+ mouse_events : 0;
scale : 1;
- description { state: "default" 0.0;
- min: 720 0;
- fixed: 1 0;
- rel1 {
- relative: 0.5 0.0;
- to: "base";
- }
- rel2 {
- relative: 0.5 1.0;
- to: "base";
- }
+ description {
+ state : "default" 0.0;
+ visible : 1;
+ fixed: 1 1;
+ rel1 { relative : IC_SOUND_X_MIN IC_SOUND_Y_MIN; to : "clipper";}
+ rel2 { relative : IC_SOUND_X_MAX IC_SOUND_Y_MAX; to : "clipper";}
+ }
+ description {
+ state: "portrait";
+ inherit: "default" 0.0;
}
+ description {
+ state: "landscape";
+ inherit: "default" 0.0;
+ rel1 { relative : IC_SOUND_X_MIN_L IC_SOUND_Y_MIN_L; to : "clipper";}
+ rel2 { relative : IC_SOUND_X_MAX_L IC_SOUND_Y_MAX_L; to : "clipper";}
+ }
+
}
- }
- }
- /* END group "volumeLayout" */
- group { name : "volumeLayoutContent";
- parts{
- part { name : "pad_t";
- type : RECT;
+ part {
+ name : "ic_setting";
+ type : SWALLOW;
+ clip_to: "clipper";
+ mouse_events : 1;
scale : 1;
+ description {
+ state : "default" 0.0;
+ visible : 1;
+ fixed : 1 1;
+ rel1 { relative : IC_SETTING_X_MIN IC_SETTING_Y_MIN; to : "clipper";}
+ rel2 { relative : IC_SETTING_X_MAX IC_SETTING_Y_MAX; to : "clipper";}
+ }
+ description {
+ state: "portrait";
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "landscape";
+ inherit: "default" 0.0;
+ rel1 { relative : IC_SETTING_X_MIN_L IC_SETTING_Y_MIN_L; to : "clipper";}
+ rel2 { relative : IC_SETTING_X_MAX_L IC_SETTING_Y_MAX_L; to : "clipper";}
+ }
+ }
+ part {
+ name : "divider";
+ type : RECT;
+ clip_to: "clipper";
mouse_events : 0;
- description { state: "default" 0.0;
- align: 0.5 0.0;
- min: 0 49;
- fixed: 0 1;
- visible: 0;
- rel1 {
- relative: 1.0 0.0;
- to_x: "pad_l";
- }
- rel2 {
- relative: 0.0 0.0;
- to_x: "pad_r";
- }
+ scale : 1;
+ description {
+ state : "default" 0.0;
+ color: 200 200 200 100;
+ visible : 1;
+ rel1 { relative : DIVIDER_X_MIN DIVIDER_Y_MIN; to : "clipper";}
+ rel2 { relative : DIVIDER_X_MAX DIVIDER_Y_MAX; to : "clipper";}
}
- } /* "pad_t" end */
-
- part { name : "pad_l";
- type: RECT;
- scale: 1;
- description { state: "default" 0.0;
- min : 26 0;
- fixed: 1 0;
- rel2.relative: 0.0 1.0;
- visible: 0;
- align: 0.0 0.0;
+ description {
+ state: "portrait";
+ inherit: "default" 0.0;
}
- } /* "pad_l" end */
-
- part { name: "pad_r";
- type: RECT;
- scale: 1;
- description { state: "default" 0.0;
- min : 26 0;
- fixed: 1 0;
- rel1.relative: 1.0 0.0;
- visible: 0;
- align: 1.0 0.0;
+ description {
+ state: "landscape";
+ inherit: "default" 0.0;
+ rel1 { relative : DIVIDER_X_MIN_L DIVIDER_Y_MIN_L; to : "clipper";}
+ rel2 { relative : DIVIDER_X_MAX_L DIVIDER_Y_MAX_L; to : "clipper";}
}
- } /* "pad_r" end */
-
- part{ name:"elm.swallow.content";
- type: SWALLOW;
+ }
+ part {
+ name : "sw.slider";
+ type : SWALLOW;
+ clip_to: "clipper";
scale : 1;
- description { state: "default" 0.0;
- min: 668 0;
- fixed: 1 0;
- rel1 {
- relative: 0.5 1.0;
- to: "pad_t";
- }
- rel2 {
- relative: 0.5 0.0;
- to: "pad_b";
- }
+ description {
+ state : "default" 0.0;
+ fixed: 1 1;
+ rel1 { relative : IC_CONTENT_X_MIN IC_CONTENT_Y_MIN; to : "clipper";}
+ rel2 { relative : IC_CONTENT_X_MAX IC_CONTENT_Y_MAX; to : "clipper";}
+ visible : 1;
}
- } /* "elm.swallow.content" end */
+ description {
+ state: "portrait";
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "landscape";
+ inherit: "default" 0.0;
+ rel1 { relative : IC_CONTENT_X_MIN_L IC_CONTENT_Y_MIN_L; to : "clipper";}
+ rel2 { relative : IC_CONTENT_X_MAX_L IC_CONTENT_Y_MAX_L; to : "clipper";}
+ }
+ }
- part { name: "pad_b";
- type: RECT;
- scale : 1;
- mouse_events: 0;
- description { state: "default" 0.0;
- align: 0.5 1.0;
- min: 0 69;
- fixed: 0 1;
+ part {
+ name: "warning_rect";
+ type: TEXTBLOCK;
+ clip_to: "clipper";
+ scale: 1;
+ description {
+ state: "default" 0.0;
visible: 0;
- rel1 {
- relative: 0.0 1.0;
- to_x: "pad_l";
+ rel1 { relative: WARRNING_TEXT_X_MIN WARRNING_TEXT_Y_MIN; to: "clipper";}
+ rel2 { relative: WARRNING_TEXT_X_MAX WARRNING_TEXT_Y_MAX; to: "clipper";}
+ text {
+ style: "textblock_style";
}
- rel2.to_x: "pad_r";
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ description {
+ state: "warning_displayed" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description {
+ state: "warning_displayed_l" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ rel1 { relative: WARRNING_TEXT_X_MIN_L WARRNING_TEXT_Y_MIN_L; to: "clipper";}
+ rel2 { relative: WARRNING_TEXT_X_MAX_L WARRNING_TEXT_Y_MAX_L; to: "clipper";}
}
}
}
+ programs {
+ program {
+ name : "unset,emergency-mode";
+ signal : "unset,emergency-mode";
+ source : "bg";
+ action : STATE_SET "default" 0.0;
+ target : "ic_setting";
+ target : "divider";
+ target : "sw.slider";
+ }
+ program {
+ name : "set,emergency-mode";
+ signal : "set,emergency-mode";
+ source : "bg";
+ action : STATE_SET "hidden" 0.0;
+ target : "ic_setting";
+ target : "divider";
+ target : "sw.slider";
+ }
+ program {
+ name : "show,landscape";
+ signal : "show,landscape";
+ source : "bg";
+ action : STATE_SET "landscape" 0.0;
+ target : "popup_bg";
+ target : "bg";
+ target : "ic_sound";
+ target : "ic_setting";
+ target : "sw.slider";
+ target : "divider";
+ }
+ program {
+ name : "show,portrait";
+ signal : "show,portrait";
+ source : "bg";
+ action : STATE_SET "portrait" 0.0;
+ target : "popup_bg";
+ target : "bg";
+ target : "ic_sound";
+ target : "ic_setting";
+ target : "sw.slider";
+ target : "divider";
+ }
+ program{
+ name : "hide_effect";
+ signal : "hide_effect";
+ source : "clipper";
+ action : STATE_SET "transit" 0.0;
+ target : "clipper";
+ transition : ACCEL 0.3;
+ after: "hide,popup";
+ }
+ program{
+ name : "show_effect";
+ signal : "show_effect";
+ source : "clipper";
+ action : STATE_SET "portrait" 0.0;
+ target : "clipper";
+ }
+ program{
+ name: "hide,popup";
+ signal: "hide,popup";
+ source: "popup_bg";
+ action: SIGNAL_EMIT "hide,popup" "event";
+ }
+ program{
+ name: "show_warning";
+ signal: "show_warning";
+ source: "clipper";
+ action: STATE_SET "warning_displayed" 0.0;
+ target: "warning_rect";
+ target: "bg";
+ }
+ program{
+ name: "show_warning_l";
+ signal: "show_warning_l";
+ source: "clipper";
+ action: STATE_SET "warning_displayed_l" 0.0;
+ target: "warning_rect";
+ target: "bg";
+ }
+ program{
+ name: "hide_warning";
+ signal: "hide_warning";
+ source: "clipper";
+ action: STATE_SET "default" 0.0;
+ target: "warning_rect";
+ target: "bg";
+ }
+ program{
+ name: "hide_warning_l";
+ signal: "hide_warning_l";
+ source: "clipper";
+ action: STATE_SET "landscape" 0.0;
+ target: "warning_rect";
+ target: "bg";
+ }
+ program{
+ name: "slider_touching_on";
+ signal: "slider_touching_on";
+ source: "clipper";
+ action: STATE_SET "slider_touching" 0.0;
+ target: "bg";
+ }
+ program{
+ name: "slider_touching_off";
+ signal: "slider_touching_off";
+ source: "clipper";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ }
+ }
}
- /* END group "volumeLayoutContent" */
-
}
+++ /dev/null
-volume (0.2.6-1) unstable; urgency=low
-
- * update version to 0.2.6-1
-
- -- minho07.kim <minho07.kim@samsung.com> Mon, 21 Jan 2013 13:35:38 +0900
-
-volume (0.2.5-1) unstable; urgency=low
-
- * Fix some issues
- * Git : apps/home/volume-app
-
- -- minho07.kim <minho07.kim@samsung.com> Mon, 07 Jan 2013 15:42:55 +0900
-
-volume (0.2.4-1) unstable; urgency=low
-
- * Remove unused files
- * Git: magnolia/apps/home/volume-app
- * Tag: volume_0.2.4-1
-
- -- Junghyun Kim <jh1114.kim@samsung.com> Fri, 17 Aug 2012 16:51:10 +0900
-
-volume (0.2.3-1) unstable; urgency=low
-
- * Fix an error not to read PO files
- * Git: magnolia/apps/home/volume-app
- * Tag: volume_0.2.3-1
-
- -- Hong Kwon <hhh.kwon@samsung.com> Thu, 16 Aug 2012 19:02:09 +0900
-
-volume (0.2.2-1) unstable; urgency=low
-
- * Apply open source code
- * Git: apps/home/volume-app
- * Tag: volume_0.2.2-1
-
- -- Hong Kwon <hhh.kwon@samsung.com> Mon, 13 Aug 2012 19:36:09 +0900
-
+++ /dev/null
-Source: volume
-Section: devel
-Priority: extra
-Maintainer: Junghyun Kim <jh1114.kim@samsung.com>, hhh.kwon<hhh.kwon@samsung.com>
-Build-Depends: debhelper (>= 5), libappcore-efl-dev, libelm-dev, libmm-sound-dev, dlog-dev, libsvi-dev, libvconf-dev, libslp-utilx-dev, syspopup-dev, libbundle-dev, libglib2.0-dev, libui-gadget-dev
-Standards-Version: 3.7.2
-
-Package: org.tizen.volume
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: volume
-
-Package: org-tizen.volume-dbg
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: Volume Debug Symbols
- Debug symbols for volume
+++ /dev/null
-@PREFIX@/*
-/opt/share/applications/org.tizen.desktop
-/opt/share/icons/default/small/org.tizen.volume.png
+++ /dev/null
-#!/usr/bin/make -f
-# -*- makefile -*-
-# Sample debian/rules that uses debhelper.
-# This file was originally written by Joey Hess and Craig Small.
-# As a special exception, when this file is copied by dh-make into a
-# dh-make output file, you may use that output file without restriction.
-# This special exception was added by Craig Small in version 0.37 of dh-make.
-
-# Uncomment this to turn on verbose mode.
-#export DH_VERBOSE=1
-
-CFLAGS ?= -Wall -g
-LDFLAGS ?=
-PREFIX ?= /opt/apps/org.tizen.volume
-RESDIR ?= /opt/apps/org.tizen.volume/res
-DATADIR ?= /opt/apps/org.tizen.volume/data
-
-#ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
-# CFLAGS += -O0
-#else
-# CFLAGS += -O2
-#endif
-ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
- BUILD_TYPE=Debug
-else
- BUILD_TYPE=Release
-endif
-
-LDFLAGS += -Wl,--rpath=$(PREFIX)/lib -Wl,--as-needed
-
-CMAKE_BUILD_DIR ?= $(CURDIR)/cmake_build_tmp
-
-configure: configure-stamp
-configure-stamp:
- dh_testdir
- # Add here commands to configure the package.
- mkdir -p $(CMAKE_BUILD_DIR) && cd $(CMAKE_BUILD_DIR) && \
- CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" cmake .. -DCMAKE_INSTALL_PREFIX="$(PREFIX)" -DCMAKE_BUILD_TYPE="$(BUILD_TYPE)"
-
- touch configure-stamp
-
-build: build-stamp
-
-build-stamp: configure-stamp
- dh_testdir
-
- # Add here commands to compile the package.
- cd $(CMAKE_BUILD_DIR) && $(MAKE)
-
- for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
- cat $$f > $${f%.in}; \
- sed -i -e "s#@PREFIX@#$(PREFIX)#g" $${f%.in}; \
- sed -i -e "s#@RESDIR@#$(RESDIR)#g" $${f%.in}; \
- sed -i -e "s#@DATADIR@#$(DATADIR)#g" $${f%.in}; \
- done
-
- touch $@
-
-clean:
- dh_testdir
- dh_testroot
- rm -f build-stamp configure-stamp
-
- # Add here commands to clean up after the build process.
- rm -rf $(CMAKE_BUILD_DIR)
-
- for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
- rm -f $${f%.in}; \
- done
-
- dh_clean
-
-install: build
- dh_testdir
- dh_testroot
- dh_clean -k
-# dh_installdirs
-
- # Add here commands to install the package into debian/wavplayer.
- cd $(CMAKE_BUILD_DIR) && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
-
-
-# Build architecture-independent files here.
-binary-indep: build install
-# We have nothing to do by default.
-
-# Build architecture-dependent files here.
-binary-arch: build install
- dh_testdir
- dh_testroot
-# dh_installchangelogs
-# dh_installdocs
-# dh_installexamples
- dh_install --sourcedir=debian/tmp
-# dh_installmenu
-# dh_installdebconf
-# dh_installlogrotate
-# dh_installemacsen
-# dh_installpam
-# dh_installmime
-# dh_python
-# dh_installinit
-# dh_installcron
-# dh_installinfo
- dh_installman
- dh_link
- dh_strip --dbg-package=org.tizen.volume-dbg
- dh_compress
- dh_fixperms
-# dh_perl
- dh_makeshlibs
- dh_installdeb
- dh_shlibdeps
- dh_gencontrol
- dh_md5sums
- dh_builddeb
-
-binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary install configure
--- /dev/null
+/*
+ * Copyright (c) 2009-2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 __VOLUME_UTIL_EFL_H__
+#define __VOLUME_UTIL_EFL_H__
+
+#include <Elementary.h>
+
+Ecore_X_Window _add_input_window(void);
+Evas_Object *add_volume_window(const char *name);
+Evas_Object *add_slider(Evas_Object *parent, int min, int max, int val);
+Evas_Object *add_layout(Evas_Object *parent, const char *file, const char *group);
+Evas_Object *add_button(Evas_Object *parent, const char *style, const char *text);
+Evas_Object *add_popup(Evas_Object *parent, const char *style);
+Evas_Object *add_label(Evas_Object *parent, const char *text);
+#endif
+/* __VOLUME_UTIL_EFL_H__ */
/*
- * org.tizen.volume
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2014 Samsung Electronics Co., Ltd All Rights Reserved
*
- * Licensed under the Flora License, Version 1.1 (the License);
+ * Licensed under the Apache License, Version 2.0 (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/
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
+ * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
#undef LOG_TAG
#define LOG_TAG "VOLUME"
-#define _E(fmt, arg...) LOGE("[%s,%d] "fmt,__FUNCTION__,__LINE__,##arg)
-#define _D(fmt, arg...) LOGD("[%s,%d] "fmt,__FUNCTION__,__LINE__,##arg)
+#define _E(fmt, arg...) LOGE("[%s:%d] "fmt,__FUNCTION__,__LINE__,##arg)
+#define _D(fmt, arg...) LOGD("[%s:%d] "fmt,__FUNCTION__,__LINE__,##arg)
+#define _SECURE_E(fmt, arg...) SECURE_LOGE("[%s:%d] "fmt,__FUNCTION__,__LINE__,##arg)
+#define _SECURE_D(fmt, arg...) SECURE_LOGD("[%s:%d] "fmt,__FUNCTION__,__LINE__,##arg)
+
+#define retvm_if_timer(timer, expr, val, fmt, arg...) do { \
+ if(expr) { \
+ _E(fmt, ##arg); \
+ _E("(%s) -> %s() return", #expr, __FUNCTION__); \
+ timer = NULL; \
+ return (val); \
+ } \
+} while (0)
#define retvm_if(expr, val, fmt, arg...) do { \
if(expr) { \
--- /dev/null
+/*
+ * Copyright (c) 2009-2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 __VOLUME_BT_H__
+#define __VOLUME_BT_H__
+
+extern int bt_get_bt_volume(void);
+extern void bt_init_sco(void);
+extern void bt_deinit_sco(void);
+
+#endif
--- /dev/null
+/*
+ * Copyright (c) 2009-2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 __VOLUME_CONTROL_H__
+#define __VOLUME_CONTROL_H__
+
+enum {
+ IDLELOCK_ERROR = -1,
+ IDLELOCK_OFF = 0,
+ IDLELOCK_ON = 1,
+ IDLELOCK_MAX,
+};
+
+/* _check_status() return value */
+enum{
+ LOCK_AND_NOT_MEDIA = -0x1,
+ UNLOCK_STATUS,
+ LOCK_AND_MEDIA,
+};
+
+extern void volume_control_check_syspopup();
+extern int volume_register_shape_timer();
+extern void volume_control_check_once(void);
+extern int volume_control_get_viewport_height();
+extern int volume_control_get_viewport_width();
+extern void volume_control_show_hide_worning();
+extern Eina_Bool volume_control_viewport_is_warning_visible();
+
+extern bundle *volume_control_reset_get_bundle(void);
+extern Eina_Bool volume_control_get_is_deleting(void);
+extern Eina_Bool volume_control_get_is_launching(void);
+extern int volume_control_get_current_angle(void);
+extern sound_type_e volume_control_get_sound_type_at_show(void);
+
+extern volume_error_e volume_control_cache_flush(void);
+
+extern volume_error_e volume_control_app_launch_with_bundle(const char *op_type, const char *operation, const char *pkgname);
+extern volume_error_e volume_control_mode_syspopup_launch(void);
+extern int volume_control_get_vconf_idlelock(void);
+
+extern int volume_control_check_status(int *lock, sound_type_e *sound_type);
+
+extern Eina_Bool volume_control_show_view(int status, sound_type_e sound_type, int sound, bool bt_opened);
+extern int volume_control_hide_view(void);
+extern volume_error_e volume_control_close_bt_display();
+
+extern void volume_control_register_vconfkey(void);
+extern void volume_control_unregister_vconfkey(void);
+
+extern volume_error_e volume_control_pause(void);
+extern volume_error_e volume_control_reset(bundle *b);
+extern volume_error_e volume_control_initialize(void);
+extern void volume_control_deinitialize(void);
+
+#endif /* __VOLUME_CONTROL_H__ */
--- /dev/null
+/*
+ * Copyright (c) 2009-2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 __VOLUME_KEY_EVENT_H__
+#define __VOLUME_KEY_EVENT_H__
+
+#define KEY_VOLUMEUP "XF86AudioRaiseVolume"
+#define KEY_VOLUMEDOWN "XF86AudioLowerVolume"
+#define KEY_MUTE "XF86AudioMute"
+#define KEY_BACK "XF86Back"
+#define KEY_CANCEL "Cancel"
+
+Ecore_X_Window volume_key_event_input_window_get(void);
+Ecore_Event_Handler *volume_key_event_handler_volume_up_get(void);
+Ecore_Event_Handler *volume_key_event_handler_volume_down_get(void);
+Ecore_Event_Handler *volume_key_event_handler_qp_state_check(void);
+Eina_Bool volume_key_event_is_pressing_get(void);
+int volume_key_event_count_grabed_get(void);
+void volume_key_event_count_grabed_set(int val);
+
+sound_type_e volume_key_event_sound_type_at_key_pressed_get(void);
+
+int volume_key_event_key_grab(Ecore_X_Window _xwin, int grab_mode);
+volume_error_e volume_key_event_key_ungrab(void);
+
+void volume_key_event_handler_add(void);
+void volume_key_event_handler_del(void);
+volume_error_e volume_key_event_input_window_create(void);
+
+#endif /* __VOLUME_KEY_EVENT_H__ */
--- /dev/null
+/*
+ * Copyright (c) 2009-2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 __VOLUME_H__
+#define __VOLUME_H__
+
+#include <Elementary.h>
+#include <sound_manager.h>
+//#include <syspopup.h>
+#include <appcore-efl.h>
+//#include <Ecore_X.h>
+#include <notification.h>
+#include <syspopup_caller.h>
+
+#if !defined(PACKAGE)
+# define PACKAGE "volume"
+#endif
+
+#if !defined(RESDIR)
+# define RESDIR "/usr/apps/org.tizen.volume/res"
+#endif
+
+#if !defined(LOCALEDIR)
+# define LOCALEDIR RESDIR"/locale"
+#endif
+
+#if !defined(EDJDIR)
+# define EDJDIR RESDIR"/edje"
+#endif
+
+#if !defined(PKGNAME)
+# define PKGNAME "org.tizen.volume"
+#endif
+
+#define EDJ_APP EDJDIR"/volume_app.edj"
+
+#define IMG_VOLUME_ICON "00_volume_icon.png"
+#define IMG_VOLUME_ICON_CALL "00_volume_icon_call.png"
+#define IMG_VOLUME_ICON_MUTE "00_volume_icon_mute.png"
+#define IMG_VOLUME_ICON_VIB "00_volume_icon_vibrat.png"
+#define IMG_VOLUME_ICON_NOTI "00_volume_icon_notification.png"
+#define IMG_VOLUME_ICON_NOTI_VIB "00_volume_icon_notification_vibrate.png"
+#define IMG_VOLUME_ICON_NOTI_MUTE "00_volume_icon_notification_mute.png"
+#define IMG_VOLUME_ICON_HEADPHONE "00_volume_icon_headphone.png"
+#define IMG_VOLUME_ICON_MEDIA "00_volume_icon_media.png"
+#define IMG_VOLUME_ICON_SETTINGS "00_volume_icon_settings.png"
+#define IMG_VOLUME_ICON_SETTINGS_PRESSED "00_volume_icon_settings_pressed.png"
+#define IMG_VOLUME_ICON_SETTINGS_DISABLED "00_volume_icon_settings_disabled.png"
+
+#define _EDJ(x) elm_layout_edje_get(x)
+#define _X(x) (x) / elm_app_base_scale_get() * elm_config_scale_get()
+
+#define S_(str) dgettext("sys_string", str)
+#define T_(str) dgettext(PACKAGE, str)
+#undef _
+#define _(str) gettext(str)
+
+#ifndef VCONFKEY_SETAPPL_ACCESSIBILITY_TURN_OFF_ALL_SOUNDS
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_TURN_OFF_ALL_SOUNDS VCONFKEY_SETAPPL_PREFIX"/accessibility/turn_off_all_sounds"
+#endif
+
+/* Fake-BG : bundle */
+#define SHOWLOCK "show_lock"
+#define ISTRUE "TRUE"
+
+/* For voice control */
+#define SHOWVOLUME "show_volume"
+
+#define LOCKSCREEN_PKG "org.tizen.lockscreen"
+
+#define SCREEN_W_HD 720
+#define SCREEN_H_HD 1280
+
+#define SCREEN_W_WVGA 480
+#define SCREEN_H_WVGA 800
+
+#define SCREEN_W_FHD 1080
+#define SCREEN_H_FHD 1920
+
+#define WIN_WIDTH 456
+#define WIN_HEIGHT_WITH_WARNING 222
+#define WIN_HEIGHT 102
+
+#define WIN_LANDSCAPE_X 79
+#define WIN_LANDSCAPE_INVERTED_X volume_control_get_viewport_width()-WIN_HEIGHT_WITH_WARNING-WIN_LANDSCAPE_X
+#define WIN_LANDSCAPE_Y (volume_control_get_viewport_height()-WIN_WIDTH)/2
+#define WIN_PORTRAIT_X 12
+#define WIN_PORTRAIT_Y 113
+#define WIN_SLIDER_TOUCHING_OFFSET 55
+
+#define SOUND_TYPE_SYSTEM 0
+#define SOUND_TYPE_NOTIFICATION 1
+#define SOUND_TYPE_ALARM 2
+#define SOUND_TYPE_RINGTONE 3
+#define SOUND_TYPE_MEDIA 4
+#define SOUND_TYPE_CALL 5
+
+#define VOLUME_MAX_SAFETY_VOLUME_LEVEL 10
+
+typedef enum {
+ TYPE_VCONF_SOUND_STATUS = 0,
+ TYPE_VCONF_VIBRATION_STATUS
+} volume_vconf_type_e;
+
+/* Volume : return values */
+typedef enum {
+ VOLUME_ERROR_OK = 0,
+ VOLUME_ERROR_FAIL = -1,
+ VOLUME_ERROR_INVALID_PARAMETER = -2,
+ VOLUME_ERROR_NO_DATA = -3
+} volume_error_e;
+
+#endif /* __VOLUME_H__ */
+
--- /dev/null
+/*
+ * Copyright (c) 2009-2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 __VOLUME_SOUND_H__
+#define __VOLUME_SOUND_H__
+
+int volume_sound_sound_status_get(void);
+int volume_sound_vibration_status_get(void);
+int volume_sound_step_get(void);
+Eina_Bool volume_sound_is_vibration_get(void);
+void volume_sound_is_vibration_set(Eina_Bool val);
+
+void volume_sound_mm_sound_init(void);
+//int _get_volume_type_max(void);
+int volume_sound_slider_value_set(void *data, int val);
+volume_error_e volume_sound_level_get(sound_type_e type);
+//sound_route_e volume_sound_sound_manager_device_get(void);
+int volume_sound_sound_manager_step_get(sound_type_e type);
+int volume_sound_sound_manager_volume_get(sound_type_e type);
+sound_type_e volume_sound_sound_manager_type_get(void);
+void volume_sound_feedback_play(int feedback_type, int pattern);
+void volume_sound_vib_play(void);
+void volume_sound_play(void);
+int volume_sound_icon_set(void *data, int val);
+int volume_sound_level_set(sound_type_e type, int val);
+void volume_sound_setting_sound_play(void);
+void volume_sound_change_set(int val);
+
+void volume_sound_vconf_status_set(volume_vconf_type_e type, int val);
+int volume_sound_vconf_status_get(volume_vconf_type_e type);
+void volume_sound_vconfkey_register(void);
+void volume_sound_vconfkey_unregister(void);
+
+#endif
+/* __VOLUME_SOUND_H__ */
--- /dev/null
+/*
+ * Copyright (c) 2009-2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 __VOLUME_TIMER_H__
+#define __VOLUME_TIMER_H__
+
+#define DEL_TIMER(x) \
+ if (x) {\
+ _D("DELTIMER x : %p\n", x);\
+ ecore_timer_del(x);\
+ x = NULL;\
+ }
+#define ADD_TIMER(x, time, _timer_cb, data) \
+ if(x != NULL) DEL_TIMER(x); \
+ x = ecore_timer_add(time, _timer_cb, data);\
+ _D("ADDTIMER x : %p\n", x);\
+
+typedef enum {
+ TYPE_TIMER_POPUP = 0,
+ TYPE_TIMER_SLIDER,
+ TYPE_TIMER_SD,
+ TYPE_TIMER_SU,
+ TYPE_TIMER_BT
+} volume_timer_type;
+
+extern Ecore_Timer *volume_timer_popup_timer_get(void);
+extern Ecore_Timer *volume_timer_slider_timer_get(void);
+extern Ecore_Timer *volume_timer_su_timer_get(void);
+extern Ecore_Timer *volume_timer_sd_timer_get(void);
+
+extern Eina_Bool volume_timer_popup_cb(void *data);
+extern Eina_Bool volume_timer_slider_timer_cb(void *data);
+
+extern void volume_timer_add(double time, volume_timer_type type);
+extern void volume_timer_del(volume_timer_type);
+
+#endif /* __VOLUME_TIMER_H__ */
--- /dev/null
+/*
+ * Copyright (c) 2009-2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 __VOLUME_VIEW_H__
+#define __VOLUME_VIEW_H__
+
+Evas_Object *volume_view_win_get(void);
+Evas_Object *volume_view_evas_get(void);
+Evas_Object *volume_view_outer_layout_get(void);
+Evas_Object *volume_view_icon_volume_get(void);
+Evas_Object *volume_view_icon_setting_get(void);
+Evas_Object *volume_view_slider_get(void);
+Eina_Bool volume_view_is_registered_callback_get(void);
+Eina_Bool volume_view_is_slider_touching_get(void);
+void volume_view_is_registered_callback_set(Eina_Bool val);
+int volume_mute_toggle_set(void);
+
+volume_error_e volume_view_slider_value_set(int val);
+void volume_view_volume_icon_set(sound_type_e sound_type, int sound, int vibration, bool bt_opened);
+void volume_view_setting_icon_set(const char *file);
+void volume_view_setting_icon_callback_del(void);
+
+volume_error_e volume_view_window_show(void);
+volume_error_e volume_view_window_hide(void);
+
+volume_error_e volume_view_layout_create(Evas_Object *win);
+Evas_Object *volume_view_window_create(void);
+
+Evas_Object* show_lockscreen_splash(const char *bg_path);
+volume_error_e hide_lockscreen_splash(void);
+
+#endif /* __VOLUME_VIEW_H__ */
--- /dev/null
+/*
+ * Copyright (c) 2009-2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 __UTIL_EVENT_H__
+#define __UTIL_EVENT_H__
+
+void volume_x_input_event_shape(Evas_Object *win, Eina_Bool is_warning_visible);
+volume_error_e volume_x_input_event_register(void);
+volume_error_e volume_x_input_event_unregister(void);
+
+#endif
--- /dev/null
+User::App::org.tizen.volume User r----- ------
+org.tizen.volume system::use_internet r----- ------
+org.tizen.volume net-config r----- ------
+org.tizen.volume xorg rw---- ------
+org.tizen.volume isf rwx--- ------
+org.tizen.volume sound_server rw---- ------
+org.tizen.volume syspopup::db rw---- ------
+org.tizen.volume pulseaudio rwxat- ------
+org.tizen.volume ail::db rw---- ------
+org.tizen.volume connman r----- ------
+org.tizen.volume system rwx--- ------
+org.tizen.volume immvibed rw---- ------
+org.tizen.volume svi-data r-x--- ------
+org.tizen.volume org.tizen.setting rwx--- ------
+org.tizen.volume org.tizen.message rw---- ------
+org.tizen.volume org.tizen.lockscreen rwx--- ------
+org.tizen.volume e17 r-x--- ------
+org.tizen.volume system::vconf_setting rw---- ------
+org.tizen.volume system::vconf_inhouse rw---- ------
+org.tizen.volume notification::db rw---- ------
+org.tizen.volume org.tizen.indicator rw---- ------
+org.tizen.volume data-provider-master::notification rw---- ------
+org.tizen.volume data-provider-master::notification.client rw---- ------
+org.tizen.volume system::vconf_multimedia rw---- ------
+org.tizen.volume org.tizen.setting::default-resources r-x--- ------
+org.tizen.volume ug-image-viewer-efl rwx--- ------
+org.tizen.volume org.tizen.clock rw---- ------
+org.tizen.volume sdbd rw---- ------
+org.tizen.volume clock::vconf_share rw---- ------
+org.tizen.volume aul::launch --x--- ------
+org.tizen.volume starter::vconf rw---- ------
+org.tizen.volume ug-setting-call-efl::vconf rw---- ------
+org.tizen.volume org.tizen.safetyvolume-syspopup r-x--- ------
+org.tizen.volume pkgmgr::db rw---l ------
+org.tizen.volume trm -w---- ------
+org.tizen.volume app-svc --x--- ------
+org.tizen.volume org.tizen.music-player-lite rw---- ------
+org.tizen.volume deviced::haptic rw---- ------
+org.tizen.volume org.tizen.wallpaper-service rwx--- ------
+org.tizen.volume org.tizen.wallpaper-service::wallpaper-service rwx--- ------
+aul org.tizen.volume r-x--- ------
+system org.tizen.volume -w---- ------
+org.tizen.cluster-home org.tizen.volume r-x--- ------
+org.tizen.app-tray org.tizen.volume r-x--- ------
+org.tizen.indicator org.tizen.volume -w---- ------
+org.tizen.music-player-lite org.tizen.volume r----- ------
+org.tizen.clock org.tizen.volume rw---- ------
+org.tizen.mode-syspopup org.tizen.volume --x--- ------
+org.tizen.dailybriefing-agent org.tizen.volume --x--- ------
+org.tizen.safetyvolume-syspopup org.tizen.volume r-x--- ------
+org.tizen.volume system::homedir rwxat- ------
+org.tizen.volume system::vconf rwxat- ------
+org.tizen.volume system::media rwxat- ------
+org.tizen.volume system::share rwxat- ------
+e17 org.tizen.volume -w---- ------
+org.tizen.volume device::app_logging rw---- ------
+org.tizen.volume device::sys_logging rw---- ------
+org.tizen.volume sys-assert::core rwxat- ------
+org.tizen.volume privacy-manager::db r----l ------
+org.tizen.volume system::vconf_privacy rw---- ------
+org.tizen.volume system::vconf_system rw---- ------
+org.tizen.volume system::vconf_network rw---- ------
+org.tizen.volume system::vconf_misc rw---- ------
+org.tizen.volume ecore::lock rwxat- ------
--- /dev/null
+<manifest>
+ <define>
+ <domain name="org.tizen.volume"/>
+ </define>
+ <assign>
+ <filesystem path="/usr/share/icons/default/small/org.tizen.volume.png" label="_" />
+ </assign>
+ <request>
+ <domain name="org.tizen.volume"/>
+ </request>
+</manifest>
-<?xml version="1.0" encoding="utf-8"?>\r
-<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.volume" version="0.2.8" install-location="internal-only">\r
- <label>Volume</label>\r
- <author email="hhh.kwon@samsung.com" href="www.samsung.com">Hong Kwon</author>\r
- <description>Volume Application</description>\r
- <ui-application appid="org.tizen.volume" exec="/usr/apps/org.tizen.volume/bin/volume" nodisplay="true" multiple="false" type="capp" taskmanage="false">\r
- <icon>org.tizen.volume.png</icon>\r
- <label>Volume</label>\r
- </ui-application>\r
-</manifest>\r
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.volume" version="0.1.148" install-location="internal-only" api-version="2.3.1">
+ <label>Volume</label>
+ <author email="hhh.kwon@samsung.com" href="www.samsung.com">Hong Kwon</author>
+ <description>Volume Application</description>
+ <ui-application appid="org.tizen.volume" exec="/usr/apps/org.tizen.volume/bin/volume" nodisplay="true" multiple="false" type="capp" taskmanage="false">
+ <icon>org.tizen.volume.png</icon>
+ <label>Volume</label>
+ </ui-application>
+</manifest>
+++ /dev/null
-<manifest>
- <request>
- <domain name="_"/>
- </request>
-</manifest>
-#sbs-git:slp/pkgs/v/volume-app volume-app 0.1.2 226202351de9fefb43756c36d215ca74f52431d0
+%define _project_name volume
+%define _package_name org.tizen.%{_project_name}
+%if "%{?tizen_profile_name}" == "wearable"
+ExcludeArch: %{arm} %ix86 x86_64
+%endif
+
+%if "%{?tizen_profile_name}" == "tv"
+ExcludeArch: %{arm} %ix86 x86_64
+%endif
+
Name: org.tizen.volume
Summary: Volume application (EFL)
-Version: 0.2.8
+Version: 0.1.148
Release: 1
Group: TO_BE/FILLED_IN
-License: Flora Software License
+License: Apache
Source0: %{name}-%{version}.tar.gz
-Source1001: org.tizen.volume.manifest
+BuildRequires: pkgconfig(capi-appfw-application)
+BuildRequires: pkgconfig(capi-appfw-app-manager)
BuildRequires: pkgconfig(appcore-efl)
BuildRequires: pkgconfig(elementary)
-BuildRequires: pkgconfig(utilX)
-BuildRequires: pkgconfig(mm-sound)
+#BuildRequires: pkgconfig(utilX)
+BuildRequires: pkgconfig(capi-media-sound-manager)
BuildRequires: pkgconfig(syspopup)
BuildRequires: pkgconfig(dlog)
-BuildRequires: pkgconfig(svi)
-BuildRequires: pkgconfig(ui-gadget-1)
-BuildRequires: pkgconfig(notification)
-BuildRequires: pkgconfig(capi-system-info)
-BuildRequires: pkgconfig(feedback)
-BuildRequires: pkgconfig(libtzplatform-config)
+BuildRequires: pkgconfig(notification)
+BuildRequires: pkgconfig(feedback)
+BuildRequires: pkgconfig(syspopup-caller)
+#BuildRequires: pkgconfig(x11)
+#BuildRequires: pkgconfig(xcomposite)
+#BuildRequires: pkgconfig(xext)
+#BuildRequires: pkgconfig(xi)
+BuildRequires: pkgconfig(capi-network-bluetooth)
BuildRequires: cmake
BuildRequires: edje-bin
BuildRequires: embryo-bin
BuildRequires: gettext-devel
+BuildRequires: hash-signer
%description
volume.
%prep
%setup -q
-cp %{SOURCE1001} .
-%define PREFIX /usr/apps/org.tizen.volume
+%define PREFIX /usr/apps/%{_package_name}
%build
+export CFLAGS+=" -fPIE"
+export CXXFLAGS+=" -fPIE"
+export LDFLAGS+=" -pie"
+
+%if 0%{?sec_build_binary_debug_enable}
+export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE"
+export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
+export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE"
+%endif
+
+%if 0%{?sec_build_binary_sdk}
+export CFLAGS+=" -DFEATURE_SDK"
+export CXXFLAGS+=" -DFEATURE_SDK"
+export FFLAGS+=" -DFEATURE_SDK"
+
+echo EMULATOR BUILD
+%endif
+
RPM_OPT=`echo $CFLAGS|sed 's/-Wp,-D_FORTIFY_SOURCE=2//'`
export CFLAGS=$RPM_OPT
-cmake -DCMAKE_INSTALL_PREFIX="%{PREFIX}" -DTZ_SYS_SHARE=%TZ_SYS_SHARE -DTZ_SYS_ETC=%TZ_SYS_ETC -DTZ_SYS_BIN=%TZ_SYS_BIN
+cmake -DCMAKE_INSTALL_PREFIX="%{PREFIX}"
make %{?jobs:-j%jobs}
%install
rm -rf %{buildroot}
%make_install
+mkdir -p %{buildroot}/usr/share/license
+cp LICENSE %{buildroot}/usr/share/license/%{_package_name}
+%define tizen_sign 1
+%define tizen_sign_base /usr/apps/%{_package_name}
+%define tizen_sign_level public
+%define tizen_author_sign 1
+%define tizen_dist_sign 1
%files
-%manifest %{name}.manifest
+%manifest %{_package_name}.manifest
%defattr(-,root,root,-)
-%{PREFIX}/bin/*
-%{PREFIX}/res/*
-%{TZ_SYS_SHARE}/icons/default/small/org.tizen.volume.png
-/usr/share/packages/org.tizen.volume.xml
+%{PREFIX}/*
+#%{PREFIX}/bin/*
+#%{PREFIX}/res/*
+/etc/smack/accesses.d/%{_package_name}.efl
+/usr/share/packages/%{_package_name}.xml
+/usr/share/icons/default/small/%{_package_name}.png
+/usr/share/license/%{_package_name}
# for i18n
-SET(POFILES hy.po az.po eu.po bg.po ca.po zh_CN.po zh_HK.po zh_TW.po hr.po cs.po da.po nl_NL.po en.po en_US.po et.po fi.po fr_FR.po gl.po ka.po de_DE.po el_GR.po hu.po is.po ga.po it_IT.po ja_JP.po kk.po ko_KR.po lv.po lt.po mk.po nb.po pl.po pt_PT.po pt_BR.po ro.po ru_RU.po sr.po sk.po sl.po es_ES.po es_US.po sv.po tr_TR.po uk.po uz.po ar.po zh_SG.po hi.po en_PH.po fr_CA.po)
+SET(POFILES ar.po az.po bg.po ca.po cs.po da.po de.po de_DE.po el_GR.po en.po en_PH.po en_US.po es_MX.po es_ES.po et.po eu.po fi.po fr.po fr_CA.po fr_FR.po ga.po gl.po hi.po hr.po hu.po hy.po is.po it_IT.po ja_JP.po ka.po kk.po ko_KR.po lt.po lv.po mn_MN.po mk.po nb.po nl.po nl_NL.po pl.po pt_BR.po pt_PT.po ro.po ru_RU.po sk.po sl.po sr.po sv.po tr_TR.po uk.po uz.po zh_CN.po zh_HK.po zh_SG.po zh_TW.po)
-SET(MSGFMT "${TZ_SYS_BIN}/msgfmt")
+SET(MSGFMT "/usr/bin/msgfmt")
FOREACH(pofile ${POFILES})
SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile})
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
msgstr "قد تضر مستويات الصوت العالية بسمعك إذا استمعت إليها لفترة طويلة"
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "وسائط"
+
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "تحذير"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "وسائط"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "سماعات رأس"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "يتعذر ضبط مستوى الصوت عند إيقاف تشغيل الصوت تماما. يمكنك تشغيل الصوت بالانتقال إلى إعدادات إمكانية الوصول."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "إنها %d:%02d مساء"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "إنها %d:%02d صباحا"
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "لديك %1$d مكالمات فائتة و%2$d رسائل غير مقروءة"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d م. فائتة"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d رسالة جديدة"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "مكالمة لم يرد عليها"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "رسالة واحدة جديدة"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "إنها %1$d:%2$02d"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "لديك مكالمة واحدة فائتة ورسالة واحدة غير مقروءة"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "لديك %d مكالمات فائتة ورسالة واحدة غير مقروءة"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "لديك مكالمة واحدة فائتة و%d رسائل غير مقروءة"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "تم تفعيل الوضع الشخصي"
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Uzun müddət ucadan qulaq assanız, bu sizin eşitmənizə mənfi təsir edə bilər"
+msgstr "Uzun müddət ucadan qulaq assanız, bu sizin eşitmənizə mənfi təsir edə bilər."
msgid "IDS_COM_BODY_MEDIA"
msgstr "Mediya"
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Qulaqlıqlar"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Bütün səslər sönülü olduqda səsi tənzimləmək mümkün deyil. Siz xüsusi imkanlar parametrlərinə keçərək səsi yandıra bilərsiniz."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Saat %d:%d PM."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Saat %d:%d AM."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Sizin %1$d cavabsız zənginiz və %2$d oxunmamış mesajınız var."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d cavabsız zəng"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d yeni mesaj"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 cavabsız zəng"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 yeni mesaj"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Belədir: %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 cavabsız zəng və 1 oxunmamış mesaj"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d cavabsız zəng və 1 oxunmamış mesaj"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 cavabsız zəng və %d oxunmamış mesaj"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Şəxsi rejim aktivləşdirilmişdir."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Xüsusi imkanlar parametrlərində bütün səsləri Söndürməni qeyri-aktiv edin."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Голямата сила на звука може да увреди слуха ви, ако слушате дълго"
+msgstr "Голямата сила на звука може да увреди слуха ви, ако слушате дълго."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Медии"
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Предупреждение"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Медии"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Слушалки"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Силата на звука не може да се регулира, когато всички звуци са изключени. Можете да включите звука, като отидете в настройките за достъпност."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Сега е %d:%d часа сл.об."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Сега е %d:%d часа пр.об."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Имате %1$d пропуснати повиквания и %2$d непрочетени съобщения."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d пропуснати повиквания"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d нови съобщения"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 пропуснато повикване"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 ново съобщение"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Сега е %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 пропуснато повикване и 1 непрочетено съобщение"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d пропуснати повиквания и 1 непрочетено съобщение"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 пропуснато повикване и %d непрочетени съобщения"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Личен режим е активиран."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Деактивирайте Изключване на всички звуци в Настройки за достъпност."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
msgstr "Volums elevats poden malmetre la seva oïda si els escolta durant molt temps"
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Multimèdia"
+
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Advertiment"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Multimèdia"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Auriculars"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "No es pot ajustar el volum mentre tot el so està apagat. Pot activar el so anant als ajustaments d'accessibilitat."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Són les %d:%d PM"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Són les %d:%d AM"
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Té %1$d trucades perdudes i %2$d missatges sense llegir"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d trucades perdudes"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d missatges nous"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 trucada perduda"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 missatge nou"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Són les %1$d:%2$d"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 trucada perduda i 1 missatge sense llegir"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d trucades perdudes i 1 missatge sense llegir"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 trucada perduda i %d missatges sense llegir"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Mode Personal habilitat"
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Deshabilitar Apagar tots els sons a Ajustaments d'accessibilitat."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Dlouhodobý poslech velmi hlasité reprodukce může poškodit sluch"
+msgstr "Dlouhodobý poslech velmi hlasité reprodukce může poškodit sluch."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Média"
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Upozornění"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Média"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Sluchátka"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Když jsou všechny zvuky vypnuté, není možné upravit hlasitost. Zvuk můžete zapnout v nastavení usnadnění."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Je %d:%d odp."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Je %d:%d dop."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Máte %1$d nepřijatých hovorů a %2$d nepřečtených zpráv."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d nepřijatých hovorů"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d nových zpráv"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 nepřijatý hovor"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 nová zpráva"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Je %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 nepřijatý hovor a 1 nepřečtená zpráva"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d nepřijatých hovorů a 1 nepřečtená zpráva"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 nepřijatý hovor a %d nepřečtených zpráv"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Osobní režim je zapnutý."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Vypněte možnost Vypnout všechny zvuky v nastavení Usnadnění."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Høj musik kan skade din hørelse, hvis du lytter i for lang tid"
+msgstr "Høj musik kan skade din hørelse, hvis du lytter i for lang tid."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Medie"
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Advarsel"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Medie"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Høretelefoner"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Kan ikke justere lydstyrke, mens lyd er slået fra. Du kan slå lyd til ved at gå til indstillinger for tilgængelighed."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Den er %d:%d."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Den er %d:%d."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Du har %1$d %ubesvarede opkald, og %2$d ulæste beskeder."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d ubesvarede opkald"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d nye meddelelser"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 ubesvaret opkald"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 ny meddelelse"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Den er %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 ubesvaret opkald og 1 ulæst besked"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d ubesvarede opkald, og 1 ulæst besked"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 ubesvaret opkald, og %d ulæste beskeder"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Tilstanden Personlig aktiveret."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Slå Deaktivér alle lyde fra i indstillinger for Tilgængelighed."
+
--- /dev/null
+msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Das Hören lauter Musik über einen längeren Zeitraum kann sich schädlich auf Ihr Gehör auswirken."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Medien"
+
+msgid "IDS_COM_BODY_ANDROID"
+msgstr "Android"
+
+msgid "IDS_COM_BODY_JAVA"
+msgstr "Java"
+
+msgid "IDS_COM_BODY_WARNING"
+msgstr "Warnung"
+
+msgid "IDS_COM_OPT_HEADPHONES_ABB"
+msgstr "Kopfhörer"
+
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Lautstärke kann nicht angepasst werden, solange alle Töne ausgeschaltet sind. Sie können die Töne unter den Eingabehilfeeinstellungen einschalten."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Es ist %d:%d PM"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Es ist %d:%d AM"
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Sie haben %1$d verpasste Anrufe und %2$d ungelesene Nachrichten."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d verpasste Anrufe"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d neue Nachrichten"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 Anruf in Abwesenheit"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 neue Nachricht"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Es ist %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 verpasster Anruf und 1 ungelesene Nachricht"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d verpasste Anrufe und 1 ungelesene Nachricht"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 verpasster Anruf und %d ungelesene Nachrichten"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Persönlicher Modus aktiviert."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "„Alle Töne abschalten“ in den Eingabehilfeeinstellungen deaktivieren."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
msgstr "Das Hören lauter Musik über einen längeren Zeitraum kann sich schädlich auf Ihr Gehör auswirken."
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Medien"
+
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Warnung"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Medien"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Kopfhörer"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Lautstärke kann nicht angepasst werden, solange alle Töne ausgeschaltet sind. Sie können die Töne unter den Eingabehilfeeinstellungen einschalten."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Es ist %d:%02d PM"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Es ist %d:%02d AM"
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Sie haben %1$d verpasste Anrufe und %2$d ungelesene Nachrichten."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d verpasste Anrufe"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d neue Nachrichten"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 Anruf in Abwesenheit"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 neue Nachricht"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Es ist %1$d:%2$02d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 verpasster Anruf und 1 ungelesene Nachricht"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d verpasste Anrufe und 1 ungelesene Nachricht"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 verpasster Anruf und %d ungelesene Nachrichten"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Persönlicher Modus aktiviert."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Η ακρόαση μουσικής σε υψηλή ένταση για μεγάλο χρονικό διάστημα μπορεί να βλάψει την ακοή σας"
+msgstr "Η ακρόαση μουσικής σε υψηλή ένταση για μεγάλο χρονικό διάστημα μπορεί να βλάψει την ακοή σας."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Μέσα"
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Προειδοποίηση"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Μέσα"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Ακουστικά"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Δεν είναι δυνατή η προσαρμογή της έντασης όταν έχει γίνει σίγαση του ήχου. Μπορείτε να ενεργοποιήσετε τον ήχο μεταβαίνοντας στις ρυθμίσεις προσβασιμότητας."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Η ώρα είναι %d:%d μμ."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Η ώρα είναι %d:%d πμ."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Έχετε %1$d αναπάντητες κλήσεις και %2$d μη αναγνωσμένα μηνύματα."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d αναπάντητες κλήσεις"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d νέα μηνύματα"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 αναπάντητη κλήση"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 νέο μήνυμα"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Η ώρα είναι %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 αναπάντητη κλήση και 1 μη αναγνωσμένο μήνυμα"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d αναπάντητες κλήσεις και 1 μη αναγνωσμένο μήνυμα"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 αναπάντητη κλήση και %d μη αναγνωσμένα μηνύματα"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Η προσωπική λειτουργία ενεργοποιήθηκε."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Απενεργοποιήστε τη ρύθμιση «Απενεργοποίηση όλων των ήχων» στις ρυθμίσεις προσβασιμότητας."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "High volumes may harm your hearing if you listen for a long time"
+msgstr "High volumes may harm your hearing if you listen for a long time."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Media"
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Warning"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Media"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Headphones"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Unable to adjust volume while all sound is off. You can turn on sound by going to accessibility settings."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "It is %d:%d PM."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "It is %d:%d AM."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "You have %1$d missed calls and %2$d unread messages."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d missed calls"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d new messages"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 missed call"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 new message"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "It is %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 missed call and 1 unread message"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d missed calls and 1 unread message"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 missed call and %d unread messages"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Personal mode enabled."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Disable Turn off all sounds in Accessibility settings."
+
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Headphones"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Unable to adjust volume while all sound is off. You can turn on sound by going to accessibility settings"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "It is %d:%02d PM"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "It is %d:%02d AM"
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "You have %1$d missed calls and %2$d unread messages"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d missed calls"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d new messages"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 missed call"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 new message"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "It is %d:%02d"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 missed call and 1 unread message"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d missed calls and 1 unread message"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 missed call and %d unread messages"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Personal mode enabled"
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "High volumes may harm your hearing if you listen for a long time"
+msgstr "High volumes may harm your hearing if you listen for a long time."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Media"
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Warning"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Media"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Headphones"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Unable to adjust volume while all sound is off. You can turn on sound by going to accessibility settings."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "It is %d:%d PM."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "It is %d:%d AM."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "You have %1$d missed calls and %2$d unread messages."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d missed calls"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d new messages"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 missed call"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 new message"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "It is %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 missed call and 1 unread message"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d missed calls and 1 unread message"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 missed call and %d unread messages"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Personal mode turned on."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Disable Turn off all sounds in Accessibility settings."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
msgstr "El volumen alto durante un tiempo prolongado puede dañar sus oídos"
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Multimedia"
+
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Aviso"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Multimedia"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Auriculares"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "No se puede ajustar el volumen mientras todo el sonido está apagado. Puede activar el sonido desde ajustes de accesibilidad."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Son las %d:%d PM"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Son las %d:%d AM"
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Tiene %1$d llamadas perdidas y %2$d mensajes sin leer"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d llamadas perdidas"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d mensajes nuevos"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 llamada perdida"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 mensaje nuevo"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Son las %1$d:%2$d"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 llamada perdida y 1 mensaje sin leer"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d llamadas perdidas y 1 mensaje sin leer"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 llamada perdida y %d mensajes sin leer"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Modo Personal activado"
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Anular Desactivar todos los sonidos en los ajustes de accesibilidad."
+
--- /dev/null
+msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Volúmenes elevados pueden dañar su oído si los escucha durante un tiempo prolongado"
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Multimedia"
+
+msgid "IDS_COM_BODY_ANDROID"
+msgstr "Android"
+
+msgid "IDS_COM_BODY_JAVA"
+msgstr "Java"
+
+msgid "IDS_COM_BODY_WARNING"
+msgstr "Aviso"
+
+msgid "IDS_COM_OPT_HEADPHONES_ABB"
+msgstr "Auricular"
+
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "No se pude ajustar el volumen mientras todos los sonidos están desactivados. Para activar los sonidos, vaya a la configuración de accesibilidad."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Son las %d:%02d PM"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Son las %d:%02d AM"
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Tiene %1$d llamadas perdidas y %2$d mensajes sin leer"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d llamadas perdidas"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d nuevos mensajes"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 llamada perdida"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 nuevo mensaje"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Son las %1$d:%2$02d"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 llamada perdida y 1 mensaje no leído"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d llamadas perdidas y 1 mensaje no leído"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 llamada perdida y %d mensajes no leídos"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Modo personal activado"
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Volúmenes elevados pueden dañar su oído si los escucha durante un tiempo prolongado"
+msgstr "Escuchar música a volumen alto por un tiempo prolongado puede dañar su audición"
msgid "IDS_COM_BODY_MEDIA"
msgstr "Multimedia"
msgstr "Aviso"
msgid "IDS_COM_OPT_HEADPHONES_ABB"
-msgstr "Auriculares"
+msgstr "Auricular"
+
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "No se pude ajustar el volumen mientras todos los sonidos están desactivados. Para activar los sonidos, vaya a la configuración de accesibilidad."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Son las %d:%d PM."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Son las %d:%d AM."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Tiene %1$d llamadas perdidas y %2$d mensajes sin leer."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d llamadas perdidas"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d nuevos mensajes"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 llamada perdida"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 nuevo mensaje"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Son las %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 llamada perdida y 1 mensaje no leído"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d llamadas perdidas y 1 mensaje no leído"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 llamada perdida y %d mensajes no leídos"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Modo personal activado."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Anular Desactivar todos los sonidos en la configuración de accesibilidad."
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Valju heli kuulamine pika aja vältel võib põhjustada kuulmiskahjustusi"
+msgstr "Valju heli kuulamine pika aja valtel voib pohjustada kuulmiskahjustusi."
msgid "IDS_COM_BODY_MEDIA"
msgstr "Meedia (Telefon)"
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Kõrvaklapid"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Helitugevust ei saa reguleerida, kui kõik helid on välja lülitatud. Heli sisselülitamiseks minge juurdepääsuseadetesse."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Kell on %d:%d PL."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Kell on %d:%d EL."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Teil on %1$d vastamata konet ja %2$d lugemata sonumit."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d vastamata kõnet"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d uut sõnumit"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 vastamata kõne"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 uus sõnum"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Kell on %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 vastamata kõne ja 1 lugemata sõnum"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d vastamata kõnet ja 1 lugemata sõnum"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 vastamata kõne ja %d lugemata sõnumit"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Isiklik režiim on aktiveeritud."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Desaktiveerige menüüs Juurdepääsu seaded käsk Lülita kõik helid välja."
+
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Aurikularrak"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Ezin da bolumena egokitu soinu guztiak itzalita daudenean. Soinua piztu dezakezu irisgarritasun ezarpenetan."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Arratsaldeko %d:%d-a(k) d(ir)a"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Goizeko %d:%d-a(k) d(ir)a"
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "%1$d dei galdu eta irakurri gabeko %2$d mezu dituzu"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d dei galdu"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d mezu berri"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "Dei galdu 1"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "Mezu berri 1"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "%1$d:%2$d dira"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "Dei galdu 1 eta irakurri gabeko mezu 1"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d dei galdu eta irakurri gabeko mezu 1"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "Dei galdu 1 eta %d irakurri gabeko mezu"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Modu pertsonala gaituta"
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Ezgaitu Itzali soinu guztiak Irisgarritasun ezarpenetan."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Suuri äänenvoimakkuus vaurioittaa kuuloasi pitkäaikaisen kuuntelun aikana"
+msgstr "Suuri äänenvoimakkuus vaurioittaa kuuloasi pitkäaikaisen kuuntelun aikana."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Media"
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Varoitus"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Media"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Kuulokkeet"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Äänenvoimakkuutta ei voi säätää, kun kaikki äänet on poistettu käytöstä. Voit ottaa äänet käyttöön siirtymällä helppokäyttöisyysasetuksiin."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Nyt on klo %d:%d ip."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Nyt on klo %d:%d ap."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "%1$d vastaamatonta puhelua ja %2$d lukematonta viestiä"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d vastaamatonta puhelua"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d uutta viestiä"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 vastaamaton puhelu"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 uusi viesti"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Kello on %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 vastaamaton puhelu ja 1 lukematon viesti"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d vastaamatonta puhelua ja 1 lukematon viesti"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 vastaamaton puhelu ja %d lukematonta viestiä"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Henkilökohtainen tila käytössä."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Poista Poista äänet käytöstä -toiminto helppokäyttöasetuksissa käytöstä."
+
--- /dev/null
+msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "L'écoute prolongée de musique à un volume élevé risque d'endommager votre audition."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Média"
+
+msgid "IDS_COM_BODY_ANDROID"
+msgstr "Android"
+
+msgid "IDS_COM_BODY_JAVA"
+msgstr "Java"
+
+msgid "IDS_COM_BODY_WARNING"
+msgstr "Avertissement"
+
+msgid "IDS_COM_OPT_HEADPHONES_ABB"
+msgstr "Écouteurs"
+
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Impossible d'ajuster le volume lorsque le son est désactivé. Vous pouvez activer le son en accédant aux paramètres d'accessibilité."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Il est %d:%d de l'après-midi."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Il est %d:%d du matin."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Vous avez %1$d appels manqués et %2$d messages non lus."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d appels manqués"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d nouveaux messages"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 appel manqué"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 nouveau message"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Il est %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 appel manqué et 1 message non lu"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d appels manqués et 1 message non lu"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 appel manqué et %d messages non lus"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Mode personnel activé"
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Désactivez l'option Désactiver tous les sons dans le menu Paramètres d'accessibilité."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "L'écoute prolongée de musique à un volume élevé risque d'endommager votre audition"
+msgstr "L'écoute prolongée de musique à un volume élevé risque d'endommager votre audition."
msgid "IDS_COM_BODY_MEDIA"
msgstr "Média"
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Écouteurs"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Impossible d'ajuster le volume lorsque le son est désactivé. Vous pouvez activer le son en accédant aux paramètres d'accessibilité."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Il est %d:%d de l'après-midi."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Il est %d:%d du matin."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Vous avez %1$d appels manqués et %2$d messages non lus."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d appels manqués"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d nouveaux messages"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 appel manqué"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 nouveau message"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Il est %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 appel manqué et 1 message non lu"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d appels manqués et 1 message non lu"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 appel manqué et %d messages non lus"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Mode personnel activé."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Désactivez Désactiver tous les sons dans Paramètres d'accessibilité."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
msgstr " L'écoute prolongée de musique à un volume élevé risque d'endommager votre audition"
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Média"
+
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Avertissement"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Média"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
-msgstr "Ecouteurs"
+msgstr "Écouteurs"
+
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Impossible d'ajuster le volume lorsque le son est désactivé. Vous pouvez activer le son en accédant aux paramètres d'accessibilité."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Il est %d:%02d de l'après-midi"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Il est %d:%02d du matin"
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Vous avez %1$d appels manqués et %2$d messages non lus"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d appels manqués"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d nouveaux messages"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 appel manqué"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 nouveau message"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Il est %1$d:%2$02d"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 appel manqué et 1 message non lu"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d appels manqués et 1 message non lu"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 appel manqué et %d messages non lus"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Mode personnel activé"
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Cluasáin"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Ní féidir an airde a choigeartú agus gach fuaim casta as. Féadann tú fuaim a chasadh air trí ghabháil chuig socruithe inrochtaineachta."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Tá sé %d:%02d I.N."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Tá sé %d:%02d R.N."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Tá %1$d glao caillte agus %2$d teachtaireacht neamhléite agat"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d glao caillte"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d teachtaireacht nua"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 ghlao caillte"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 teachtaireacht nua"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "%1$d:%2$02d an t-am anois"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 ghlao a cailleadh agus 1 teachtaireacht neamhléite"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d glao a cailleadh agus 1 teachtaireacht neamhléite"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 ghlao a cailleadh agus %d teachtaireacht neamhléite"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Mód pearsanta cumasaithe"
+
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Auriculares"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Non se pode axustar o volume mentres todo o son está desactivado. Podes activar o son dirixíndote aos axustes de accesibilidade."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Son as %d:%d PM"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Son as %d:%d AM"
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Tes %1$d chamadas perdidas e %2$d mensaxes sen ler"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d chamadas perdidas"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d mensaxes novas"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 chamada perdida"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 nova mensaxe"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Son as %1$d:%2$d"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 chamada perdida e 1 mensaxe sen ler"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d chamadas perdidas e 1 mensaxe sen ler"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 chamada perdida e %d mensaxes sen ler"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Modo persoal activado"
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Desactiva Desactivar todos os sons nos axustes de accesibilidade."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
msgstr "उच्च वॉल्यूम से आपके सुनने में नुकसान हो सकता है यदि आप लंबे समय तक उसे सुनते हैं"
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "मीडिया"
+
msgid "IDS_COM_BODY_ANDROID"
msgstr "एंड्रोइड"
msgid "IDS_COM_BODY_JAVA"
-msgstr "Java"
+msgstr "जावा"
msgid "IDS_COM_BODY_WARNING"
msgstr "चेतावनी"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "मीडिया"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "हेडफ़ोन्स"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "सभी ध्वनि बंद करने के दौरान वोल्यूम समायोजित करने में अक्षम। एक्सेसीबीलीटी सेटिंग्स पर जाते हुए आप ध्वनि चालू कर सकते हैं।"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "समय है %d:%02d PM"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "समय है %d:%02d AM"
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "आपके पास %1$d छूटी कॉलें और %2$d अपठित सन्देश हैं"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d छूटी कॉल्स"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d नए संदेश"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 छूटी कॉल"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 नया संदेश"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "यह %1$d:%2$02d है"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 छूटी कॉल और 1 अपठित संदेश"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d छूटी कॉल और 1 अपठित संदेश"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 छूटी कॉल और %d अपठित संदेश"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "व्यक्तिगत मोड सक्षम किया गया है"
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Velika glasnoća može oštetiti sluh pri dugom slušanju"
+msgstr "Velika glasnoća može oštetiti sluh pri dugom slušanju."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Mediji"
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Upozorenje"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Mediji"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Slušalice"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Greška prilagođavanja glasnoće kada je zvuk isključen. Možete uključiti zvuk tako da odete na postavke pristupačnosti."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Sada je %d:%d poslijepodne."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Sada je %d:%d ujutro."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Imate %1$d propuštenih poziva i %2$d nepročitanih poruka."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d propuštenih poziva"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d novih poruka"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 propušten poziv"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 nova poruka"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Sada je %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 propušten poziv i 1 nepročitana poruka"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d propuštenih poziva i 1 nepročitana poruka"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 propušten poziv i %d nepročitanih poruka"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Uključen Osobni način rada."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Isključi funkciju Isključi sve zvukove u Postavkama pristupačnosti."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Ha sokáig hallgat nagy hangerőn zenét vagy egyebet, akkor károsodhat a hallása"
+msgstr "Ha sokáig hallgat nagy hangerőn zenét vagy egyebet, akkor károsodhat a hallása."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Média"
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Figyelmeztetés"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Média"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Fejhallgató"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Ha minden hang ki van kapcsolva, nem módosítható a hangerő. A kisegítő lehetőségek beállításaiban bekapcsolhatja a hangot."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "%d:%d du. van."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "%d:%d de. van."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Van %1$d nem fogadott hívása és %2$d olvasatlan üzenete."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d nem fogadott hívás"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d új üzenet"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 nem fogadott hívás"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 új üzenet"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "%1$d óra %2$d perc van."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 nem fogadott hívás és 1 olvasatlan üzenet"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d nem fogadott hívás és 1 olvasatlan üzenet"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 nem fogadott hívás és %d olvasatlan üzenet"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Személyes mód engedélyezve."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Tiltsa le a Minden hang kikapcsolását a Kisegítő lehetőségek beállításaiban."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Բարձր ձայնը կարող է վնասել Ձեր լսողությունը, եթե այն լսեք երկար ժամանակ"
+msgstr "Բարձր ձայնը կարող է վնասել Ձեր լսողությունը, եթե այն լսեք երկար ժամանակ:"
msgid "IDS_COM_BODY_MEDIA"
msgstr "Մեդիա"
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Գլխ. հեռախոսներ"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Անհնար է կարգավորել ձայնի ուժգնությունը, երբ բոլոր ձայներն անջատված են: Կարող եք միացնել ձայնը՝ գնալով մատչելիության դրվածքներ:"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Ժամը՝ %d:%d PM:"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Ժամը՝ %d:%d AM:"
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Դուք ունեք %1$d կորսված զանգ և %2$d չկարդացված հաղորդագրություն:"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d կորսված զանգ"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d նոր հաղորդագրություն"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 կորսված զանգ"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 նոր հաղորդագրություն"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Ժամը %1$d:%2$d է:"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 կորսված զանգ և 1 չկարդացված հաղորդագրություն"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d կորսված զանգ և 1 չկարդացված հաղորդագրություն"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 կորսված զանգ և %d չկարդացված հաղորդագրություն"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Անհատական ռեժիմն ընձեռված է:"
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Մատչելիության դրվածքներում կասեցրեք «Անջատել բոլոր հնչյունները»:"
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Hátt spiluð tónlist getur skaðað heyrn þína ef hlustað er í langan tíma í einu"
+msgstr "Hátt spiluð tónlist getur skaðað heyrn þína ef hlustað er í langan tíma í einu."
msgid "IDS_COM_BODY_MEDIA"
-msgstr "Miðill"
+msgstr "Margmiðlunarefni"
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Höfuðtól"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Ekki er hægt að stilla hljóðstyrk þegar slökkt er á hljóði. Þú getur kveikt á hljóði í aðgengisstillingum."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Hún er %d:%d eftir hádegi."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Hún er %d:%d fyrir hádegi."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Þú átt %1$d ósvaraðar hringingar og %2$d ólesin skilaboð."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d ósvöruð símtöl"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d ný skilaboð"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "Eitt ósvarað símtal"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "Ein ný skilaboð"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Klukkan er %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "Eitt ósvarað símtal og ein ólesin skilaboð"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d ósvöruð símtöl og ein ólesin skilaboð"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "Eitt ósvarað símtal og %d ólesin skilaboð"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Kveikt á einkastillingu."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Gerðu „Slökkva á öllum hljóðum“ óvirkt í aðgengisstillingum."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Volumi troppo alti possono danneggiare l'udito in caso di ascolto prolungato"
+msgstr "Volumi troppo alti possono danneggiare l'udito in caso di ascolto prolungato."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Multimedia"
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Avviso"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Multimedia"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Cuffie"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Impossibile regolare il volume se tutti i suoni sono disattivati. Potete attivare i suoni accedendo alle impostazioni di accessibilità."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Sono le %d:%d PM."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Sono le %d:%d AM."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "%1$d chiamate perse e %2$d messaggi non letti."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d chiamate perse"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d nuovi messaggi"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 chiamata persa"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 nuovo messaggio"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Sono le %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 chiamata persa e 1 messaggio non letto"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d chiamate perse e 1 messaggio non letto"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 chiamata persa e %d messaggi non letti"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Modalità Personale attivata."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Disabilitate l'opzione Disattiva tutti i suoni nelle impostazioni di accessibilità."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr " 長時間大音量で聴き続けると、聴力を損傷する可能性があります"
+msgstr " 長時間大音量で聴き続けると、聴力を損傷する可能性があります"
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "メディア"
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "警告"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "メディア"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "ヘッドホン"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "[全ての音をOFF]を有効にしている間は音量を調整できません。[ユーザー補助]から、音量をONにできます。"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "午後%d時%d分です。"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "午前%d時%d分です。"
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "%1$d件の不在着信と、%2$d件の未読メッセージがあります。"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d件の不在着信があります。"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d件の新着メッセージがあります。"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1件の不在着信があります。"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1件の新着メッセージがあります。"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "%1$d:%2$dです。"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1件の不在着信と1件の未読メッセージ"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d件の不在着信と1件の未読メッセージ"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1件の不在着信と%d件の未読メッセージ"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "パーソナルモードが有効になりました。"
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "ხანგრძლივი დროით მუსიკის მაღალ ხმაზე მოსმენა შეიძლება გახდეს სმენის დაქვეითების მიზეზი"
+msgstr "ხანგრძლივი დროით მუსიკის მაღალ ხმაზე მოსმენა შეიძლება გახდეს სმენის დაქვეითების მიზეზი."
msgid "IDS_COM_BODY_MEDIA"
msgstr "მედია"
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "გარნიტურები"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "ხმის სიმაღლეს ვერ დააყენებთ, როდესაც ყველა ხმა გამორთულია. შეგიძლიათ გახსნათ წვდომის პარამეტრები და ჩართოთ ხმა."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "ახლა არის %d:%d, შუადღის შემდეგ."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "ახლა არის %d:%d, შუადღემდე."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "თქვენ გაქვთ %1$d გამოტოვებული ზარი და %2$d წაუკითხავი წერილი."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d გამოტოვებული ზარი"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d ახალი წერილი"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 გამოტოვებული ზარი"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 ახალი წერილი"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "ახლა არის %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 გამოტოვებული ზარი და 1 წაუკითხავი წერილი"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d გამოტოვებული ზარი და 1 წაუკითხავი წერილი"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 გამოტოვებული ზარი და %d წაუკითხავი წერილი"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "პერსონალური რეჟიმი გააქტიურებულია."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "წვდომის პარამეტრებში გამორთეთ ყველა ხმის გამორთვა."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Ұзақ уақыт тыңдайтын болсаңыз, қатты дауыс деңгейі есту мүшеңізді зақымдауы мүмкін"
+msgstr "Ұзақ уақыт тыңдайтын болсаңыз, қатты дауыс деңгейі есту мүшеңізді зақымдауы мүмкін."
msgid "IDS_COM_BODY_MEDIA"
msgstr "Ақпарат"
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Құлаққаптар"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Барлық дыбыс өшірулі кезде дыбыс деңгейін реттеу мүмкін емес. Арнайы мүмкіндіктер параметрлеріне өту арқылы дыбысты қосуға болады."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Сағат %d:%d PM."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Сағат %d:%d AM."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Сізде қабылданбаған %1$d қоңырау және оқылмаған %2$d хабар бар."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d қабылданбаған қоңырау"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d жаңа хабар"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 қабылданбаған нөмір"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 жаңа хабар"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Ол — %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 қабылданбаған қоңырау және 1 оқылмаған хабар"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d қабылданбаған қоңырау және 1 оқылмаған хабар"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 қабылданбаған қоңырау және %d оқылмаған хабар"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Жеке режим іске қосылды."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Қол жетімділік параметрлерінен Барлық дыбыстарды өшіру опциясын өшіріңіз."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "오랫동안 큰 소리로 음악을 들으면 청각이 손상될 수 있습니다"
+msgstr "오랫동안 큰 소리로 음악을 들으면 청각이 손상될 수 있습니다."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "미디어"
msgid "IDS_COM_BODY_ANDROID"
msgstr "안드로이드"
msgid "IDS_COM_BODY_WARNING"
msgstr "경고"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "미디어"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "헤드폰"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "모든 소리가 꺼진 상태에서는 음량을 조절할 수 없습니다. 접근성 설정으로 이동하여 소리를 켤 수 있습니다."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "오후 %d시%d분입니다."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "오전 %d시%d분입니다."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "%1$d개의 부재중 전화 및 %2$d개의 읽지 않은 메시지가 있습니다."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d개의 부재중 전화가 있습니다"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d개의 새 메시지가 있습니다"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "부재중 전화가 1통 있습니다"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "새 메시지가 1개 있습니다"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "%1$d시 %2$d분입니다."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1통의 부재중 전화와 1개의 읽지 않은 메시지가 있습니다"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d개의 부재중 전화와 1개의 읽지 않은 메시지가 있습니다"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1통의 부재중 전화와 %d개의 읽지 않은 메시지가 있습니다"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "개인 모드가 실행되었습니다."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "접근성 설정에서 [모든 소리 끄기]를 해제하세요."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Jei klausysitės garsiai ilgą laiką, gali būti pažeista klausa"
+msgstr "Jei klausysitės garsiai ilgą laiką, gali būti pažeista klausa."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Daugialypė terpė"
msgid "IDS_COM_BODY_ANDROID"
msgstr "„Android“"
msgid "IDS_COM_BODY_WARNING"
msgstr "Perspėjimas"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Daugialypė terpė"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Ausinės"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Neįmanoma sureguliuoti garso, kai išjungti visi garsai. Garsą galite įjungti pritaikymo neįgaliesiems nustatymuose."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Dabar %d:%d (popiet)."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Dabar %d:%d (priešpiet)."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Yra %1$d praleisti (-ų) skambučiai (-ių) ir %2$d neskaitytos (-ų) žinutės (-ių)."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "Praleista skambučių: %d"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "Naujų žinučių: %d"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 praleistas skambutis"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 nauja žinutė"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Tai %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 praleistas skambutis ir 1 neperskaityta žinutė"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d praleisti (-ų) skambučiai (-ių) ir 1 neperskaityta žinutė"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 praleistas skambutis ir %d neperskaitytos (-ų) žinutės (-ių)"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Asmeninis režimas įjungtas."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Pritaikymo neįgaliesiems nustatymuose išjunkite „Išjungti visus garsus“."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Ilgstoša skaļas mūzikas klausīšanās var izraisīt dzirdes traucējumus"
+msgstr "Ilgstoša skaļas mūzikas klausīšanās var izraisīt dzirdes traucējumus."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Multivide"
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Brīdinājums"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Multivide"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Austiņas"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Nevar pielāgot skaļuma līmeni, ja visas skaņas ir izslēgtas. Lai ieslēgtu skaņu, dodieties uz pieejamības iestatījumiem."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Pareizs laiks %d:%d pēcpusdienā."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Pareizs laiks %d:%d priekšpusdienā."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Jums ir %1$d neatbildēti zvani un %2$d nelasītas ziņas."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d neatbildēti zvani"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d jaunas ziņas"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 neatbildēts zvans"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 jauna ziņa"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Pareizs laiks ir %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 neatbildēts zvans un 1 nelasīta ziņa"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d neatbildēti zvani un 1 nelasīta ziņa"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 neatbildēts zvans un %d nelasītas ziņas"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Personiskais režīms ir aktivizēts."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Pieejamības iestatījumos deaktivizējiet funkciju Izslēgt visas skaņas."
+
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Слушалки"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Не може да се прилагоди јачината додека сите звуци се исклучени. Може да го вклучите звукот одејќи во опциите за пристапност."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Сега е %d:%02d PM"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Сега е %d:%02d AM"
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Имате %1$d пропуштени повици и %2$d непрочитани пораки"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d пропуштени повици"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d нови пораки"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 пропуштен повик"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 нова порака"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Сега е %1$d:%2$02d"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 пропуштен повик и 1 непрочитана порака"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d пропуштени повици и 1 непрочитана порака"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 пропуштен повик и %d непрочитани пораки"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Личниот режим е вклучен"
+
--- /dev/null
+msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Хэрэв та дууг чангаар удаан сонсвол сонсгол тань гэмтээж болзошгүй."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Медиа"
+
+msgid "IDS_COM_BODY_ANDROID"
+msgstr "Android"
+
+msgid "IDS_COM_BODY_JAVA"
+msgstr "Java"
+
+msgid "IDS_COM_BODY_WARNING"
+msgstr "Анхааруулга"
+
+msgid "IDS_COM_OPT_HEADPHONES_ABB"
+msgstr "Чихэвч"
+
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Дуу хаагдсан үед дууны хэмжээ тохируулах боломжгүй. Та хандалтын тохиргоо руу очиж дууг нээх боломжтой."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Одоо %d:%d PM"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Одоо %d:%d AM"
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Танд %1$d аваагүй дуудлага ба %2$d уншаагүй зурвас байна"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d missed calls"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d new messages"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 missed call"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 new message"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Энэ нь %1$d:%2$d"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 missed call and 1 unread message"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d missed calls and 1 unread message"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 missed call and %d unread messages"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Хувийн горим идэвхжсэн."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Хандалтын тохиргоонд Бүх дууг унтраахыг идэвхгүй болго."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Høy lydstyrke kan skade hørselen din hvis du lytter til det over lengre perioder"
+msgstr "Høy lydstyrke kan skade hørselen din hvis du lytter til det over lengre perioder."
msgid "IDS_COM_BODY_MEDIA"
msgstr "Medier"
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Hodetelefoner"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Kan ikke justere volumet mens all lyd er slått av. Du kan slå på lyd ved å gå til tilgjengelighetsinnstillinger."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Klokken er %d:%d."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Klokken er %d:%d."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Du har %1$d tapte anrop og %2$d uleste meldinger."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d tapte anrop"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d nye meldinger"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 ubesvart anrop"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 ny melding"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Den er %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 tapt anrop og 1 ulest melding"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d tapte anrop og 1 ulest melding"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 tapt anrop og %d uleste meldinger"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Personlig modus aktivert."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Deaktiver Slå av alle lyder i tilgjengelighetsinnstillingene."
+
--- /dev/null
+msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Hoog volume kan uw gehoor beschadigen wanneer u er lang naar luistert."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Media"
+
+msgid "IDS_COM_BODY_ANDROID"
+msgstr "Android"
+
+msgid "IDS_COM_BODY_JAVA"
+msgstr "Java"
+
+msgid "IDS_COM_BODY_WARNING"
+msgstr "Waarschuwing"
+
+msgid "IDS_COM_OPT_HEADPHONES_ABB"
+msgstr "Koptelefoons"
+
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Kan het volume niet aanpassen als alle geluiden uit zijn. Zet het geluid aan via de toegankelijkheidsinstellingen."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Het is %d:%d nm."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Het is %d:%d vm."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "U hebt %1$d gemiste oproepen en %2$d ongelezen berichten."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d gemiste oproepen"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d nieuwe berichten"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 gemiste oproep"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 nieuw bericht"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Het is %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 gemiste oproep en 1 ongelezen bericht"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d gemiste oproepen en 1 ongelezen bericht"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 gemiste oproep en %d ongelezen berichten"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Persoonlijke stand ingeschakeld."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Schakel Alle geluiden uit in Toegankelijkheidsinstellingen uit."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
msgstr "Hoog volume kan uw gehoor beschadigen wanneer u er lang naar luistert"
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Media"
+
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Waarschuwing"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Media"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Koptelefoons"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Kan het volume niet aanpassen als alle geluiden uit zijn. Zet het geluid aan via de toegankelijkheidsinstellingen."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Het is %d:%02d nm"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Het is %d:%02d vm"
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "U hebt %1$d gemiste oproepen en %2$d ongelezen berichten"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d gemiste oproepen"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d nieuwe berichten"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 gemiste oproep"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 nieuw bericht"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Het is %1$d:%2$02d"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 gemiste oproep en 1 ongelezen bericht"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d gemiste oproepen en 1 ongelezen bericht"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 gemiste oproep en %d ongelezen berichten"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Persoonlijke stand ingeschakeld"
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Słuchanie muzyki przy wysokim ustawieniu głośności przez długi czas może spowodować uszkodzenie słuchu"
+msgstr "Słuchanie muzyki przy wysokim ustawieniu głośności przez długi czas może spowodować uszkodzenie słuchu."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Media"
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Ostrzeżenie"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Media"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Słuchawki"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Nie można dostosować głośności, gdy dźwięk jest wyłączony. Możesz włączyć dźwięk, przechodząc do ustawień dostępności."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Godzina %d:%d po południu"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Godzina %d:%d rano"
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Nieodebranych połączeń: %1$d i nieprzeczytanych wiadomości: %2$d."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "Nieodebranych połączeń %d"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "Nowych wiadomości %d"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "Nieodebranych połączeń 1"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "Nowych wiadomości 1"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Godzina %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "Nieodebranych połączeń 1 i nieprzeczytanych wiadomości 1"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "Nieodebranych połączeń %d i nieprzeczytanych wiadomości 1"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr " Nieodebranych połączeń 1 i nieprzeczytanych wiadomości %d"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Tryb osobisty włączony."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Wyłącz opcję Wyłącz wszystkie dźwięki w ustawieniach opcji Dostępność."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "O volume alto do som pode prejudicar a sua audição se a expor durante muito tempo"
+msgstr "O volume alto do som pode prejudicar a sua audição se a expor durante muito tempo."
msgid "IDS_COM_BODY_MEDIA"
msgstr "Mídia"
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Fones de ouvido"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Não é possível ajustar o volume enquanto todos os sons estiverem desligados. Você pode ligar os sons indo para as configurações de acessibilidade."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "São %d:%d PM."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "São %d:%d AM."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Você tem %1$d chamadas perdidas e %2$d mensagens não lidas."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d chamadas perdidas"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d novas mensagens"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 chamada perdida"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 nova mensagem"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "São %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 chamada perdida e 1 mensagem não lida"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d chamadas perdidas e 1 mensagem não lida"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 chamada perdida e %d mensagens não lidas"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Modo Pessoal ativado."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Desativar desligar todos os sons nas configurações de Acessibilidade."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "O volume de som elevado pode prejudicar a sua audição se a expuser a este durante muito tempo"
+msgstr "O volume de som elevado pode prejudicar a sua audição se a expuser a este durante muito tempo."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Multimédia"
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Aviso"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Multimédia"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Auscultadores"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Impossível regular o volume quando todos os sons estão desligados. Pode ligar o som acedendo às definições de acessibilidade."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "São %d:%d PM."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "São %d:%d AM."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Tem %1$d chamadas perdidas e %2$d mensagens não lidas."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d chamadas perdidas"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d mensagens novas"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 chamada não atendida"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 mensagem nova"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "São %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 chamada perdida e 1 mensagem não lida"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d chamadas perdidas e 1 mensagem não lida"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 chamada perdida e %d mensagens não lidas"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Modo Pessoal activado."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Desactive Desligar todos os sons nas definições de Acessibilidade."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Sunetele la volum ridicat pot afecta auzul, dacă le ascultaţi timp îndelungat"
+msgstr "Sunetele la volum ridicat pot afecta auzul, dacă le ascultaţi timp îndelungat."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Media"
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Avertisment"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Media"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Căşti"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Imposibil de reglat volumul când toate sunetele sunt dezactivate. Puteţi activa sunetul accesând setările de accesibilitate."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Este ora %d:%d p.m."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Este ora %d:%d a.m."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Aveţi %1$d apeluri pierdute şi %2$d mesaje necitite."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d apeluri pierdute"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d mesaje noi"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 apel pierdut"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 mesaj nou"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Este %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 apel pierdut şi 1 mesaj necitit"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d apeluri pierdute şi 1 mesaj necitit"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 apel pierdut şi %d mesaje necitite"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Mod Personal activat"
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Dezactivaţi Oprire toate sunetele în setările Accesibilitate."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Прослушивание громкой музыки в течение продолжительного времени может привести к ухудшению слуха"
+msgstr "Прослушивание громкой музыки в течение продолжительного времени может привести к ухудшению слуха."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Медиа"
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Предупреждение"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Медиа"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Наушники"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Невозможно настроить громкость, если отключены все звуки. Звук можно включить в меню “Параметры специальных возможностей”."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Сейчас %d:%d после полудня."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Сейчас %d:%d до полудня."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "У вас есть пропущенные вызовы (%1$d) и непрочитанные сообщения (%2$d)."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "Пропущено вызовов: %d"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "Новых сообщений: %d"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 пропущенный вызов"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 новое сообщение"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Сейчас %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "Пропущено вызовов: 1, не прочитано сообщений: 1"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "Пропущено вызовов: %d, не прочитано сообщений: 1"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "Пропущено вызовов: 1, не прочитано сообщений: %d"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Личный режим включен."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Отключить в специальных возможностях параметр “Отключение всех звуков”."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Vysoká hlasitosť môže pri dlhodobom počúvaní poškodiť sluch"
+msgstr "Vysoká hlasitosť môže pri dlhodobom počúvaní poškodiť sluch."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Médium"
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Varovanie"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Médium"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Slúchadlá"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Keď sú vypnuté všetky zvuky, nedá sa upraviť hlasitosť. Zvuk môžete zapnúť v nastaveniach zjednodušenia ovládania."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Je %d:%d PM."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Je %d:%d AM."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Máte zmeškané hovory v počte %1$d a neprečítané správy v počte %2$d."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "Zmeškané hovory: %d"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "Nové správy: %d"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 zmeškaný hovor"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 nová správa"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Je %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 zmeškaný hovor a 1 neprečítaná správa"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "Zmeškané hovory v počte %d a 1 neprečítaná správa"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 zmeškaný hovor a neprečítané správy v počte %d"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Osobný režim je zapnutý."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Vypnite možnosť Vypnúť všetky zvuky v menu Nastavenia zjednodušenia ovládania."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Če glasno glasbo poslušate daljši čas, lahko to škoduje vašem sluhu"
+msgstr "Če glasno glasbo poslušate daljši čas, lahko to škoduje vašem sluhu."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Medij"
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Opozorilo"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Medij"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Slušalke"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Glasnosti ni mogoče prilagoditi, ko je zvok izključen. Pojdite v nastavitve dostopnosti in vklopite zvok."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Ura je %d:%d popoldne."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Ura je %d:%d dopoldne."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Imate %1$d zgrešenih klicev in %2$d neprebranih sporočil."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d neodgovorjenih klicev"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d novih sporočil"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 neodgovorjen klic"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 novo sporočilo"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Ura je %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 zgrešen klic in 1 neprebrano sporočilo"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d zgrešenih klicev in 1 neprebrano sporočilo"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 zgrešen klic in %d neprebranih sporočil"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Osebni način omogočen."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Onemogočite možnost Izklop vseh zvokov v meniju Nastavitve dostopnosti."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Velika jačina zvuka može da ošteti sluh ukoliko tako slušate duže vreme"
+msgstr "Velika jačina zvuka može da ošteti sluh ukoliko tako slušate duže vreme."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Mediji"
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Upozorenje"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Mediji"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Slušalice"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Nije moguće podesiti jačinu zvuka dok su svi zvukovi isključeni. Uključi zvuk tako što ćeš otići na podešavanja pristupanja."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Sad je %d:%d PM."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Sad je %d:%d AM."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Imaš propuštenih poziva: %1$d i nepročitanih poruka: %2$d."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d propuštenih poziva"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d nove/ih poruke/a"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 propušten poziv"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 nova poruka"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Sada je %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 propušten poziv 1 nepročitana poruka"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d propuštena/ih poziva i 1 nepročitana poruka"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 propušteni poziv i %d nepročitane/ih poruke/a"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Ličan režim je omogućen."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Onemogući opciju Isključi sve zvuke u Podešavanjima pristupačnosti."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Hög volym kan skada din hörsel om du lyssnar för länge"
+msgstr "Hög volym kan skada din hörsel om du lyssnar för länge."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Media"
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Varning"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Media"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Hörlurar"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Det går inte att justera volymen när alla ljud är avstängda. Du kan slå på ljudet i tillgänglighetsinställningarna."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Klockan är %d:%d PM."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Klockan är %d:%d AM."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Du har %1$d missade samtal och %2$d olästa meddelanden."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d missade samtal"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d nya meddelanden"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 missat samtal"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 nytt meddelande"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Klockan är %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 missat samtal och 1 oläst meddelande"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d missade samtal och 1 oläst meddelande"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 missat samtal och %d olästa meddelanden"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Privat läge aktiverat."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Inaktivera Stäng av allt ljud i Hjälpmedelsinställningarna."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Yüksek ses düzeyi, uzun süre dinlemeniz durumunda işitme duyunuza zarar verebilir"
+msgstr "Yüksek ses düzeyi, uzun süre dinlemeniz durumunda işitme duyunuza zarar verebilir."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Medya"
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Uyarı"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Medya"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Kulaklıklar"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Tüm sesler kapalıyken ses düzeyi ayarlanamıyor. Erişebilirlik ayarlarına giderek sesi açabilirsiniz."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Saat öğleden sonra %d:%d."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Saat öğleden önce %d:%d."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "%1$d cevapsız arama ve %2$d okunmamış mesajınız var."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d cevapsız çağrı"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d yeni mesaj"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 cevapsız arama"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 yeni mesaj"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Saat %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 cevapsız arama ve 1 okunmamış mesaj"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d cevapsız arama ve 1 okunmamış mesaj"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 cevapsız arama ve %d okunmamış mesaj"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Kişisel mod etkinleştirildi."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Erişilebilirlik ayarlarında Tüm sesleri kapat seçeneğini devre dışı bırakın."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Тривале прослуховування за високого рівня гучності може призвести до погіршення слуху"
+msgstr "Тривале прослуховування за високого рівня гучності може призвести до погіршення слуху."
+
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "Медіадані"
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "Попередження"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "Медіадані"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Навушники"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Неможливо відрегулювати гучність у разі вимкнення всіх звуків. Звуки можна ввімкнути, перейшовши до установок доступності."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Зараз %d:%d після полудня."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Зараз %d:%d до полудня."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Пропущених викликів: %1$d, непрочитаних повідомлень: %2$d."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "Пропущені виклики: %d"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "Нові повідомлення: %d"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 пропущений виклик"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 нове повідомлення"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "Зараз %1$d:%2$d."
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 пропущений виклик; 1 непрочитане повідомлення"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "Пропущених викликів: %d; 1 непрочитане повідомлення"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 пропущений виклик; непрочитаних повідомлень: %d"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Особистий режим увімкнено."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Вимкніть опцію «Вимкнути всі звуки» в установках доступності."
+
#ALL_LINGUAS= ar bg ca cs da de_DE el_GR en en_GB en_US es_ES fi fr_FR he hi hr hu id it_IT ja_JP ko_KR lt lv ms nl_NL no pl pt_PT ro ru_RU sk sl sr sv th tr_TR uk vi zh_CN zh_HK zh_TW
ALL_LINGUAS="ar bg ca cs da de_DE el_GR en en_GB en_US es_ES fi fr_FR he hi hr hu id it_IT ja_JP ko_KR lt lv ms nl_NL no pl pt_PT ro ru_RU sk sl sr sv th tr_TR uk vi zh_CN zh_HK zh_TW"
-source /etc/tizen-platform.conf
-
-XGETTEXT=${TZ_SYS_BIN}/xgettext
-MSGMERGE=${TZ_SYS_BIN}/msgmerge
+XGETTEXT=/usr/bin/xgettext
+MSGMERGE=/usr/bin/msgmerge
echo -n "Make ${PACKAGE}.pot "
if [ ! -e $POTFILES ] ; then
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-msgstr "Musiqani baland ovozda uzoq vaqt davomida tinglash eshitish a’zolaringizga zarar yetkazishi mumkin"
+msgstr "Musiqani baland ovozda uzoq vaqt davomida tinglash eshitish a’zolaringizga zarar yetkazishi mumkin."
msgid "IDS_COM_BODY_MEDIA"
msgstr "Media"
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "Quloqliklar"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "Barcha tovushlar o‘chirilganda, ovoz balandligini moslab bo‘lmaydi. Maxsus imkoniyatlar parametrlariga o‘tish orqali ovozni yoqishingiz mumkin."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "Bu %d:%d Tushdan so‘ng."
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "Bu %d:%d Tushdan avvalgi."
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "Sizda %1$d o‘tkazib yuborilgan qo‘ng‘iroq va %2$d o‘qilmagan xabar mavjud."
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%dta o‘tkazib yuborilgan qo‘ng‘iroq"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%dta yangi xabar"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1ta o‘tkazib yuborilgan qo‘ng‘iroq"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1ta yangi xabar"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "U %1$d:%2$d"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1ta o‘tkazib yuborilgan qo‘ng‘iroq va 1ta o‘qilmagan xabar"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%dta o‘tkazib yuborilgan qo‘ng‘iroq va 1ta o‘qilmagan xabar"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1ta o‘tkazib yuborilgan qo‘ng‘iroq va %dta o‘qilmagan xabar"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "Shaxsiy rejim yoqildi."
+
+msgid "IDS_ST_TPOP_DISABLE_TURN_OFF_ALL_SOUNDS_IN_ACCESSIBILITY_SETTINGS"
+msgstr "Maxsus imkoniyatlar parametrlarida Barcha ovozlarni o‘chirishni o‘chiring."
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
msgstr "如果长时间用高音量收听,可能会损坏听力"
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "媒体"
+
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "警告"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "媒体"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "耳机"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "所有声音关闭时无法调节音量。您可在辅助功能中打开声音。"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "下午 %d点 %d分"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "上午 %d点 %d分"
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "您有 %1$d 个未接来电和 %2$d 条未读消息"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d 个未接来电"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d 条新信息"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 个未接来电"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 条新信息"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "现在时间 %1$d:%2$02d"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 个未接来电和 1 条未读信息"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d 个未接来电和 1 条未读信息"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 个未接来电和 %d 条未读信息"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "个人模式已启用"
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
msgstr "長期聆聽高音量會損害您的聽力"
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "媒體"
+
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "警告"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "媒體"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "耳機"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "所有聲音關閉時無法調整音量。可前往協助工具設定中開啟聲音。"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "現在是下午 %d:%02d"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "現在是上午 %d:%02d"
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "您有 %1$d 個未接來電及 %2$d 封未讀取訊息"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d 個未接來電"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d 個新訊息"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 個未接來電"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 則新訊息"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "現在時間是 %1$d:%2$02d"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 個未接來電和 1 則未讀訊息"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d 個未接來電和 1 則未讀訊息"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 個未接來電和 %d 則未讀訊息"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "個人模式已啟用"
+
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "耳机"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "所有声音关闭时无法调节音量。您可在无障碍设置中打开声音"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "现在是下午%d:%02d"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "现在是上午%d:%02d"
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "您有 %1$d 个未接来电和 %2$d 条未读消息"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d 个未接来电"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d 条新信息"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 个未接来电"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 条新信息"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "现在时间 %1$d:%2$02d"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 个未接来电和 1 条未读信息"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d 个未接来电和 1 条未读信息"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 个未接来电和 %d 条未读信息"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "个人模式已启用"
+
msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
msgstr "長期聆聽過大音量會損害您的聽力"
+msgid "IDS_COM_BODY_MEDIA"
+msgstr "媒體"
+
msgid "IDS_COM_BODY_ANDROID"
msgstr "Android"
msgid "IDS_COM_BODY_WARNING"
msgstr "警告"
-msgid "IDS_COM_BODY_MEDIA"
-msgstr "媒體"
-
msgid "IDS_COM_OPT_HEADPHONES_ABB"
msgstr "耳機"
+msgid "IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"
+msgstr "所有音效關閉時無法調整音量。可前往協助工具設定開啟音效。"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_PM"
+msgstr "現在是下午 %d:%02d"
+
+msgid "IDS_TTS_BODY_IT_IS_PD_CPD_AM"
+msgstr "現在是上午 %d:%02d"
+
+msgid "IDS_LCKSCN_BODY_YOU_HAVE_P1SD_MISSED_CALLS_AND_P2SD_UNREAD_MESSAGEST_TTS"
+msgstr "您有 %1$d 通未接來電及 %2$d 封未讀取訊息"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_T_TTS"
+msgstr "%d 通未接來電"
+
+msgid "IDS_LCKSCN_BODY_PD_NEW_MESSAGES_T_TTS"
+msgstr "%d 個新訊息"
+
+msgid "IDS_TTS_BODY_1_MISSED_CALL_T_TTS"
+msgstr "1 通未接來電"
+
+msgid "IDS_TTS_BODY_1_NEW_MESSAGE_T_TTS"
+msgstr "1 則新訊息"
+
+msgid "IDS_LCKSCN_BODY_IT_IS_P1SD_CP2SD_T_TTS"
+msgstr "現在時間是 %1$d:%2$02d"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "1 通未接來電與 1 則未讀訊息"
+
+msgid "IDS_LCKSCN_BODY_PD_MISSED_CALLS_AND_1_UNREAD_MESSAGE_T_TTS"
+msgstr "%d 通未接來電與 1 則未讀訊息"
+
+msgid "IDS_LCKSCN_BODY_1_MISSED_CALL_AND_PD_UNREAD_MESSAGES_T_TTS"
+msgstr "1 通未接來電和 %d 則未讀訊息"
+
+msgid "IDS_ST_BODY_PERSONAL_MODE_ENABLED"
+msgstr "個人模式已啟用"
+
+++ /dev/null
-/*
- * org.tizen.volume
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#include <math.h>
-
-#include <Ecore.h>
-#include <Ecore_X.h>
-#include <utilX.h>
-#include <vconf.h>
-#include <ui-gadget.h>
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>
-#include <system_info.h>
-
-#include"_logic.h"
-#include "volume.h"
-#include "_util_log.h"
-#include "_util_efl.h"
-#include "_sound.h"
-
-#define STRBUF_SIZE 128
-#define PATHBUF_SIZE 256
-#define EMUL_STR "Emulator"
-
-enum {
- IDLELOCK_OFF = 0x0,
- IDLELOCK_ON,
- IDLELOCK_MAX,
-};
-
-/* _check_status() return value */
-enum{
- LOCK_AND_NOT_MEDIA = -0x1,
- UNLOCK_STATUS,
- LOCK_AND_MEIDA,
-};
-
-#ifndef VCONFKEY_SETAPPL_ACCESSIBILITY_TURN_OFF_ALL_SOUNDS
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_TURN_OFF_ALL_SOUNDS VCONFKEY_SETAPPL_PREFIX"/accessibility/turn_off_all_sounds"
-#endif
-
-int _cache_flush(void *data)
-{
- struct appdata *ad = (struct appdata *)data;
- retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n");
-
- Evas *evas = NULL;
-
- int file_cache = -1;
- int collection_cache = -1;
- int image_cache = -1;
- int font_cache = -1;
-
- evas = evas_object_evas_get(ad->win);
- retvm_if(evas == NULL, -1, "Evas is NULL\n");
-
- file_cache = edje_file_cache_get();
- collection_cache = edje_collection_cache_get();
- image_cache = evas_image_cache_get(evas);
- font_cache = evas_font_cache_get(evas);
-
- edje_file_cache_set(file_cache);
- edje_collection_cache_set(collection_cache);
- evas_image_cache_set(evas, 0);
- evas_font_cache_set(evas, 0);
-
- evas_image_cache_flush(evas);
- evas_render_idle_flush(evas);
- evas_font_cache_flush(evas);
-
- edje_file_cache_flush();
- edje_collection_cache_flush();
-
- edje_file_cache_set(file_cache);
- edje_collection_cache_set(collection_cache);
- evas_image_cache_set(evas, image_cache);
- evas_font_cache_set(evas, font_cache);
-
- return 0;
-}
-
-int _close_volume(void *data)
-{
- struct appdata *ad = (struct appdata *)data;
- retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n");
- retvm_if(ad->flag_deleting == EINA_TRUE, -1, "Closing volume\n");
-
- _D("start closing volume\n");
- ad->flag_deleting = EINA_TRUE;
-
- if(ad->flag_exclusive_grabed){
- _ungrab_key_new(ad);
- }
-
- if(ad->flag_top_positioni_grabed){
- _ungrab_key_new(ad);
- }
-
- if(ad->flag_shared_grabed){
- _ungrab_key_new(ad);
- }
-
- _grab_key_new(ad, ad->input_win, SHARED_GRAB);
-
- DEL_TIMER(ad->sutimer)
- DEL_TIMER(ad->lutimer)
- DEL_TIMER(ad->sdtimer)
- DEL_TIMER(ad->ldtimer)
- DEL_TIMER(ad->ptimer)
-
- _D("hide window\n");
- evas_object_hide(ad->win);
-
- appcore_flush_memory();
-
- ad->flag_deleting = EINA_FALSE;
- ad->flag_launching = EINA_FALSE;
- _D("end closing volume\n");
- return 0;
-}
-
-Eina_Bool popup_timer_cb(void *data)
-{
- _D("%s\n", __func__);
- _close_volume(data);
- return ECORE_CALLBACK_CANCEL;
-}
-
-Eina_Bool _lu_timer_cb(void *data)
-{
- int val = -1;
- struct appdata *ad = (struct appdata *)data;
- retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "Invalid argument: appdata is NULL\n");
- retvm_if(ad->win == NULL, ECORE_CALLBACK_CANCEL, "window is NULL");
- retvm_if(evas_object_visible_get(ad->win) == EINA_FALSE, ECORE_CALLBACK_CANCEL, "window is hide\n");
-
- DEL_TIMER(ad->stimer)
-
- _get_sound_level(ad->type, &val);
- if(val == 15){
- _D("already 15\n");
- return ECORE_CALLBACK_CANCEL;
- }
- _set_sound_level(ad->type, val +1 > ad->step ? ad->step : val + 1);
- _D("down, type(%d), step(%d) val[%d]\n", ad->type, ad->step, val+1);
- return ECORE_CALLBACK_RENEW;
-}
-
-Eina_Bool _su_timer_cb(void *data)
-{
- int val = -1;
- struct appdata *ad = (struct appdata *)data;
- retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "Invalid argument: appdata is NULL\n");
- retvm_if(ad->win == NULL, ECORE_CALLBACK_CANCEL, "window is NULL");
- retvm_if(evas_object_visible_get(ad->win) == EINA_FALSE, ECORE_CALLBACK_CANCEL, "window is hide\n");
-
- ecore_timer_interval_set(ad->sutimer, 0.1);
- DEL_TIMER(ad->stimer)
-
- _get_sound_level(ad->type, &val);
- if(val == 15){
- _D("already 15\n");
- return ECORE_CALLBACK_CANCEL;
- }
- _set_sound_level(ad->type, val +1 > ad->step ? ad->step : val + 1);
- _D("down, type(%d), step(%d) val[%d]\n", ad->type, ad->step, val+1);
- return ECORE_CALLBACK_RENEW;
-}
-
-Eina_Bool _ld_timer_cb(void *data)
-{
- int val = 0;
- struct appdata *ad = (struct appdata *)data;
- retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "Invalid argument: appdata is NULL\n");
- retvm_if(ad->win == NULL, ECORE_CALLBACK_CANCEL, "window is NULL");
- retvm_if(evas_object_visible_get(ad->win) == EINA_FALSE, ECORE_CALLBACK_CANCEL, "window is hide\n");
-
- DEL_TIMER(ad->stimer)
-
- _get_sound_level(ad->type, &val);
- if(val == 0){
- _D("already 0\n");
- return ECORE_CALLBACK_CANCEL;
- }
- _set_sound_level(ad->type, val -1 <= 0 ? 0 : val - 1);
- _D("down, type(%d), step(%d) val[%d]\n", ad->type, ad->step, val+1);
- return ECORE_CALLBACK_RENEW;
-}
-
-Eina_Bool _sd_timer_cb(void *data)
-{
- int val = 0;
- struct appdata *ad = (struct appdata *)data;
- retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "Invalid argument: appdata is NULL\n");
- retvm_if(ad->win == NULL, ECORE_CALLBACK_CANCEL, "window is NULL");
- retvm_if(evas_object_visible_get(ad->win) == EINA_FALSE, ECORE_CALLBACK_CANCEL, "window is hide\n");
-
- ecore_timer_interval_set(ad->sdtimer, 0.1);
- DEL_TIMER(ad->stimer)
-
- _get_sound_level(ad->type, &val);
- if(val == 0){
- _D("already 0\n");
- return ECORE_CALLBACK_CANCEL;
- }
- _set_sound_level(ad->type, val -1 <= 0 ? 0 : val - 1);
- _D("down, type(%d), step(%d) val[%d]\n", ad->type, ad->step, val+1);
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool _grab_top_position(void *data)
-{
- struct appdata *ad = (struct appdata *)data;
- retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "Invalid argument: appdata is NULL\n");
- _grab_key_new(ad, -1, TOP_POSITION_GRAB);
- return ECORE_CALLBACK_CANCEL;
-}
-
-Eina_Bool _volume_show(void *data)
-{
- _D("%s\n", __func__);
- int status = -1;
- int type = MM_ERROR_SOUND_VOLUME_CAPTURE_ONLY;
- int lock = IDLELOCK_ON;
- struct appdata *ad = (struct appdata *)data;
- retvm_if(ad == NULL, EINA_FALSE, "Invalid argument: appdata is NULL\n");
- retvm_if(ad->flag_deleting == EINA_TRUE, EINA_FALSE, "volume is closing\n");
-
- status = _check_status(&lock, &type);
- if(status != LOCK_AND_NOT_MEDIA && ad->win)
- {
- _init_mm_sound(ad);
- /* ungrab SHARED_GRAB */
- //_ungrab_key_new(ad);
-
- if(status == UNLOCK_STATUS)
- {
- _rotate_func(ad);
- elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_HIDE);
- evas_object_show(ad->win);
- if(syspopup_has_popup(ad->volume_bundle))
- syspopup_reset(ad->volume_bundle);
- //_grab_key_new(ad, -1, TOP_POSITION_GRAB);
- ecore_idler_add(_grab_top_position, ad);
- }
- else if(status == LOCK_AND_MEIDA)
- {
- _grab_key_new(ad, ad->input_win, EXCLUSIVE_GRAB);
- }
- ad->flag_launching = EINA_TRUE;
- _mm_func(ad);
- return EINA_TRUE;
- }
- else if(!ad->win)
- {
- /* recreate window */
- }
-
- _D("status == LOCK_AND_NOT_MEDIA\n");
- return EINA_FALSE;
-}
-
-static Eina_Bool _key_press_cb(void *data, int type, void *event)
-{
- int val=0, snd=0, vib=0;
- Ecore_Event_Key *ev = event;
- _D("%s %s\n", __func__, ev->keyname);
- int status = -1;
- int mtype = MM_ERROR_SOUND_VOLUME_CAPTURE_ONLY;
- int lock = IDLELOCK_ON;
- int is_turn_off_all_sounds = 0;
- int ret = -1;
- struct appdata *ad = (struct appdata *)data;
-
- status = _check_status(&lock, &mtype);
-
- retvm_if(ev == NULL, ECORE_CALLBACK_CANCEL, "Invalid arguemnt: event is NULL\n");
- retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "Invalid argument: appdata is NULL\n");
- retvm_if(ad->win == NULL, ECORE_CALLBACK_CANCEL, "Invalid argument: window is NULL\n");
-
- if(!strcmp(ev->keyname, KEY_CANCEL))
- {
- _D("CANCEL Key is pressed\n");
- _close_volume(ad);
- return ECORE_CALLBACK_CANCEL;
- }
-
- ret = vconf_get_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TURN_OFF_ALL_SOUNDS, &is_turn_off_all_sounds);
- if(is_turn_off_all_sounds)
- {
- if(status == LOCK_AND_NOT_MEDIA)
- return ECORE_CALLBACK_CANCEL;
- notification_status_message_post(_("IDS_PN_POP_UNABLE_TO_ADJUST_VOLUME_WHILE_ALL_SOUND_IS_OFF_YOU_CAN_TURN_ON_SOUND_BY_GOING_TO_ACCESSIBILITY_SETTINGS"));
- retvm_if(is_turn_off_all_sounds == EINA_TRUE, ECORE_CALLBACK_CANCEL,
- "VCONFKEY_SETAPPL_ACCESSIBILITY_TURN_OFF_ALL_SOUNDS is set, all sound is mute\n");
- }
-
- if(!ad->flag_launching)
- {
- if(_volume_show(data) != EINA_TRUE)
- {
- return ECORE_CALLBACK_CANCEL;
- }
- }
-
- if(ad->flag_touching == EINA_TRUE) {
- return ECORE_CALLBACK_CANCEL;
- }
-
- ad->flag_pressing = EINA_TRUE;
-
- DEL_TIMER(ad->ptimer)
- vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &snd);
- vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vib);
-
- /* If sound is set off, only RINGTONE, MEDIA types are able to change. */
- if(!snd && ad->type != VOLUME_TYPE_MEDIA && ad->type != VOLUME_TYPE_RINGTONE){
- if(vib)_play_vib(ad->sh);
- return ECORE_CALLBACK_CANCEL;
- }
-
- if (!strcmp(ev->keyname, KEY_VOLUMEUP)) {
- _get_sound_level(ad->type, &val);
- if (val == ad->step) {
- _set_sound_level(ad->type, ad->step);
- if(snd)_play_sound(ad->type, ad->sh);
- return ECORE_CALLBACK_CANCEL;
- }
- _set_sound_level(ad->type, val + 1);
- if(snd)_play_sound(ad->type, ad->sh);
- DEL_TIMER(ad->sutimer)
- DEL_TIMER(ad->sdtimer)
- DEL_TIMER(ad->ldtimer)
- ADD_TIMER(ad->sutimer, 0.5, _su_timer_cb, ad)
-
- _D("set volume %d -> [%d]\n", val, val+1);
- if(ad->sutimer == NULL){
- _D("error\n");
- }
- } else if (!strcmp(ev->keyname, KEY_VOLUMEDOWN)) {
- _get_sound_level(ad->type, &val);
- if (val == 0) {
- if(vib)_play_vib(ad->sh);
- return ECORE_CALLBACK_CANCEL;
- }
- _set_sound_level(ad->type, val - 1);
- if(snd)_play_sound(ad->type, ad->sh);
- DEL_TIMER(ad->sdtimer)
- DEL_TIMER(ad->sutimer)
- DEL_TIMER(ad->lutimer)
- ADD_TIMER(ad->sdtimer, 0.5, _sd_timer_cb, ad)
-
- _D("type (%d) set volume %d -> [%d]\n", ad->type, val, val-1);
- if(ad->sdtimer == NULL)
- _D("error\n");
-
- }
- _D("key press fini\n");
- return ECORE_CALLBACK_CANCEL;
-}
-
-static Eina_Bool _key_release_cb(void *data, int type, void *event)
-{
- Ecore_Event_Key *ev = event;
- struct appdata *ad = (struct appdata *)data;
- _D("%s %s\n", __func__, ev->keyname);
-
- retvm_if(ev == NULL, ECORE_CALLBACK_CANCEL, "Invalid arguemnt: event is NULL\n");
- retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "Invalid argument:appdata is NULL\n");
- retvm_if(ad->win == NULL, ECORE_CALLBACK_CANCEL, "Invalid argument: window is NULL\n");
-
- if(!strcmp(ev->keyname, KEY_CANCEL))
- {
- _D("CANCEL Key is released\n");
- _close_volume(ad);
- return ECORE_CALLBACK_CANCEL;
- }
-
- if (ad->flag_touching == EINA_TRUE) {
- return ECORE_CALLBACK_CANCEL;
- }
-
- if (!strcmp(ev->keyname, KEY_VOLUMEUP)) {
- _D("up key released and del timer\n");
- DEL_TIMER(ad->sutimer)
- DEL_TIMER(ad->lutimer)
- } else if (!strcmp(ev->keyname, KEY_VOLUMEDOWN)) {
- _D("down key released and del timer\n");
- DEL_TIMER(ad->sdtimer)
- DEL_TIMER(ad->ldtimer)
- }
-
- ad->flag_pressing = EINA_FALSE;
-
- DEL_TIMER(ad->ptimer)
-
- ADD_TIMER(ad->ptimer, 3.0, popup_timer_cb, ad)
-
- return ECORE_CALLBACK_CANCEL;
-}
-
-int _grab_key_new(struct appdata *ad, Ecore_X_Window _xwin, int grab_mode)
-{
- _D("%s\n", __func__);
- Ecore_X_Display *disp = NULL;
- Ecore_X_Window xwin = 0;
- int ret = -1;
-
- /* ALREADY GRAB check */
- switch(grab_mode)
- {
- case SHARED_GRAB : if(ad->flag_shared_grabed)return -1;
- break;
- case EXCLUSIVE_GRAB : if(ad->flag_exclusive_grabed)return -1;
- break;
- case TOP_POSITION_GRAB : if(ad->flag_top_positioni_grabed)return -1;
- break;
- }
-
- disp = ecore_x_display_get();
- retvm_if(disp == NULL, -1, "Failed to get display\n");
-
- if(_xwin == -1)
- {
- /* TOP_POSITION_GRAB */
- xwin = elm_win_xwindow_get(ad->win);
- retvm_if(xwin == 0, -1, "elm_win_xwindow_get() failed\n");
- }
- else
- xwin = _xwin;
-
- ret = utilx_grab_key(disp, xwin, KEY_VOLUMEDOWN, grab_mode);
- retvm_if(ret < 0, -1, "Failed to grab key down\n");
- retvm_if(ret == 1, -1, "Already grab\n");
-
- ret = utilx_grab_key(disp, xwin, KEY_VOLUMEUP, grab_mode);
- retvm_if(ret < 0, -1, "Failed to grab key up\n");
- retvm_if(ret == 1, -1, "Already grab\n");
-
- switch(grab_mode)
- {
- case SHARED_GRAB :
- ad->flag_shared_grabed = EINA_TRUE;
- break;
- case EXCLUSIVE_GRAB :
- ad->flag_exclusive_grabed = EINA_TRUE;
- break;
- case TOP_POSITION_GRAB :
- ad->flag_top_positioni_grabed = EINA_TRUE;
- break;
- }
-
- return 0;
-}
-
-int _ungrab_key_new(struct appdata *ad)
-{
- Ecore_X_Window xwin = 0;
- Ecore_X_Display *disp = NULL;
-
- retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n");
- retvm_if(ad->input_win == 0, -1, "Invalid argument: ad->win is NULL\n");
-
- xwin = elm_win_xwindow_get(ad->win);
- retvm_if(xwin == 0, -1, "Failed to get xwindow\n");
-
- disp = ecore_x_display_get();
- retvm_if(disp == NULL, -1, "Failed to get display\n");
-
- utilx_ungrab_key(disp, ad->input_win, KEY_VOLUMEUP);
- utilx_ungrab_key(disp, ad->input_win, KEY_VOLUMEDOWN);
- _D("key ungrabed\n");
-
- if(ad->flag_exclusive_grabed)
- ad->flag_exclusive_grabed = EINA_FALSE;
- else if(ad->flag_top_positioni_grabed)
- ad->flag_top_positioni_grabed = EINA_FALSE;
- else if(ad->flag_shared_grabed)
- ad->flag_shared_grabed = EINA_FALSE;
-
- return 0;
-}
-
-int _get_vconf_idlelock(void)
-{
- int ret = -1;
- int lock = IDLELOCK_OFF;
-
- ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &lock);
- retvm_if(ret < 0, -1, "Failed to get vconf %s\n",
- VCONFKEY_IDLE_LOCK_STATE);
- _D("idlelock vconf:%d\n", lock);
-
- return lock == VCONFKEY_IDLE_LOCK ? IDLELOCK_ON : IDLELOCK_OFF;
-}
-
-volume_type_t _get_volume_type(void)
-{
- int ret = MM_ERROR_NONE;
- volume_type_t type = -1;
-
- ret = mm_sound_volume_get_current_playing_type(&type);
- switch (ret) {
- case MM_ERROR_NONE:
- break;
- case MM_ERROR_SOUND_VOLUME_NO_INSTANCE:
- case MM_ERROR_SOUND_VOLUME_CAPTURE_ONLY:
- type = VOLUME_TYPE_RINGTONE;
- break;
- default:
- _D("Failed to get sound type(errno:%x)\n", ret);
- return -1;
- }
- if(type == VOLUME_TYPE_NOTIFICATION || type == VOLUME_TYPE_SYSTEM)
- type = VOLUME_TYPE_RINGTONE;
- return type;
-}
-
-int _check_status(int *lock, int *type)
-{
- *lock = _get_vconf_idlelock();
- *type = _get_volume_type();
- _D("lock(%d) type(%d)\n", *lock, *type);
-
- if (*type == MM_ERROR_SOUND_VOLUME_CAPTURE_ONLY
- || *type == MM_ERROR_SOUND_INTERNAL) {
- _D("Do not show by type\n");
- return -1;
- }
-
- if (*lock == IDLELOCK_ON && *type != VOLUME_TYPE_MEDIA) {
- _D("lock is set, not in media\n");
- return -1;
- }
-
- if (*lock == IDLELOCK_ON && *type == VOLUME_TYPE_MEDIA) {
- _D("lock is set, in media\n");
- return 1;
- }
- _D("unlock status, normal case\n");
- return 0;
-}
-
-void _starter_user_volume_key_vconf_changed_cb(keynode_t *key, void *data){
- _D("%s\n", __func__);
- int ret = EINA_FALSE;
- vconf_get_int(VCONFKEY_STARTER_USE_VOLUME_KEY, &ret);
- if(ret != 0)
- {
- _D("any other App grab volume hard key\n", __func__);
- _close_volume(data);
- vconf_set_int(VCONFKEY_STARTER_USE_VOLUME_KEY, 0);
- }
-}
-
-void _idle_lock_state_vconf_chnaged_cb(keynode_t *key, void *data){
- _close_volume(data);
-}
-
-int _app_create(struct appdata *ad)
-{
- _D("%s\n", __func__);
- int ret = 0;
- _init_svi(ad);
-
- /* create input_window */
- ad->input_win = _add_input_window();
- retvm_if(ad->input_win == 0, -1, "Failed to create input window\n");
-
- /* vconf changed callback */
- vconf_notify_key_changed(VCONFKEY_STARTER_USE_VOLUME_KEY,
- _starter_user_volume_key_vconf_changed_cb, ad);
-
- /* Lock screen status vconf changed callback */
- vconf_notify_key_changed(VCONFKEY_IDLE_LOCK_STATE,
- _idle_lock_state_vconf_chnaged_cb, ad);
-
- /* grab volume shared grab */
- ret = _grab_key_new(ad, ad->input_win, SHARED_GRAB);
-
- /* ecore event handler add once */
- if(ad->event_volume_down == NULL)
- ad->event_volume_down = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _key_press_cb, ad);
- if(ad->event_volume_up == NULL)
- ad->event_volume_up = ecore_event_handler_add(ECORE_EVENT_KEY_UP, _key_release_cb, ad);
-
- _init_mm_sound(ad);
-
- return ret;
-}
-
-int __utilx_ss_get_window_property(Display *dpy, Window win, Atom atom,
- Atom type, unsigned int *val,
- unsigned int len)
-{
- unsigned char *prop_ret = NULL;
- Atom type_ret = -1;
- unsigned long bytes_after = 0;
- unsigned long num_ret = -1;
- int format_ret = -1;
- unsigned int i = 0;
- int num = 0;
-
- prop_ret = NULL;
- if (XGetWindowProperty(dpy, win, atom, 0, 0x7fffffff, False,
- type, &type_ret, &format_ret, &num_ret,
- &bytes_after, &prop_ret) != Success)
- return -1;
-
- if (type_ret != type || format_ret != 32)
- num = -1;
- else if (num_ret == 0 || !prop_ret)
- num = 0;
- else {
- if (num_ret < len)
- len = num_ret;
- for (i = 0; i < len; i++) {
- val[i] = ((unsigned long *)prop_ret)[i];
- }
- num = len;
- }
-
- if (prop_ret)
- XFree(prop_ret);
-
- return num;
-}
-
-int _x_rotation_get(Display *dpy, void *data)
-{
- Window active_win = 0;
- Window root_win = 0;
- int rotation = -1;
- int ret = -1;
-
- Atom atom_active_win;
- Atom atom_win_rotate_angle;
-
- retvm_if(dpy == NULL, -1, "dpy is NULL\n");
- root_win = XDefaultRootWindow(dpy);
-
- atom_active_win = XInternAtom(dpy, "_NET_ACTIVE_WINDOW", False);
- ret = __utilx_ss_get_window_property(dpy, root_win, atom_active_win,
- XA_WINDOW,
- (unsigned int *)&active_win, 1);
-
- if(ret < 0)
- return ret;
-
- atom_win_rotate_angle = XInternAtom(dpy, "_E_ILLUME_ROTATE_ROOT_ANGLE", False);
- ret = __utilx_ss_get_window_property(dpy, root_win,
- atom_win_rotate_angle, XA_CARDINAL,
- (unsigned int *)&rotation, 1);
-
- if(ret != -1)
- return rotation;
-
- return -1;
-}
-
-int _volume_popup_resize(void *data, int angle)
-{
- int rotation = 0;
- int offx=0, offy=0;
- Evas_Coord minw = -1, minh = -1;
- Evas_Coord w = 0, h = 0;
- struct appdata *ad = (struct appdata *)data;
- retvm_if(ad->win == NULL, -1, "Invalid argument: window is NULL\n");
- retvm_if(ad->block_events == NULL, -1, "Invalid argument: notify is NULL\n");
-
- if(angle == -1)
- rotation = ad->angle;
- else
- rotation = angle;
-
- ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
-
- switch(rotation){
- case 90 :
- case 270 :
- evas_object_resize(ad->block_events, h, w);
- edje_object_size_min_get(ad->block_events, &minw, &minh);
- edje_object_size_min_restricted_calc(ad->block_events, &minw, &minh, minw, minh);
- offx = (h - minw) / 2;
- offy = (w - minh) / 5;
- break;
- case 0 :
- case 180 :
- default :
- evas_object_resize(ad->block_events, w, h);
- edje_object_size_min_get(ad->block_events, &minw, &minh);
- edje_object_size_min_restricted_calc(ad->block_events, &minw, &minh, minw, minh);
- offx = (w - minw) / 2;
- offy = (h - minh) / 5;
- break;
- }
- _D("w(%d) h(%d) offx(%d) offy(%d)\n", w, h, offx, offy);
- evas_object_move(ad->ly, offx, offy);
- return 1;
-}
-
-int _efl_rotate(Display *dpy, void *data)
-{
- int rotation = -1;
- struct appdata *ad = (struct appdata *)data;
-
- rotation = _x_rotation_get(dpy, ad);
-
- if(rotation == -1)
- rotation = 0;
-
- if(rotation >= 0){
- elm_win_rotation_set(ad->win, rotation);
- ad->angle = rotation;
- return _volume_popup_resize(data, rotation);
- }
-
- return 0;
-}
-
-int _rotate_func(void *data)
-{
- _D("%s\n", __func__);
- struct appdata *ad = (struct appdata *)data;
- Display *d = NULL;
- int ret = 0;
-
- retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n");
-
- d = XOpenDisplay(NULL);
- ret = _efl_rotate(d, ad);
- XCloseDisplay(d);
-
- return ret;
-}
-
-int myterm(bundle *b, void *data)
-{
- return 0;
-}
-
-int mytimeout(bundle *b, void *data)
-{
- return 0;
-}
-
-syspopup_handler handler = {
- .def_term_fn = myterm,
- .def_timeout_fn = mytimeout
-};
-
-void _set_level(int type)
-{
- int val = 0;
- _get_sound_level(type, &val);
- _set_sound_level(type, val);
- _D("type(%d) val(%d)\n", type, val);
-}
-
-static void _block_clicked_cb(void *data, Evas_Object *o, const char *emission, const char *source)
-{
- _close_volume(data);
-}
-
-Eina_Bool _slider_timer_cb(void *data)
-{
- double val = 0;
- struct appdata *ad = (struct appdata *)data;
- retvm_if(ad == NULL, 0, "Invalid argument: appdata is NULL\n");
- if (ad->sl) {
- val = elm_slider_value_get(ad->sl);
- val += 0.5;
- if ((int)val != 0) {
- _set_sound_level(ad->type, (int)val);
- }
- if (val <= 0.5) {
- elm_slider_value_set(ad->sl, 0);
- _set_sound_level(ad->type, 0);
- }
- return ECORE_CALLBACK_RENEW;
- }
- return ECORE_CALLBACK_CANCEL;
-}
-
-static void _slider_start_cb(void *data, Evas_Object *obj, void *event_info)
-{
- _D("%s\n", __func__);
- int snd= 0 ;
- struct appdata *ad = (struct appdata *)data;
- retm_if(ad == NULL, "Invalid argument: appdata is NULL\n");
-
- if (ad->flag_pressing == EINA_TRUE) {
- return;
- }
- ad->flag_touching = EINA_TRUE;
-
- DEL_TIMER(ad->ptimer)
-
- vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &snd);
- if(!snd){
- vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, EINA_TRUE);
- _set_icon(data, -1);
- }
-
- if (ad->lutimer || ad->ldtimer) {
- _D("return when long press is working\n");
- return;
- }
-
- ADD_TIMER(ad->stimer, 0.2, _slider_timer_cb, data)
-}
-
-static void _slider_changed_cb(void *data, Evas_Object *obj, void *event_info)
-{
- struct appdata *ad = (struct appdata *)data;
- retm_if(ad == NULL, "Invalid argument: appdata is NULL\n");
-
- if (ad->flag_pressing == EINA_TRUE) {
- return;
- }
- if (ad->lutimer || ad->ldtimer) {
- _D("return when long press is working\n");
- return;
- }
-}
-static void _slider_stop_cb(void *data, Evas_Object *obj, void *event_info)
-{
- _D("func\n");
- double val = 0;
- struct appdata *ad = (struct appdata *)data;
- retm_if(ad == NULL, "Invalid argument: appdata is NULL\n");
-
- if (ad->flag_pressing == EINA_TRUE) {
- return;
- }
- if (ad->lutimer || ad->ldtimer) {
- _D("return when long press is working\n");
- return;
- }
- DEL_TIMER(ad->stimer)
- if (ad->sl) {
- val = elm_slider_value_get(ad->sl);
- val += 0.5;
- _set_sound_level(ad->type, (int)val);
- }
- _play_sound(ad->type, ad->sh);
- ad->flag_touching = EINA_FALSE;
- ADD_TIMER(ad->ptimer, 3.0, popup_timer_cb, ad)
-}
-
-Eina_Bool _lu_warmup_timer_cb(void *data)
-{
- struct appdata *ad = (struct appdata *)data;
- retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "Invalid argument: appdata is NULL\n");
- ADD_TIMER(ad->lutimer, 0.0, _lu_timer_cb, ad)
- return ECORE_CALLBACK_CANCEL;
-}
-
-Eina_Bool _ld_warmup_timer_cb(void *data)
-{
- struct appdata *ad = (struct appdata *)data;
- retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "Invalid argument: appdata is NULL\n");
- ADD_TIMER(ad->ldtimer, 0.0, _ld_timer_cb, ad)
- return ECORE_CALLBACK_CANCEL;
-}
-
-void _init_press_timers(void *data)
-{
- struct appdata *ad = (struct appdata *)data;
- retm_if(ad == NULL, "Invalid argument: appdata is NULL\n");
- DEL_TIMER(ad->sdtimer)
- DEL_TIMER(ad->ldtimer)
- DEL_TIMER(ad->ldwarmtimer)
- DEL_TIMER(ad->sutimer)
- DEL_TIMER(ad->lutimer)
- DEL_TIMER(ad->luwarmtimer)
-}
-
-int _handle_bundle(bundle *b, struct appdata *ad)
-{
- const char *bval = NULL;
- retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n");
-
- bval = bundle_get_val(b, "LONG_PRESS");
- if (bval) {
- _D("val(%s)\n", bval);
-
- if (!strncmp(bval, "VOLUME_UP", strlen("LONG_PRESS"))) {
- _D("volume up long press\n");
- DEL_TIMER(ad->ptimer)
- ADD_TIMER(ad->luwarmtimer, 0.5, _lu_warmup_timer_cb, ad);
- } else if (!strncmp(bval, "VOLUME_DOWN", strlen("LONG_PRESS"))) {
- _D("volume down long press\n");
- DEL_TIMER(ad->ptimer)
- ADD_TIMER(ad->ldwarmtimer, 0.5, _ld_warmup_timer_cb, ad);
- } else {
- ADD_TIMER(ad->ptimer, 3.0, popup_timer_cb, ad)
- }
- } else {
- ADD_TIMER(ad->ptimer, 3.0, popup_timer_cb, ad)
- _init_press_timers(ad);
- }
- return 0;
-}
-
-static void _button_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
-{
- _D("%s\n", __func__);
- struct appdata *ad = (struct appdata *)data;
- retm_if(ad == NULL, "Invalid argument: appdata is NULL\n");
- char buf[PATHBUF_SIZE] = {0, };
- snprintf(buf, sizeof(buf), "%s/%s", IMAGEDIR, IMG_VOLUME_ICON_SETTINGS_PRESSED);
- elm_image_file_set(obj, buf, NULL);
-}
-
-static void _button_cb(void *data, Evas_Object *obj, void *event_info)
-{
- _D("%s\n", __func__);
- struct appdata *ad = (struct appdata *)data;
- retm_if(ad == NULL, "Invalid argument: appdata is NULL\n");
- char buf[PATHBUF_SIZE] = {0, };
- int ret = -1;
-
- snprintf(buf, sizeof(buf), "%s/%s", IMAGEDIR, IMG_VOLUME_ICON_SETTINGS);
- elm_image_file_set(obj, buf, NULL);
- if(evas_object_visible_get(ad->win)){
- DEL_TIMER(ad->ptimer)
- if(ecore_x_e_illume_quickpanel_state_get(
- ecore_x_e_illume_zone_get(elm_win_xwindow_get(ad->win))) != ECORE_X_ILLUME_QUICKPANEL_STATE_OFF)
- {
- _D("Quickpanel is hide\n");
- ecore_x_e_illume_quickpanel_state_send(
- ecore_x_e_illume_zone_get(elm_win_xwindow_get(ad->win)), ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
- }
- service_h svc;
- ret = service_create(&svc);
- if(ret != SERVICE_ERROR_NONE)
- {
- switch(ret)
- {
- case SERVICE_ERROR_INVALID_PARAMETER :
- _D("error : SERVICE_ERROR_INVALID_PARAMETER");
- break;
- case SERVICE_ERROR_OUT_OF_MEMORY :
- _D("error : SERVICE_ERROR_OUT_OF_MEMORY");
- break;
- default :
- _D("error : %d\n", ret);
- break;
- }
- }
- ret = service_set_package(svc, "setting-profile-efl");
-
- if(ret != SERVICE_ERROR_NONE)
- {
- switch(ret)
- {
- case SERVICE_ERROR_INVALID_PARAMETER :
- _D("error : SERVICE_ERROR_INVALID_PARAMETER");
- break;
- case SERVICE_ERROR_OUT_OF_MEMORY :
- _D("error : SERVICE_ERROR_OUT_OF_MEMORY");
- break;
- default :
- _D("error : %d\n", ret);
- break;
- }
- }
- ret = service_send_launch_request(svc, NULL, NULL);
- if(ret != SERVICE_ERROR_NONE)
- {
- switch(ret)
- {
- case SERVICE_ERROR_INVALID_PARAMETER :
- _D("error : SERVICE_ERROR_INVALID_PARAMETER");
- break;
- case SERVICE_ERROR_OUT_OF_MEMORY :
- _D("error : SERVICE_ERROR_OUT_OF_MEMORY");
- break;
- case SERVICE_ERROR_APP_NOT_FOUND :
- _D("error : SERVICE_ERROR_APP_NOT_FOUND");
- break;
- case SERVICE_ERROR_LAUNCH_REJECTED :
- _D("error : SERVICE_ERROR_LAUNCH_REJECTED");
- break;
- default :
- _D("error : %d\n", ret);
- break;
- }
- }
- _app_pause(ad);
-
- service_destroy(svc);
- }
-}
-static int _check_emul(void)
-{
- int is_emul = 0;
- char *info = NULL;
-
- if (system_info_get_value_string(SYSTEM_INFO_KEY_MODEL, &info) == 0) {
- if (info == NULL) return 0;
- if (!strncmp(EMUL_STR, info, strlen(info))) {
- is_emul = 1;
- }
- }
-
- if (info != NULL) free(info);
-
- return is_emul;
-}
-int _app_reset(bundle *b, void *data)
-{
- _D("%s\n", __func__);
- int ret = -1, status = -1, val = 0;
- int type = MM_ERROR_SOUND_VOLUME_CAPTURE_ONLY;
- int lock = IDLELOCK_ON;
- Evas_Object *win, *sl, *ic, *ic_settings;
- /* volume-app layout */
- Elm_Theme *th;
- Evas_Object *outer, *inner, *block;
- char buf[PATHBUF_SIZE] = {0, };
- struct appdata *ad = (struct appdata *)data;
- retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n");
-
- ad->noti_seen = EINA_FALSE;
- ad->flag_launching = EINA_FALSE;
- ad->flag_pressing = EINA_FALSE;
- ad->flag_touching = EINA_FALSE;
-
- status = _check_status(&lock, &type);
- ad->type = type;
- mm_sound_volume_get_value(type, (unsigned int*)(&val));
-
- if(ad->win == NULL) {
- win = _add_window(PACKAGE);
- retvm_if(win == NULL, -1, "Failed add window\n");
- _D("create window\n");
- ad->win = win;
- }
- else {
- _E("window already exist\n");
- return -1;
- }
-
- th = elm_theme_new();
- elm_theme_ref_set(th, NULL);
- elm_theme_extension_add(th, EDJ_APP);
-
- ad->flag_emul = _check_emul();
-#if USE_SETTING_ICON
- if(!ad->flag_emul)
- {
- block = _add_layout(win, EDJ_APP, GRP_VOLUME_BLOCKEVENTS);
- retvm_if(block == NULL, -1, "Failed to add block layout\n");
-
- edje_object_signal_callback_add(elm_layout_edje_get(block), "clicked", "*", _block_clicked_cb, ad);
-
- outer = _add_layout(win, EDJ_APP, GRP_VOLUME_LAYOUT);
- retvm_if(outer== NULL, -1, "Failed to add outer layout\n");
-
- inner = _add_layout(win, EDJ_APP, "popup_volumebar");
- retvm_if(inner == NULL, -1, "Failed to add inner layout\n");
-
- ad->block_events = block;
- ad->ly = outer;
-
- elm_object_part_content_set(outer, "elm.swallow.content", inner);
-
- sl = _add_slider(win, 0, ad->step, val);
- elm_object_theme_set(sl, th);
- evas_object_smart_callback_add(sl, "slider,drag,start", _slider_start_cb, ad);
- evas_object_smart_callback_add(sl, "changed", _slider_changed_cb, ad);
- evas_object_smart_callback_add(sl, "slider,drag,stop", _slider_stop_cb, ad);
-
- ic_settings = elm_icon_add(win);
- evas_object_size_hint_aspect_set(ic_settings, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
- elm_image_resizable_set(ic_settings, EINA_FALSE, EINA_FALSE);
- snprintf(buf, sizeof(buf), "%s/%s", IMAGEDIR, IMG_VOLUME_ICON_SETTINGS);
- _D("%s\n", buf);
- elm_image_file_set(ic_settings, buf, NULL);
- elm_object_part_content_set(inner, "elm.swallow.icon", ic_settings);
- evas_object_event_callback_add(ic_settings, EVAS_CALLBACK_MOUSE_DOWN, _button_mouse_down_cb, ad);
- evas_object_smart_callback_add(ic_settings, "clicked", _button_cb, ad);
- evas_object_show(ic_settings);
- ad->ic_settings = ic_settings;
-
- ad->sl = sl;
- elm_object_part_content_set(inner, "elm.swallow.content", sl);
-
- ic = elm_icon_add(win);
- evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
- elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);
- elm_object_part_content_set(ad->sl, "icon", ic);
- ad->ic = ic;
- _set_icon(ad, val);
- }
- else
- {
-#endif
- block = _add_layout(win, EDJ_APP, GRP_VOLUME_BLOCKEVENTS);
- retvm_if(block == NULL, -1, "Failed to add block layout\n");
-
- edje_object_signal_callback_add(elm_layout_edje_get(block), "clicked", "*", _block_clicked_cb, ad);
-
- outer = _add_layout(win, EDJ_APP, GRP_VOLUME_LAYOUT);
- retvm_if(outer == NULL, -1, "Failed to add outer layout\n");
-
- inner = _add_layout(win, EDJ_APP, GRP_VOLUME_CONTENT);
- retvm_if(inner == NULL, -1, "Failed to add inner layout\n");
-
- ad->block_events = block;
- ad->ly = outer;
-
- elm_object_part_content_set(outer, "elm.swallow.content", inner);
-
- sl = _add_slider(win, 0, ad->step, val);
- evas_object_smart_callback_add(sl, "slider,drag,start", _slider_start_cb, ad);
- evas_object_smart_callback_add(sl, "changed", _slider_changed_cb, ad);
- evas_object_smart_callback_add(sl, "slider,drag,stop", _slider_stop_cb, ad);
-
- ad->sl = sl;
- elm_object_part_content_set(inner, "elm.swallow.content", sl);
- evas_object_show(sl);
-
- ic = elm_icon_add(win);
- evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
- elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);
- elm_object_part_content_set(ad->sl, "icon", ic);
- ad->ic = ic;
- _set_icon(ad, val);
-#if USE_SETTING_ICON
- }
-#endif
-
-
- ret = syspopup_create(b, &handler, ad->win, ad);
- retvm_if(ret < 0, -1, "Failed to create syspopup\n");
- ad->volume_bundle = bundle_dup(b);
-
- return 0;
-}
-
-int _app_pause(struct appdata *ad)
-{
- _D("%s\n", __func__);
- _close_volume(ad);
- _cache_flush(ad);
- return 0;
-}
+++ /dev/null
-/*
- * org.tizen.volume
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __VOLUME_LOGIC_H__
-#define __VOLUME_LOGIC_H__
-
-#include "volume.h"
-#include <bundle.h>
-
-int _get_vconf_idlelock(void);
-volume_type_t _get_volume_type(void);
-int _close_volume(void *data);
-int _app_create(struct appdata *ad);
-int _app_pause(struct appdata *ad);
-int _rotate_func(void *data);
-int _app_reset(bundle *b, void *data);
-Eina_Bool popup_timer_cb(void *data);
-void _init_press_timers(void *data);
-int _check_status(int *lock, int *type);
-int _ungrab_key_new(struct appdata *ad);
-int _grab_key_new(struct appdata *ad, Ecore_X_Window _xwin, int grab_mode);
-
-#endif
-/* __VOLUME_LOGIC_H__ */
+++ /dev/null
-/*
- * org.tizen.volume
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#include <appcore-common.h>
-#include <mm_sound.h>
-#include <vconf.h>
-#include <svi.h>
-#include <feedback.h>
-
-#include "volume.h"
-#include "_util_log.h"
-#include "_logic.h"
-
-#define STRBUF_SIZE 64
-#define PATHBUF_SIZE 256
-
-int _set_sound_level(volume_type_t type, int val);
-int _get_sound_level(volume_type_t type, int * val);
-
-void _play_vib(int handle)
-{
- svi_play_vib(handle, SVI_VIB_OPERATION_VIBRATION);
-}
-
-void _play_sound(int type, int handle)
-{
- feedback_initialize();
-
- if (type == VOLUME_TYPE_MEDIA) {
-
- } else {
- feedback_play(FEEDBACK_PATTERN_VOLUME_KEY);
- }
- feedback_deinitialize();
-}
-
-int _init_svi(void *data)
-{
- int ret = -1, handle = -1;
-
- struct appdata *ad = (struct appdata *)data;
- retvm_if(ad == NULL, -1, "Invaild argument: appdata is NULL\n");
-
- ret = svi_init(&handle);
- if (ret != SVI_SUCCESS) {
- _E("Failed to init svi\n");
- svi_fini(handle);
- return -1;
- }
- ad->sh = handle;
- return 0;
-}
-
-int _set_slider_value(void *data, int val)
-{
- struct appdata *ad = (struct appdata *)data;
- retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n");
-
- if (ad->flag_touching == EINA_TRUE) {
- return 0;
- }
- if (ad->sl) {
- elm_slider_min_max_set(ad->sl, 0, ad->step);
- elm_slider_value_set(ad->sl, val);
- }
-
- return 0;
-}
-
-int _set_icon(void *data, int val)
-{
- int snd=0, vib=0;
- char *img = NULL;
- struct appdata *ad = (struct appdata *)data;
- retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n");
-
- system_audio_route_device_t device = 0;
- mm_sound_route_get_playing_device(&device);
-
- vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &snd);
- vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vib);
-
- switch(ad->type){
- case VOLUME_TYPE_RINGTONE:
- img = IMG_VOLUME_ICON;
- break;
- case VOLUME_TYPE_MEDIA:
- if(device == SYSTEM_AUDIO_ROUTE_PLAYBACK_DEVICE_EARPHONE)
- img = IMG_VOLUME_ICON_HEADPHONE;
- else
- img = IMG_VOLUME_ICON_MEDIA;
- break;
- case VOLUME_TYPE_CALL:
- img = IMG_VOLUME_ICON_CALL;
- break;
- default:
- img = IMG_VOLUME_ICON;
- break;
- }
- if (ad->ic ) {
- elm_image_file_set(ad->ic, EDJ_APP, img);
- }
- return 1;
-}
-
-void _set_device_warning(void *data, int val, int device)
-{
- struct appdata *ad = (struct appdata *)data;
- retm_if(ad == NULL, "Invalid argument: appdata is NULL\n");
-
- switch (device) {
- case SYSTEM_AUDIO_ROUTE_PLAYBACK_DEVICE_EARPHONE:
- if (val >= 10 && ad->type == VOLUME_TYPE_MEDIA) {
- if(ad->noti_seen == EINA_FALSE){
- ad->noti_seen = EINA_TRUE;
- notification_status_message_post(T_(IDS_WARNING_MSG));
- }
- }
- else {
- ad->noti_seen = EINA_FALSE;
- }
- break;
- default:
- ad->noti_seen = EINA_FALSE;
- break;
- }
-}
-
-int _get_title(volume_type_t type, char *label, int size)
-{
- char *text = NULL;
-
- switch (type) {
- case VOLUME_TYPE_SYSTEM:
- text = S_("IDS_COM_BODY_SYSTEM");
- break;
- case VOLUME_TYPE_NOTIFICATION:
- text = S_("IDS_COM_HEADER_NOTIFICATION");
- break;
- case VOLUME_TYPE_ALARM:
- text = S_("IDS_COM_BODY_ALARM");
- break;
- case VOLUME_TYPE_RINGTONE:
- text = S_("IDS_COM_BODY_RINGTONE");
- break;
- case VOLUME_TYPE_MEDIA:
- text = T_("IDS_COM_BODY_MEDIA");
- break;
- case VOLUME_TYPE_CALL:
- text = S_("IDS_COM_BODY_CALL");
- break;
- case VOLUME_TYPE_EXT_ANDROID:
- /* this enum is different from mm_sound.h and avsys-audio.h */
- text = T_("IDS_COM_BODY_ANDROID");
- break;
- case VOLUME_TYPE_EXT_JAVA:
- text = T_("IDS_COM_BODY_JAVA");
- break;
- default:
- text = S_("IDS_COM_BODY_SYSTEM");
- break;
- }
- snprintf(label, size, "%s", text);
- _D("get title(%s)\n", label);
-
- return 0;
-}
-
-int _get_step(int type)
-{
- int ret = -1, step = 0;
- ret = mm_sound_volume_get_step(type, &step);
- retvm_if(ret < 0, -1, "Failed to get step\n");
- step -= 1;
- return step;
-}
-
-void _mm_func(void *data)
-{
- _D("%s\n", __func__);
- int val = 0;
- system_audio_route_device_t device = 0;
- struct appdata *ad = (struct appdata *)data;
- retm_if(ad == NULL, "Invalid argument: appdata is NULL\n");
-
- retm_if(ad->win == NULL, "Failed to get window\n");
-
- /* function could be activated when window exists */
- ad->type = _get_volume_type();
- ad->step = _get_step(ad->type);
- mm_sound_route_get_playing_device(&device);
- mm_sound_volume_get_value(ad->type, (unsigned int*)(&val));
-
- /* apply earphone safety concept */
- if(ad->device != device) {
- if(device == SYSTEM_AUDIO_ROUTE_PLAYBACK_DEVICE_EARPHONE && val > 9) {
- val = 9;
- _set_sound_level(ad->type, val);
- }
- ad->device = device;
- }
- _set_device_warning(ad, val, device);
- _set_slider_value(ad, val);
- _set_icon(ad, val);
- _D("type(%d) val(%d)\n", ad->type, val);
-}
-
-void _mm_system_cb(void *data)
-{
- _mm_func(data);
-}
-
-void _mm_notification_cb(void *data)
-{
- _mm_func(data);
-}
-
-void _mm_alarm_cb(void *data)
-{
- _mm_func(data);
-}
-
-void _mm_ringtone_cb(void *data)
-{
- _mm_func(data);
-}
-
-void _mm_media_cb(void *data)
-{
- _mm_func(data);
-}
-
-void _mm_call_cb(void *data)
-{
- _mm_func(data);
-}
-
-void _mm_ext_android_cb(void *data)
-{
- _mm_func(data);
-}
-
-void _mm_ext_java_cb(void *data)
-{
- _mm_func(data);
-}
-
-int _get_volume_type_max(void)
-{
- return VOLUME_TYPE_MAX;
-}
-
-int _init_mm_sound(void *data)
-{
- struct appdata *ad = (struct appdata *)data;
- retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n");
-
- mm_sound_volume_add_callback(VOLUME_TYPE_SYSTEM,
- _mm_system_cb, (void *)ad);
- mm_sound_volume_add_callback(VOLUME_TYPE_NOTIFICATION,
- _mm_notification_cb, (void *)ad);
- mm_sound_volume_add_callback(VOLUME_TYPE_ALARM,
- _mm_alarm_cb, (void *)ad);
- mm_sound_volume_add_callback(VOLUME_TYPE_RINGTONE,
- _mm_ringtone_cb, (void *)ad);
- mm_sound_volume_add_callback(VOLUME_TYPE_MEDIA,
- _mm_media_cb, (void *)ad);
- mm_sound_volume_add_callback(VOLUME_TYPE_CALL,
- _mm_call_cb, (void *)ad);
- mm_sound_volume_add_callback(VOLUME_TYPE_EXT_ANDROID,
- _mm_ext_android_cb, (void *)ad);
- mm_sound_volume_add_callback(VOLUME_TYPE_EXT_JAVA,
- _mm_ext_java_cb, (void *)ad);
-
- return 0;
-}
-
-int _get_sound_level(volume_type_t type, int *val)
-{
- mm_sound_volume_get_value(type, (unsigned int*)val);
- return 0;
-}
-
-int _set_sound_level(volume_type_t type, int val)
-{
- mm_sound_volume_set_value(type, val);
- return 0;
-}
+++ /dev/null
-/*
- * org.tizen.volume
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __VOLUME_SOUND_H__
-#define __VOLUME_SOUND_H__
-
-#include <mm_sound.h>
-
-int _init_svi();
-int _init_mm_sound(void *data);
-int _get_volume_type_max(void);
-int _get_title(volume_type_t type, char *label, int size);
-int _get_sound_level(volume_type_t type, int *val);
-int _get_step(int type);
-void _play_vib(int handle);
-void _play_sound(int type, int handle);
-void _mm_func(void *data);
-int _set_icon(void * data, int val);
-int _set_sound_level(volume_type_t type, int val);
-
-#endif
-/* __VOLUME_SOUND_H__ */
+++ /dev/null
-/*
- * org.tizen.volume
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#include <Ecore.h>
-#include <Ecore_X.h>
-#include <system_info.h>
-
-#include "volume.h"
-#include "_util_log.h"
-
-Ecore_X_Window _add_input_window(void)
-{
- Ecore_X_Window win = 0;
- win = ecore_x_window_input_new(0, 0, 0, 1, 1);
- if(win){
- ecore_x_event_mask_unset(win, ECORE_X_EVENT_MASK_NONE);
- ecore_x_icccm_title_set(win, "volumekey-input-window");
- ecore_x_netwm_name_set(win, "volumekey-input-window");
- ecore_x_netwm_pid_set(win, getpid());
- return win;
- }
- else{
- _E("%s() is failed\n", __func__);
- return 0;
- }
-}
-
-Evas_Object *_add_window(const char *name)
-{
- Evas_Object *eo = NULL;
- int w = -1, h = -1;
- eo = elm_win_add(NULL, name, ELM_WIN_NOTIFICATION);
- if (eo) {
- elm_win_title_set(eo, name);
- elm_win_borderless_set(eo, EINA_TRUE);
- elm_win_alpha_set(eo, EINA_TRUE);
- ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
- if(w == -1 || h == -1){
- _E("ecore_x_window_seiz_get() is failed\n");
- return NULL;
- }
- evas_object_resize(eo, w, h);
- }
- return eo;
-}
-
-Evas_Object *_add_slider(Evas_Object *parent, int min, int max, int val)
-{
- Evas_Object *sl = NULL;
- sl = elm_slider_add(parent);
- retvm_if(sl == NULL, NULL, "Failed to add slider\n");
- elm_slider_horizontal_set(sl, EINA_TRUE);
- elm_slider_indicator_show_set(sl, EINA_TRUE);
- elm_slider_indicator_format_set(sl, "%.0f");
- evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
- elm_slider_min_max_set(sl, min, max);
- elm_slider_value_set(sl, val);
- return sl;
-}
-
-Evas_Object *_add_layout(Evas_Object *parent, const char *file,
- const char *group)
-{
- Evas_Object *eo = NULL;
- int r = -1;
-
- retvm_if(parent == NULL, NULL, "Invalid argument: parent is NULL\n");
- retvm_if(file == NULL, NULL, "Invalid argument: file is NULL\n");
- retvm_if(group == NULL, NULL, "Invalid argument: group is NULL\n");
-
- eo = elm_layout_add(parent);
- retvm_if(eo == NULL, NULL, "Failed to add layout\n");
-
- r = elm_layout_file_set(eo, file, group);
- if (!r) {
- _E("Failed to set file[%s]\n", file);
- evas_object_del(eo);
- return NULL;
- }
-
- evas_object_size_hint_weight_set(eo,
- EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_show(eo);
- return eo;
-}
-
-Evas_Object *_add_button(Evas_Object *parent, const char *style, const char *text)
-{
- Evas_Object *bt = NULL;
- bt = elm_button_add(parent);
- retvm_if(bt == NULL, NULL, "Failed to add button\n");
- if (style) elm_object_style_set(bt, style);
- elm_object_focus_set(bt, EINA_FALSE);
- elm_object_text_set(bt, text);
- evas_object_show(bt);
- return bt;
-}
-
-Evas_Object *_add_popup(Evas_Object *parent, const char *style)
-{
- Evas_Object *pu = NULL;
- pu = elm_popup_add(parent);
- retvm_if(pu == NULL, NULL, "[Error] Failed to add popup\n");
- evas_object_size_hint_weight_set(pu, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- if (style) elm_object_style_set(pu, style);
- evas_object_show(pu);
- return pu;
-}
-Evas_Object *_add_label(Evas_Object *parent, const char *style, const char *text)
-{
- Evas_Object *lb = NULL;
- lb = elm_label_add(parent);
- retvm_if(lb == NULL, NULL, "Failed to add label\n");
- elm_object_style_set(lb, style);
- evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_label_line_wrap_set(lb, ELM_WRAP_MIXED);
- elm_object_text_set(lb, text);
- return lb;
-}
-
+++ /dev/null
-/*
- * org.tizen.volume
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __VOLUME_UTIL_EFL_H__
-#define __VOLUME_UTIL_EFL_H__
-
-#include <Elementary.h>
-
-Ecore_X_Window _add_input_window(void);
-Evas_Object *_add_window(const char *name);
-Evas_Object *_add_slider(Evas_Object *parent, int min, int max, int val);
-Evas_Object *_add_layout(Evas_Object *parent, const char *file, const char *group);
-Evas_Object *_add_button(Evas_Object *parent, const char *style, const char *text);
-Evas_Object *_add_popup(Evas_Object *parent, const char *style);
-Evas_Object *_add_label(Evas_Object *parent, const char *style, const char *text);
-#endif
-/* __VOLUME_UTIL_EFL_H__ */
--- /dev/null
+/*
+ * Copyright (c) 2009-2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <appcore-common.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <feedback.h>
+#include <bluetooth.h>
+#include <bluetooth_internal.h>
+//#include <bluetooth_extention.h>
+
+#include "main.h"
+#include "_util_log.h"
+#include "view.h"
+#include "control.h"
+#include "sound.h"
+#include "x_event.h"
+#include "timer.h"
+
+static void _bt_display_bt_volume_view(sound_type_e sound_type, int sound, int vibration, bool bt_opened);
+static void _bt_volume_changed_cb(int volume, void *user_data);
+static void _bt_state_changed_cb(int result, bool opened, void *user_data);
+static int _bt_register_changed_cb(void);
+static int _bt_unregister_changed_cb(void);
+
+int bt_get_bt_volume(void)
+{
+ int ret = BT_ERROR_NONE;
+ int bt_vol = 0;
+
+ ret = bt_ag_get_speaker_gain(&bt_vol);
+ if (ret != BT_ERROR_NONE)
+ {
+ _E("bt_ag_get_speaker_gain Failed");
+ return -1;
+ }
+ _D("bt vol: %d", bt_vol);
+ return bt_vol;
+}
+
+void bt_init_sco(void)
+{
+ _D("SCO volume initialize");
+ if (BT_ERROR_NONE != bt_initialize())
+ _E("BT initialize failed");
+
+ if (_bt_register_changed_cb() != BT_ERROR_NONE)
+ _E("volume bt register changed cb failed");
+}
+
+void bt_deinit_sco(void)
+{
+ _D("SCO volume Deinitialize");
+ if (_bt_unregister_changed_cb() != BT_ERROR_NONE)
+ _E("volume bt Unregister changed cb failed");
+
+ if (BT_ERROR_NONE != bt_deinitialize())
+ _E("BT Deinitialize failed");
+}
+
+static void _bt_display_bt_volume_view(sound_type_e sound_type, int sound, int vibration, bool bt_opened)
+{
+ if (VOLUME_ERROR_OK != volume_view_window_show())
+ _E("Failed to show volume window");
+
+ /*if (VOLUME_ERROR_OK != volume_x_input_event_register())
+ _E("Failed to add x input event handler");*/
+
+ volume_control_check_syspopup();
+
+ volume_control_check_once();
+
+ volume_view_volume_icon_set(sound_type, sound, vibration, bt_opened);
+
+ if (VOLUME_ERROR_OK != volume_register_shape_timer())
+ _E("Failed to register shape timer");
+}
+
+static void _bt_volume_changed_cb(int volume, void *user_data)
+{
+ bool bt_opened = false;
+ int error = 0;
+ int status = 0;
+ int sound = 0;
+ int lock = 1;
+ int vibration = 0;
+ sound_type_e sound_type = 0;
+ _D("BT VOLUME is changed");
+
+ status = volume_control_check_status(&lock, &sound_type);
+ _D("status: %d, lock: %d, sound type : %d", status, lock, sound_type);
+
+ sound = volume_sound_vconf_status_get(TYPE_VCONF_SOUND_STATUS);
+ _D("sound status : %d", sound);
+
+ error = bt_ag_is_sco_opened(&bt_opened);
+ if (error != BT_ERROR_NONE)
+ _E("bt_ag_is_sco_opened return [%d]", error);
+ _D("BT state %d", bt_opened);
+
+ if (bt_opened == true && sound_type == SOUND_TYPE_CALL)
+ {
+ _bt_display_bt_volume_view(sound_type, sound, vibration, bt_opened);
+ if (VOLUME_ERROR_OK != volume_view_slider_value_set(volume))
+ _E("Failed to set slider value");
+
+ volume_timer_add(3.0, TYPE_TIMER_BT);
+ }
+}
+
+static void _bt_state_changed_cb(int result, bool opened, void *user_data)
+{
+ int status = 0;
+ int sound = 0;
+ sound_type_e sound_type = 0;
+ int lock = 0;
+
+ _D("SCO opened [%s]", opened ? "YES" : "NO");
+
+ status = volume_control_check_status(&lock, &sound_type);
+ _D("status: %d, lock: %d, sound type : %d", status, lock, sound_type);
+
+ sound = volume_sound_vconf_status_get(TYPE_VCONF_SOUND_STATUS);
+ _D("sound status : %d", sound);
+
+ if (sound_type == SOUND_TYPE_CALL)
+ {
+ volume_control_show_view(status, sound_type, sound, opened);
+ volume_timer_add(3.0, TYPE_TIMER_BT);
+ }
+
+}
+
+static int _bt_register_changed_cb(void)
+{
+ int ret = 0;
+
+ ret = bt_audio_initialize();
+ if (ret != BT_ERROR_NONE)
+ {
+ _E("bt audio initialize failed");
+ return -1;
+ }
+
+ ret = bt_ag_set_speaker_gain_changed_cb(_bt_volume_changed_cb, NULL);
+ if (ret != BT_ERROR_NONE)
+ {
+ _E("register bt volume changed callback failed");
+ return -1;
+ }
+
+ ret = bt_ag_set_sco_state_changed_cb(_bt_state_changed_cb, NULL);
+ if (ret != BT_ERROR_NONE)
+ _E("register bt state changed callback failed");
+
+ return 0;
+}
+
+static int _bt_unregister_changed_cb(void)
+{
+ int ret = 0;
+
+ ret = bt_audio_deinitialize();
+ if (ret != BT_ERROR_NONE) {
+ _E("bt audio initialize failed");
+ return -1;
+ }
+
+ ret = bt_ag_unset_speaker_gain_changed_cb();
+ if (ret != BT_ERROR_NONE) {
+ _E("register bt volume changed callback failed");
+ return -1;
+ }
+
+ ret = bt_ag_unset_sco_state_changed_cb();
+ if (ret != BT_ERROR_NONE)
+ _E("register bt state changed callback failed");
+
+ return 0;
+}
+
--- /dev/null
+/*
+ * Copyright (c) 2009-2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <app_manager.h>
+#include <bluetooth.h>
+#include <bluetooth_internal.h>
+#include <app.h>
+//#include <bluetooth_extention.h>
+
+#include "main.h"
+#include "_util_efl.h"
+#include "_util_log.h"
+#include "view.h"
+#include "control.h"
+#include "sound.h"
+#include "timer.h"
+#include "x_event.h"
+#include "key_event.h"
+#include "bt.h"
+
+#define VCONF_KEY_FMRADIO_RECORDING "memory/private/Sound/FMRadioRecording"
+
+struct _control_s_info{
+ bundle *volume_bundle;
+ Ecore_Event_Handler *handler_qp_state;
+ Ecore_Timer *shape_timer;
+
+ Eina_Bool is_deleting;
+ Eina_Bool is_launching;
+ Eina_Bool is_new;
+ Eina_Bool is_warning_visible;
+ Eina_Bool reset_once;
+ Eina_Bool show_once;
+
+ int current_angle;
+ int viewport_width;
+ int viewport_height;
+
+ sound_type_e sound_type_at_show;
+};
+static struct _control_s_info control_info = {
+ .volume_bundle = NULL,
+ .handler_qp_state = NULL,
+ .shape_timer = NULL,
+
+ .is_deleting = EINA_FALSE,
+ .is_launching = EINA_FALSE,
+ .is_new = EINA_FALSE,
+ .is_warning_visible = EINA_FALSE,
+ .reset_once = EINA_FALSE,
+ .show_once = EINA_FALSE,
+
+ .current_angle = 0,
+ .viewport_width = 0,
+ .viewport_height= 0,
+
+ .sound_type_at_show = SOUND_TYPE_RINGTONE,
+};
+
+static int _myterm(bundle *b, void *data);
+static int _mytimeout(bundle *b, void *data);
+static void _notify_pm_lcdoff_cb(keynode_t * node, void *data);
+static void _idle_lock_state_vconf_changed_cb(keynode_t *key, void *data);
+static void _starter_user_volume_key_vconf_changed_cb(keynode_t *key, void *data);
+static Eina_Bool _shape_cb(void *data);
+static Eina_Bool _idler_top_position_grab(void *data);
+static void _control_set_window_rotation(Evas_Object *win);
+static void _rotate_changed_cb(void *data, Evas_Object *obj, void *event_info);
+
+bundle* volume_control_reset_get_bundle(void)
+{
+ return control_info.volume_bundle;
+}
+
+Eina_Bool volume_control_get_is_deleting(void)
+{
+ return control_info.is_deleting;
+}
+
+Eina_Bool volume_control_get_is_launching(void)
+{
+ return control_info.is_launching;
+}
+
+int volume_control_get_current_angle(void)
+{
+ return control_info.current_angle;
+}
+
+sound_type_e volume_control_get_sound_type_at_show(void)
+{
+ return control_info.sound_type_at_show;
+}
+
+int volume_control_get_viewport_height()
+{
+ return control_info.viewport_height;
+}
+
+int volume_control_get_viewport_width()
+{
+ return control_info.viewport_width;
+}
+
+Eina_Bool volume_control_viewport_is_warning_visible()
+{
+ return control_info.is_warning_visible;
+}
+
+volume_error_e volume_control_cache_flush(void)
+{
+ Evas_Object *win = volume_view_win_get();
+ retv_if(win == NULL, VOLUME_ERROR_FAIL);
+
+ Evas *evas = NULL;
+ int file_cache = -1;
+ int collection_cache = -1;
+ int image_cache = -1;
+ int font_cache = -1;
+
+ evas = evas_object_evas_get(win);
+ retv_if(!evas, VOLUME_ERROR_FAIL);
+
+ file_cache = edje_file_cache_get();
+ collection_cache = edje_collection_cache_get();
+ image_cache = evas_image_cache_get(evas);
+ font_cache = evas_font_cache_get(evas);
+
+ edje_file_cache_set(file_cache);
+ edje_collection_cache_set(collection_cache);
+ evas_image_cache_set(evas, 0);
+ evas_font_cache_set(evas, 0);
+
+ evas_image_cache_flush(evas);
+ evas_render_idle_flush(evas);
+ evas_font_cache_flush(evas);
+
+ edje_file_cache_flush();
+ edje_collection_cache_flush();
+
+ edje_file_cache_set(file_cache);
+ edje_collection_cache_set(collection_cache);
+ evas_image_cache_set(evas, image_cache);
+ evas_font_cache_set(evas, font_cache);
+
+ return VOLUME_ERROR_OK;
+}
+
+/* rotation event callback func. */
+volume_error_e volume_control_app_launch_with_bundle(const char *op_type, const char *operation, const char *pkgname)
+{
+ app_control_h app_control;
+ int ret = 0;
+
+ ret = app_control_create(&app_control);
+ if (ret != 0) {
+ _E("Failed to create app control");
+ return VOLUME_ERROR_FAIL;
+ }
+
+ ret = app_control_set_app_id(app_control, pkgname);
+ if (ret != 0)
+ {
+ _E("Failed to set appid");
+ app_control_destroy(app_control);
+ return VOLUME_ERROR_FAIL;
+ }
+
+ ret = app_control_add_extra_data(app_control, op_type, operation);
+ if (ret != 0)
+ {
+ _E("Failed to add extra data");
+ app_control_destroy(app_control);
+ return VOLUME_ERROR_FAIL;
+ }
+
+ ret = app_control_send_launch_request(app_control, NULL, NULL);
+ _D("launch app with service : [%s][%d]", pkgname, ret);
+
+ app_control_destroy(app_control);
+
+ return VOLUME_ERROR_OK;
+}
+
+int volume_control_get_vconf_idlelock(void)
+{
+ int lock = IDLELOCK_OFF;
+ int pm_state = VCONFKEY_PM_STATE_NORMAL;
+
+ /* Check Idle-Lock */
+ if(vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &lock) < 0)
+ {
+ _E("Failed to get vconfkey : VCONFKEY_IDLE_LOCK_STATE");
+ return IDLELOCK_ERROR;
+ }
+ _D("idlelock vconf : %d", lock);
+
+ /* Check PM state */
+ if(vconf_get_int(VCONFKEY_PM_STATE, &pm_state) < 0)
+ {
+ _E("Failed to get vconfkey : VCONFKEY_PM_STATE");
+ return IDLELOCK_ERROR;
+ }
+ _D("PM STATE vconf : %d", pm_state);
+
+ return (lock == VCONFKEY_IDLE_LOCK ||
+ pm_state == VCONFKEY_PM_STATE_LCDOFF ||
+ pm_state == VCONFKEY_PM_STATE_SLEEP
+ ) ? IDLELOCK_ON : IDLELOCK_OFF;
+}
+
+
+int volume_control_check_status(int *lock, sound_type_e *sound_type)
+{
+ *lock = volume_control_get_vconf_idlelock();
+ *sound_type = volume_sound_sound_manager_type_get();
+ _D("lock : %d / sound_type : %d", *lock, *sound_type);
+
+ if(*lock == IDLELOCK_ON)
+ {
+ if(*sound_type == SOUND_TYPE_RINGTONE)
+ {
+ _D("IDLELOCK is ON / sound type is Ringtone");
+ return LOCK_AND_NOT_MEDIA;
+ }
+
+ if(*sound_type != SOUND_TYPE_RINGTONE)
+ {
+ _D("IDLELOCK is ON / sound type is not Ringtone(media or alaram)");
+ return LOCK_AND_MEDIA;
+ }
+ }
+
+ _D("IDLELOCK is OFF / normal case");
+
+ return UNLOCK_STATUS;
+}
+
+void volume_control_shape_event_area(Eina_Bool is_warning_visible)
+{
+ _D("shape event area");
+ Evas_Object *win = volume_view_win_get();
+ //volume_x_input_event_shape(win, is_warning_visible);
+}
+
+void volume_control_show_hide_worning()
+{
+ Evas_Object *ly_outer = volume_view_outer_layout_get();
+ sound_type_e sound_type = volume_sound_sound_manager_type_get();
+ int volume = volume_sound_sound_manager_volume_get(sound_type);
+
+ if(sound_type == SOUND_TYPE_MEDIA
+ && volume>VOLUME_MAX_SAFETY_VOLUME_LEVEL)
+ {
+ if(!control_info.is_warning_visible)
+ {
+ control_info.is_warning_visible = EINA_TRUE;
+
+ if(control_info.current_angle == 90 || control_info.current_angle == 270)
+ {
+ elm_object_signal_emit(ly_outer, "show_warning_l", "clipper"); //landscape
+ }
+ else
+ {
+ elm_object_signal_emit(ly_outer, "show_warning", "clipper"); //landscape
+ }
+
+ volume_control_shape_event_area(EINA_TRUE);
+ }
+ }
+ else if(control_info.is_warning_visible)
+ {
+ control_info.is_warning_visible = EINA_FALSE;
+
+ if(control_info.current_angle == 90 || control_info.current_angle == 270)
+ {
+ elm_object_signal_emit(ly_outer, "hide_warning_l", "clipper"); //landscape
+ }
+ else
+ {
+ elm_object_signal_emit(ly_outer, "hide_warning", "clipper"); //landscape
+ }
+
+ volume_control_shape_event_area(EINA_FALSE);
+ }
+}
+
+int volume_register_shape_timer()
+{
+ if (control_info.shape_timer) {
+ ecore_timer_del(control_info.shape_timer);
+ control_info.shape_timer = NULL;
+ }
+
+ control_info.shape_timer = ecore_timer_add(0.1, _shape_cb, NULL);
+
+ if (control_info.shape_timer)
+ return VOLUME_ERROR_OK;
+ else
+ return VOLUME_ERROR_FAIL;
+}
+
+void volume_control_check_syspopup()
+{
+ if(syspopup_has_popup(control_info.volume_bundle)) {
+ syspopup_reset(control_info.volume_bundle);
+ }
+}
+
+void volume_control_check_once(void)
+{
+ if(control_info.show_once) {
+ ecore_idler_add(_idler_top_position_grab, NULL);
+ control_info.show_once = EINA_FALSE;
+ }
+}
+
+Eina_Bool volume_control_show_view(int status, sound_type_e sound_type, int sound, bool bt_opened)
+{
+ _D("Volume control show");
+ Evas_Object *win = NULL;
+ int volume = 0;
+ int vibration = 0;
+
+ retv_if(control_info.is_deleting, EINA_FALSE);
+
+ control_info.is_new = EINA_TRUE;
+
+ win = volume_view_win_get();
+ retv_if(!win, EINA_FALSE);
+
+ if(status == LOCK_AND_NOT_MEDIA)
+ {
+ _D("Lock and Not Media");
+ if(evas_object_visible_get(win))
+ {
+ if(VOLUME_ERROR_OK != volume_control_hide_view())
+ {
+ _E("Failed to close volume");
+ }
+
+ if(VOLUME_ERROR_OK != volume_control_cache_flush())
+ {
+ _E("Failed to flush cache");
+ }
+ }
+ return EINA_FALSE;
+ } else {
+ _D("UNLOCK or LOCK_AND_MEDIA");
+ control_info.sound_type_at_show = sound_type;
+
+ if(status == UNLOCK_STATUS) {
+ if(VOLUME_ERROR_OK != volume_view_window_show()) {
+ _E("Failed to show volume window");
+ }
+
+ /*if(VOLUME_ERROR_OK != volume_x_input_event_register()) {
+ _E("Failed to add x input event handler");
+ }*/
+
+ volume_control_check_syspopup();
+
+ volume_control_check_once();
+ }
+
+ control_info.is_launching = EINA_TRUE;
+
+ if(bt_opened == 1 && sound_type == SOUND_TYPE_CALL)
+ {
+ _D("bt is opened and is calling");
+ volume = bt_get_bt_volume();
+ _D("bt volume is : %d", volume);
+
+ if(VOLUME_ERROR_OK != volume_view_slider_value_set(volume))
+ {
+ _E("Failed to set volume value to slider");
+ }
+ }
+ else
+ {
+ volume = volume_sound_sound_manager_volume_get(sound_type);
+ _D("volume : %d", volume);
+
+ vibration = volume_sound_vconf_status_get(TYPE_VCONF_VIBRATION_STATUS);
+ _D("vibration : %d", vibration);
+
+ if(((vibration == 1 && sound == 0) || sound == 0) && sound_type == SOUND_TYPE_RINGTONE)
+ {
+ volume = 0;
+ }
+
+ if(VOLUME_ERROR_OK != volume_view_slider_value_set(volume))
+ {
+ _E("Failed to set volume value to slider");
+ }
+ }
+
+ //@TODO: need to check
+ volume_view_volume_icon_set(sound_type, sound, vibration, bt_opened);
+
+ if(VOLUME_ERROR_OK != volume_register_shape_timer())
+ {
+ _E("Failed to register shape_timer");
+ }
+
+ return EINA_TRUE;
+ }
+}
+
+volume_error_e volume_control_close_bt_display(void)
+{
+ retv_if(volume_control_get_is_deleting(), VOLUME_ERROR_FAIL);
+
+ _D("Start closing bt display");
+
+ Ecore_X_Window input_win = volume_key_event_input_window_get();
+ retv_if(!input_win, VOLUME_ERROR_FAIL);
+
+ control_info.is_deleting = EINA_TRUE;
+
+ /* unregister outer event handler */
+ /*if(VOLUME_ERROR_OK != volume_x_input_event_unregister())
+ {
+ _E("Failed to unregister x input event handler");
+ }*/
+
+ /* hide window */
+ if(VOLUME_ERROR_OK != volume_view_window_hide())
+ {
+ _E("Failed to hide window");
+ }
+
+ control_info.is_deleting = EINA_FALSE;
+
+ _D("End closing bt display");
+ volume_timer_del(TYPE_TIMER_BT);
+
+ return 0;
+}
+
+volume_error_e volume_control_hide_view(void)
+{
+ retv_if(volume_control_get_is_deleting(), VOLUME_ERROR_FAIL);
+
+ _D("Start closing volume view");
+
+ int i = 0;
+ int count_grabed = volume_key_event_count_grabed_get();
+
+ //Ecore_X_Window input_win = volume_key_event_input_window_get();
+ //retv_if(!input_win, VOLUME_ERROR_FAIL);
+
+ control_info.is_deleting = EINA_TRUE;
+
+ /* unregister outer event handler */
+ /*if(VOLUME_ERROR_OK != volume_x_input_event_unregister())
+ {
+ _E("Failed to unregister x input event handler");
+// control_info.is_deleting = EINA_FALSE;
+// return VOLUME_ERROR_FAIL;
+ }*/
+
+ /*for (i = 0; i < count_grabed; i++) {
+ if (VOLUME_ERROR_OK != volume_key_event_key_ungrab()) {
+ _E("Failed to ungrab key");
+ continue;
+ }
+ _D("ungrab key : %d/%d", i+1, count_grabed);
+ }*/
+ //elm_win_keygrab_unset(volume_view_win_get(), KEY_VOLUMEUP, 0, 0);
+ //elm_win_keygrab_unset(volume_view_win_get(), KEY_VOLUMEDOWN, 0, 0);
+ volume_key_event_count_grabed_set(0);
+ /*if (VOLUME_ERROR_OK != volume_key_event_key_grab(input_win, SHARED_GRAB)) {
+ _E("Failed to grab key : SHARED_GRAB");
+ }*/
+ //elm_win_keygrab_set(volume_view_win_get(), KEY_VOLUMEUP, 0, 0, 0, ELM_WIN_KEYGRAB_SHARED);
+ //elm_win_keygrab_set(volume_view_win_get(), KEY_VOLUMEDOWN, 0, 0, 0, ELM_WIN_KEYGRAB_SHARED);
+
+ volume_timer_del(TYPE_TIMER_SU);
+ volume_timer_del(TYPE_TIMER_SD);
+ volume_timer_del(TYPE_TIMER_SLIDER);
+ volume_timer_del(TYPE_TIMER_POPUP);
+
+ /* hide window */
+ if (VOLUME_ERROR_OK != volume_view_window_hide()) {
+ _E("Failed to hide window");
+ }
+
+ control_info.is_deleting = EINA_FALSE;
+ control_info.is_launching = EINA_FALSE;
+
+ _D("End closing volume view");
+
+ return 0;
+}
+
+void volume_control_register_vconfkey(void)
+{
+ /* other app grab volume key => close volume */
+ if(vconf_notify_key_changed(VCONFKEY_STARTER_USE_VOLUME_KEY, _starter_user_volume_key_vconf_changed_cb, NULL) != 0)
+ {
+ _E("Failed to register callback function : VCONFKEY_STARTER_USE_VOLUME_KEY");
+ }
+
+ /* Lock screen status vconf changed callback */
+ if(vconf_notify_key_changed(VCONFKEY_IDLE_LOCK_STATE, _idle_lock_state_vconf_changed_cb, NULL) != 0)
+ {
+ _E("Failed to notify vconfkey : VCONFKEY_IDLE_LOCK_STATE");
+ }
+
+ if (vconf_notify_key_changed(VCONFKEY_PM_LCDOFF_SOURCE, _notify_pm_lcdoff_cb, NULL) != 0) {
+ _E("Failed to notify vconfkey : VCONFKEY_PM_LCDOFF_SOURCE");
+ }
+}
+
+void volume_control_unregister_vconfkey(void)
+{
+ /* other app grab volume key => close volume */
+ if(vconf_ignore_key_changed(VCONFKEY_STARTER_USE_VOLUME_KEY, _starter_user_volume_key_vconf_changed_cb) < 0)
+ {
+ _E("Failed to ignore vconfkey : VCONFKEY_STARTER_USE_VOLUME_KEY");
+ }
+
+ /* Lock screen status vconf changed callback */
+ if(vconf_ignore_key_changed(VCONFKEY_IDLE_LOCK_STATE, _idle_lock_state_vconf_changed_cb) < 0)
+ {
+ _E("Failed to ignore vconfkey : VCONFKEY_IDLE_LOCK_STATE");
+ }
+
+ if (vconf_ignore_key_changed
+ (VCONFKEY_PM_LCDOFF_SOURCE, _notify_pm_lcdoff_cb) != 0) {
+ _E("Fail vconf_ignore_key_changed : VCONFKEY_PM_LCDOFF_SOURCE");
+ }
+}
+
+volume_error_e volume_control_pause(void)
+{
+ Evas_Object *win = volume_view_win_get();
+ retv_if(!win, VOLUME_ERROR_FAIL);
+
+ if(evas_object_visible_get(win)) {
+ if(VOLUME_ERROR_OK != volume_control_hide_view())
+ {
+ _E("Failed to close volume");
+ }
+
+ if(VOLUME_ERROR_OK != volume_control_cache_flush())
+ {
+ _E("Failed to flush cache");
+ }
+ }
+
+ return VOLUME_ERROR_OK;
+}
+
+volume_error_e volume_control_reset(bundle *b)
+{
+ _D("Volume control reset");
+ Evas_Object *win = volume_view_win_get();
+ retv_if(!win, VOLUME_ERROR_FAIL);
+
+ int ret = -1;
+ int lock = IDLELOCK_ON;
+ int status = 0;
+ int volume = 0;
+ int sound = 0;
+ int error = 0;
+ bool bt_opened = false;
+ sound_type_e sound_type = 0;
+ const char *show_volume = NULL;
+/*
+ if(control_info.reset_once) {
+ static syspopup_handler handler = {
+ .def_term_fn = _myterm,
+ .def_timeout_fn = _mytimeout
+ };
+
+ ret = syspopup_create(b, &handler, win, NULL);
+ retvm_if(ret < 0, VOLUME_ERROR_FAIL, "Failed to create syspopup");
+ control_info.volume_bundle = bundle_dup(b);
+ control_info.reset_once = EINA_FALSE;
+ }*/
+
+ status = volume_control_check_status(&lock, &sound_type);
+ _D("status: %d, lock: %d, sound type : %d", status, lock, sound_type);
+
+ volume = volume_sound_sound_manager_volume_get(sound_type);
+ _D("volume : %d", volume);
+
+ sound = volume_sound_vconf_status_get(TYPE_VCONF_SOUND_STATUS);
+ _D("sound status : %d", sound);
+
+ error = bt_ag_is_sco_opened(&bt_opened);
+ if(error != BT_ERROR_NONE)
+ {
+ _E("bt_ag_is_sco_opened return [%d]", error);
+ }
+ _D("BT state %d", bt_opened);
+
+ show_volume = bundle_get_val(b, SHOWVOLUME);
+ retv_if(!show_volume, VOLUME_ERROR_FAIL);
+
+ if(!strncasecmp(show_volume, ISTRUE, strlen(ISTRUE)))
+ {
+ _D("Bundle : %s", show_volume);
+ if(lock == IDLELOCK_OFF)
+ {
+ _D("Show Volume");
+ volume_timer_add(3.0, TYPE_TIMER_POPUP);
+ volume_control_show_view(status, sound_type, sound, bt_opened);
+ }
+ }
+
+ return VOLUME_ERROR_OK;
+}
+
+volume_error_e volume_control_initialize(void)
+{
+ _D("Volume control initialize");
+
+ /* Create main window */
+ Evas_Object *win = volume_view_window_create();
+ retv_if(!win, VOLUME_ERROR_FAIL);
+
+ /* Create input_window */
+ /*if(VOLUME_ERROR_OK != volume_key_event_input_window_create()) {
+ _E("Failed to create input window");
+ return VOLUME_ERROR_FAIL;
+ }*/
+
+ /* Create volume layout */
+ if(VOLUME_ERROR_OK != volume_view_layout_create(win)) {
+ _E("Failed to create volume layout");
+ return VOLUME_ERROR_FAIL;
+ }
+
+ elm_win_screen_size_get(win, NULL, NULL, &(control_info.viewport_width), &(control_info.viewport_height));
+
+
+ /* Set available rotations */
+ _control_set_window_rotation(win);
+
+ /* Register vconfkey changed callback
+ * : VCONFKEY_STARTER_USE_VOLUME_KEY
+ * : VCONFKEY_IDLE_LOCK_STATE
+ * : VCONFKEY_LOCKSCREEN_SVIEW_STATE
+ * */
+ volume_control_register_vconfkey();
+
+ /* Register vconfkey changed callback
+ * : VCONFKEY_SETAPPL_SOUND_STATUS_BOOL
+ * : VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL
+ * */
+ volume_sound_vconfkey_register();
+
+ /* Add key event handler */
+ volume_key_event_handler_add();
+
+ /* Register volume changed callback */
+ volume_sound_mm_sound_init();
+
+ /* BT initialize and register changed callback */
+ bt_init_sco();
+
+ return VOLUME_ERROR_OK;
+}
+
+void volume_control_deinitialize(void)
+{
+ /* Unregister vconfkey changed callback */
+ volume_control_unregister_vconfkey();
+
+ /* Unregister sound vconfkey changed callback */
+ volume_sound_vconfkey_unregister();
+
+ /* Unregister bt changed callback */
+ bt_deinit_sco();
+}
+
+static void _rotate_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ static int current_angle = -1;
+ int changed_angle = elm_win_rotation_get(obj);
+ LOGD("MIK");
+
+ Evas_Object *ly_outer = volume_view_outer_layout_get();
+ ret_if(!ly_outer);
+
+ _D("window rotated [%d] => [%d]", current_angle, changed_angle);
+ if(current_angle != changed_angle) {
+ current_angle = changed_angle;
+ control_info.current_angle = current_angle;
+ switch(current_angle){
+ case 90 :
+ case 270 :
+ _D("show,landscape");
+ elm_object_signal_emit(ly_outer, "show,landscape", "bg");
+ if(control_info.is_warning_visible)
+ {
+ elm_object_signal_emit(ly_outer, "show_warning_l", "clipper");
+ }
+ break;
+ default :
+ _D("show,portrait");
+ elm_object_signal_emit(ly_outer, "show,portrait", "bg");
+ if(control_info.is_warning_visible)
+ {
+ elm_object_signal_emit(ly_outer, "show_warning", "clipper");
+ }
+ break;
+ }
+
+ //volume_x_input_event_shape(obj, control_info.is_warning_visible);
+ }
+}
+
+static void _control_set_window_rotation(Evas_Object *win)
+{
+ ret_if(!win);
+
+ if (elm_win_wm_rotation_supported_get(win)) {
+ const int rots[4] = { 0, 90, 180, 270 };
+ elm_win_wm_rotation_available_rotations_set(win, (const int *)&rots, 4);
+ _D("set available rotations");
+ }
+
+ /* rotation event callback */
+ evas_object_smart_callback_add(win, "wm,rotation,changed", _rotate_changed_cb, NULL);
+
+ /* initialize degree */
+ _rotate_changed_cb(NULL, win, NULL);
+}
+
+static Eina_Bool _idler_top_position_grab(void *data)
+{
+ //volume_key_event_key_grab(-1, TOP_POSITION_GRAB);
+ elm_win_keygrab_set(volume_view_win_get(), KEY_VOLUMEUP, 0, 0, 0, ELM_WIN_KEYGRAB_TOPMOST);
+ elm_win_keygrab_set(volume_view_win_get(), KEY_VOLUMEDOWN, 0, 0, 0, ELM_WIN_KEYGRAB_TOPMOST);
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static Eina_Bool _shape_cb(void *data)
+{
+ LOGD("shape callback");
+ volume_control_shape_event_area(control_info.is_warning_visible);
+ control_info.shape_timer = NULL;
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static void _starter_user_volume_key_vconf_changed_cb(keynode_t *key, void *data)
+{
+ int ret = EINA_FALSE;
+
+ if(vconf_get_int(VCONFKEY_STARTER_USE_VOLUME_KEY, &ret) < 0)
+ {
+ _E("Failed to get vconfkey : VCONFKEY_STARTER_USE_VOLUME_KEY");
+ return;
+ }
+ _D("ret : %d", ret);
+
+ if(ret == 1)
+ {
+ _D("any other App grab volume hard key");
+ if(VOLUME_ERROR_OK != volume_control_hide_view()) {
+ _E("Failed to close volume");
+ return;
+ }
+ if(VOLUME_ERROR_OK != volume_control_cache_flush()) {
+ _E("Failed to flush cache");
+ return;
+ }
+ if(vconf_set_int(VCONFKEY_STARTER_USE_VOLUME_KEY, 0) < 0) {
+ _E("Failed to get vconfkey : VCONFKEY_STATER_USE_VOLUME_KEY");
+ return;
+ }
+ }
+ else if(ret == 2)
+ {
+ _D("setting App grab volume hard key");
+ }
+}
+
+static void _idle_lock_state_vconf_changed_cb(keynode_t *key, void *data)
+{
+ int lock = VCONFKEY_IDLE_UNLOCK;
+
+ if(vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &lock) < 0)
+ {
+ _E("Failed to get vconfkey : VCONFKEY_IDLE_LOCK_STATE");
+ return;
+ }
+ _D("idle lock state : %d", lock);
+
+ /*if(lock == VCONFKEY_IDLE_LAUNCHING_LOCK)
+ {
+ if(VOLUME_ERROR_OK != volume_view_window_hide())
+ {
+ _E("Failed to hide window");
+ }
+ }*/
+}
+
+static void _notify_pm_lcdoff_cb(keynode_t * node, void *data)
+{
+ if(VOLUME_ERROR_OK != volume_control_hide_view())
+ {
+ _E("Failed to close volume");
+ }
+
+ if(VOLUME_ERROR_OK != volume_control_cache_flush())
+ {
+ _E("Failed to flush cache");
+ }
+}
+
+static int _mytimeout(bundle *b, void *data)
+{
+ return 0;
+}
+
+static int _myterm(bundle *b, void *data)
+{
+ if (VOLUME_ERROR_OK != volume_control_hide_view())
+ {
+ _E("Failed to close volume");
+ }
+ if (VOLUME_ERROR_OK != volume_control_cache_flush())
+ {
+ _E("Failed to flush cache");
+ }
+
+ return 0;
+}
+
+++ /dev/null
-
-/*
- * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
--- /dev/null
+/*
+ * Copyright (c) 2009-2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <Ecore.h>
+//#include <Ecore_X.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <feedback.h>
+#include <bluetooth.h>
+#include <bluetooth_internal.h>
+//#include <bluetooth_extention.h>
+#include <app.h>
+
+#include "main.h"
+#include "_util_log.h"
+#include "_util_efl.h"
+#include "view.h"
+#include "control.h"
+#include "sound.h"
+#include "timer.h"
+#include "key_event.h"
+#include "bt.h"
+
+#define VCONFKEY_ALARM_VOLUME_POPUP_ENABLE "memory/alarm/volume_popup_enable"
+#define VOLUME_INPUT_WIN_NAME "volumekey-input-window"
+
+struct _key_event_s_info {
+ Ecore_X_Window input_win;
+
+ Ecore_Event_Handler *handler_volume_up;
+ Ecore_Event_Handler *handler_volume_down;
+ Ecore_Event_Handler *handler_qp_state_check;
+
+ Eina_Bool is_mute;
+ Eina_Bool is_pressing;
+
+ int count_grabed;
+
+ int last_value_in_media;
+};
+
+static struct _key_event_s_info key_event_info = {
+ .input_win = 0,
+
+ .handler_volume_up = NULL,
+ .handler_volume_down = NULL,
+ .handler_qp_state_check = NULL,
+
+ .is_mute = EINA_FALSE,
+ .is_pressing = EINA_FALSE,
+
+ .count_grabed = 0,
+
+ .last_value_in_media = 0,
+};
+
+static Eina_Bool _key_release_cb(void *data, int type, void *event);
+static Eina_Bool _key_press_cb(void *data, int type, void *event);
+static volume_error_e _volume_popup_check_in_alarm_type(sound_type_e sound_type);
+static volume_error_e _volume_down_key_press(sound_type_e sound_type, int sound, bool bt_opened);
+static volume_error_e _volume_up_key_press(sound_type_e sound_type, int sound, bool bt_opened);
+static volume_error_e _mute_key_press();
+
+/*
+Ecore_X_Window _add_input_window(void)
+{
+ Ecore_X_Window win = 0;
+ win = ecore_x_window_input_new(0, -10000, -10000, 1, 1);
+ retv_if(!win, 0);
+
+ ecore_x_icccm_title_set(win, VOLUME_INPUT_WIN_NAME);
+ ecore_x_netwm_name_set(win, VOLUME_INPUT_WIN_NAME);
+ ecore_x_netwm_pid_set(win, getpid());
+ ecore_x_flush();
+
+ return win;
+}*/
+
+Ecore_X_Window volume_key_event_input_window_get(void)
+{
+ return key_event_info.input_win;
+}
+
+Ecore_Event_Handler* volume_key_event_handler_volume_up_get(void)
+{
+ return key_event_info.handler_volume_up;
+}
+
+Ecore_Event_Handler* volume_key_event_handler_volume_down_get(void)
+{
+ return key_event_info.handler_volume_down;
+}
+
+Ecore_Event_Handler* volume_key_event_handler_qp_state_check(void)
+{
+ return key_event_info.handler_qp_state_check;
+}
+
+Eina_Bool volume_key_event_is_pressing_get(void)
+{
+ return key_event_info.is_pressing;
+}
+
+int volume_key_event_count_grabed_get(void)
+{
+ return key_event_info.count_grabed;
+}
+
+void volume_key_event_count_grabed_set(int val)
+{
+ key_event_info.count_grabed = val;
+}
+
+/*
+volume_error_e volume_key_event_key_grab(Ecore_X_Window _xwin, int grab_mode)
+{
+ Evas_Object *win = volume_view_win_get();
+ retv_if(win == NULL, VOLUME_ERROR_FAIL);
+
+ Ecore_X_Display *disp = NULL;
+ Ecore_X_Window xwin = 0;
+ int ret = -1;
+
+ key_event_info.count_grabed++;
+ _D("count_grabed : %d", key_event_info.count_grabed);
+
+ disp = ecore_x_display_get();
+ retvm_if(disp == NULL, VOLUME_ERROR_FAIL, "Failed to get display");
+
+ if (_xwin == -1) {
+ _D("Top position grab");
+ xwin = elm_win_xwindow_get(win);
+ retvm_if(xwin == 0, VOLUME_ERROR_FAIL, "Failed to get xwindow");
+ } else
+ xwin = _xwin;
+
+ ret = utilx_grab_key(disp, xwin, KEY_VOLUMEDOWN, grab_mode);
+ retvm_if(ret < 0, VOLUME_ERROR_FAIL, "Failed to grab key down");
+ retvm_if(ret == 1, VOLUME_ERROR_FAIL, "Already grab");
+
+ ret = utilx_grab_key(disp, xwin, KEY_VOLUMEUP, grab_mode);
+ retvm_if(ret < 0, VOLUME_ERROR_FAIL, "Failed to grab key up");
+ retvm_if(ret == 1, VOLUME_ERROR_FAIL, "Already grab");
+
+ ret = utilx_grab_key(disp, xwin, KEY_MUTE, grab_mode);
+ retvm_if(ret < 0, VOLUME_ERROR_FAIL, "Failed to grab key mute");
+ retvm_if(ret == 1, VOLUME_ERROR_FAIL, "Already grab");
+
+ return VOLUME_ERROR_OK;
+}
+
+volume_error_e volume_key_event_key_ungrab(void)
+{
+ Ecore_X_Window xwin = 0;
+ Ecore_X_Display *disp = NULL;
+
+ Evas_Object *win = volume_view_win_get();
+ retv_if(win == NULL, VOLUME_ERROR_FAIL);
+
+ Ecore_X_Window input_win = volume_key_event_input_window_get();
+ retv_if(input_win == 0, VOLUME_ERROR_FAIL);
+
+ xwin = elm_win_xwindow_get(win);
+ retv_if(xwin == 0, VOLUME_ERROR_FAIL);
+
+ disp = ecore_x_display_get();
+ retv_if(disp == NULL, VOLUME_ERROR_FAIL);
+
+ //@TODO : need to check
+ utilx_ungrab_key(disp, input_win, KEY_VOLUMEUP);
+ utilx_ungrab_key(disp, input_win, KEY_VOLUMEDOWN);
+ utilx_ungrab_key(disp, input_win, KEY_MUTE);
+
+ _D("key ungrabed");
+
+ return VOLUME_ERROR_OK;
+}*/
+
+void volume_key_event_handler_add(void)
+{
+ if(!key_event_info.handler_volume_up)
+ key_event_info.handler_volume_up = ecore_event_handler_add(ECORE_EVENT_KEY_UP, _key_release_cb, NULL);
+
+ if(!key_event_info.handler_volume_down)
+ key_event_info.handler_volume_down = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _key_press_cb, NULL);
+}
+
+void volume_key_event_handler_del(void)
+{
+ ret_if(key_event_info.handler_volume_up == NULL);
+ ecore_event_handler_del(key_event_info.handler_volume_up);
+ key_event_info.handler_volume_up= NULL;
+
+ ret_if(key_event_info.handler_volume_down == NULL);
+ ecore_event_handler_del(key_event_info.handler_volume_down);
+ key_event_info.handler_volume_down = NULL;
+}
+/*
+volume_error_e volume_key_event_input_window_create(void)
+{
+ Ecore_X_Window input_win = _add_input_window();
+ retv_if(!input_win, VOLUME_ERROR_FAIL);
+
+ key_event_info.input_win = input_win;
+
+ return volume_key_event_key_grab(input_win, SHARED_GRAB);
+}*/
+
+static volume_error_e _mute_key_press()
+{
+ int lastval = -1;
+ int lock = IDLELOCK_ON;
+ int status = 0;
+ int sound = 0;
+ int error = 0;
+ bool bt_opened = false;
+ sound_type_e sound_type = 0;
+
+ status = volume_control_check_status(&lock, &sound_type);
+ _D("status: %d, lock: %d, sound type : %d", status, lock, sound_type);
+
+ sound = volume_sound_vconf_status_get(TYPE_VCONF_SOUND_STATUS);
+ _D("sound status : %d", sound);
+
+ error = bt_ag_is_sco_opened(&bt_opened);
+ if(error != BT_ERROR_NONE)
+ _E("bt_ag_is_sco_opened return [%d]", error);
+
+ _D("BT state %d", bt_opened);
+
+ volume_control_show_view(status, sound_type, sound, bt_opened);
+
+ if (sound_type == SOUND_TYPE_MEDIA) {
+ if (key_event_info.is_mute == EINA_FALSE) {
+ _D("media is playing. set media volume to 0.");
+ lastval = volume_sound_level_get(sound_type);
+ retv_if(lastval == -1, VOLUME_ERROR_FAIL);
+
+ key_event_info.last_value_in_media = lastval;
+ volume_sound_level_set(sound_type, 0);
+ if (VOLUME_ERROR_OK != volume_view_slider_value_set(0)) {
+ _E("Failed to set slider value");
+ return VOLUME_ERROR_FAIL;
+ }
+ key_event_info.is_mute = EINA_TRUE;
+ return VOLUME_ERROR_OK;
+ } else {
+ _D("toggle the mute key to normal in media. last value in media : %d", key_event_info.last_value_in_media);
+ volume_sound_level_set(sound_type, lastval);
+ if (VOLUME_ERROR_OK != volume_view_slider_value_set(lastval)) {
+ _E("Failed to set slider value");
+ return VOLUME_ERROR_FAIL;
+ }
+ key_event_info.is_mute = EINA_FALSE;
+ return VOLUME_ERROR_OK;
+ }
+ } else {
+ if (lock == IDLELOCK_ON) {
+ _D("lock is on, block the MUTE key");
+ return VOLUME_ERROR_OK;
+ }
+
+ if (volume_mute_toggle_set())
+ volume_sound_feedback_play(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_GENERAL);
+
+ return VOLUME_ERROR_OK;
+ }
+}
+
+static volume_error_e _volume_up_key_press(sound_type_e sound_type, int sound, bool bt_opened)
+{
+ int sound_step = 0;
+ int sound_level = 0;
+ int vibration = 0;
+
+ _D("Volume Up Key Pressed");
+ key_event_info.is_mute = EINA_FALSE;
+
+ sound_step = volume_sound_step_get();
+ _D("sound step : %d", sound_step);
+
+ sound_level = volume_sound_level_get(sound_type);
+ retv_if(sound_level == -1, VOLUME_ERROR_FAIL);
+ _D("sound level : %d", sound_level);
+
+ vibration = volume_sound_vconf_status_get(TYPE_VCONF_VIBRATION_STATUS);
+ _D("vibration : %d", vibration);
+
+ if (elm_object_disabled_get(volume_view_slider_get()))
+ elm_object_disabled_set(volume_view_slider_get(), EINA_FALSE);
+
+ if (sound_type == SOUND_TYPE_RINGTONE) {
+ if (!sound) {
+ /* Check sound status change case. */
+ if (!vibration) {
+ _D("mute -> vib.");
+ volume_sound_vconf_status_set(TYPE_VCONF_VIBRATION_STATUS, 1);
+ volume_sound_vib_play();
+ }
+ else {
+ _D("vib -> sound");
+ volume_sound_vconf_status_set(TYPE_VCONF_SOUND_STATUS, 1);
+ volume_sound_vconf_status_set(TYPE_VCONF_VIBRATION_STATUS, 0);
+ volume_sound_level_set(sound_type, sound_level+1);
+ volume_view_slider_value_set(sound_level+1);
+ _D("new sound value: %d", sound_level+1);
+ }
+ }
+ else {
+ /*adjust the sound level normally */
+ if (sound_level != sound_step) {
+ volume_sound_level_set(sound_type, sound_level+1);
+ volume_view_slider_value_set(sound_level+1);
+ _D("new sound value: %d", sound_level+1);
+ }
+ }
+ }
+ else if (sound_type == SOUND_TYPE_NOTIFICATION) {
+ if (!sound) {
+ /* No sound in notification type. */
+ volume_view_slider_value_set(0);
+ elm_object_disabled_set(volume_view_slider_get(), EINA_TRUE);
+ }
+ else {
+ /*adjust the sound level normally */
+ if (sound_level != sound_step) {
+ volume_sound_level_set(sound_type, sound_level+1);
+ volume_view_slider_value_set(sound_level+1);
+ _D("new sound value: %d", sound_level+1);
+ }
+ }
+ }
+ /* Sound type is not ringtone. Need to adjust sound level */
+ else if (sound_type == SOUND_TYPE_CALL && bt_opened) {
+ int bt_vol = 0;
+ if (bt_ag_get_speaker_gain(&bt_vol) != BT_ERROR_NONE)
+ _E("Getting bt volume is failed");
+
+ _D("BT VOLUME : %d", bt_vol);
+
+ if (bt_vol != sound_step) {
+ if(bt_ag_notify_speaker_gain(bt_vol+1) != BT_ERROR_NONE)
+ _E("Setting bt volume is failed");
+ volume_view_slider_value_set(bt_vol+1);
+ _D("New BT VOLUME : %d", bt_vol+1);
+ }
+ }
+ else {
+ if (sound_level != sound_step) {
+ volume_sound_level_set(sound_type, sound_level+1);
+ volume_view_slider_value_set(sound_level+1);
+ _D("new sound value: %d", sound_level+1);
+ }
+ }
+
+ if (sound_type != SOUND_TYPE_ALARM)
+ volume_sound_play();
+
+ volume_timer_del(TYPE_TIMER_SU);
+ volume_timer_del(TYPE_TIMER_SD);
+ volume_timer_add(0.5, TYPE_TIMER_SU);
+
+ if (!volume_timer_su_timer_get()) {
+ _E("Failed to get SUTIMER");
+ return VOLUME_ERROR_FAIL;
+ }
+
+ return VOLUME_ERROR_OK;
+}
+
+static volume_error_e _volume_down_key_press(sound_type_e sound_type, int sound, bool bt_opened)
+{
+ key_event_info.is_mute = EINA_FALSE;
+
+ int val = volume_sound_level_get(sound_type);
+ retv_if(val == -1, VOLUME_ERROR_FAIL);
+
+ int sound_st = volume_sound_vconf_status_get(TYPE_VCONF_SOUND_STATUS);
+ _D("sound status : %d", sound_st);
+
+ int vibration = volume_sound_vconf_status_get(TYPE_VCONF_VIBRATION_STATUS);
+ _D("vibration : %d", vibration);
+
+ if (elm_object_disabled_get(volume_view_slider_get()))
+ elm_object_disabled_set(volume_view_slider_get(), EINA_FALSE);
+
+ if(sound_type == SOUND_TYPE_RINGTONE){
+ if (!sound)
+ /* Check sound status change case. */
+ _D("Do nothing.");
+ else {
+ if (val != 0) {
+ volume_sound_level_set(sound_type, val - 1);
+ volume_view_slider_value_set(val - 1);
+ /*adjust the sound level normally */
+ if (val == 1) {
+ volume_sound_vconf_status_set(TYPE_VCONF_SOUND_STATUS, 0);
+ volume_sound_vconf_status_set(TYPE_VCONF_VIBRATION_STATUS, 1);
+ volume_sound_vib_play();
+ }
+ }
+ }
+ }
+ else if (sound_type == SOUND_TYPE_NOTIFICATION) {
+ if(!sound) {
+ /* No sound in notification type. */
+ volume_view_slider_value_set(0);
+ elm_object_disabled_set(volume_view_slider_get(), EINA_TRUE);
+ }
+ else {
+ /*adjust the sound level normally */
+ if (val != 0) {
+ volume_sound_level_set(sound_type, val-1);
+ volume_view_slider_value_set(val-1);
+ _D("new sound value: %d", val-1);
+ }
+ }
+ }
+ else if(sound_type == SOUND_TYPE_CALL && bt_opened) {
+ int bt_vol = 0;
+ if(bt_ag_get_speaker_gain(&bt_vol) != BT_ERROR_NONE)
+ _E("Getting bt volume is failed");
+
+ _D("BT VOLUME : %d", bt_vol);
+ if(bt_ag_notify_speaker_gain(bt_vol-1) != BT_ERROR_NONE)
+ _E("Setting bt volume is failed");
+ volume_view_slider_value_set(bt_vol-1);
+
+ _D("New BT VOLUME : %d", bt_vol-1);
+ }
+ /* Sound type is not ringtone. Need to adjust sound level */
+ else {
+ if (val != 0) {
+ volume_sound_level_set(sound_type, val - 1);
+ volume_view_slider_value_set(val - 1);
+ _D("new sound value: %d", val-1);
+ }
+ }
+
+ if(sound_type != SOUND_TYPE_ALARM)
+ volume_sound_play();
+
+ volume_timer_del(TYPE_TIMER_SD);
+ volume_timer_del(TYPE_TIMER_SU);
+ volume_timer_add(0.5, TYPE_TIMER_SD);
+
+ return VOLUME_ERROR_OK;
+}
+
+static volume_error_e _volume_popup_check_in_alarm_type(sound_type_e sound_type)
+{
+ int is_enabled = 0;
+
+ if(sound_type == SOUND_TYPE_ALARM) {
+ _D("Sound type is Alarm Type");
+ if(vconf_get_bool(VCONFKEY_ALARM_VOLUME_POPUP_ENABLE, &is_enabled) < 0) {
+ _E("Failed to get vconfkey : VCONFKEY_ALARM_VOLUME_POPUP_ENABLE");
+ return VOLUME_ERROR_FAIL;
+ }
+ _D("volume popup enabled in alarm type : %d", is_enabled);
+
+ if(!is_enabled) {
+ _D("alarm type but vconf for the volume popup is disabled");
+ return VOLUME_ERROR_FAIL;
+ }
+ }
+
+ return VOLUME_ERROR_OK;
+}
+
+static Eina_Bool _key_press_cb(void *data, int type, void *event)
+{
+ int sound = 0;
+ int lock = IDLELOCK_ON;
+ int key_status = 0;
+ int status = 0;
+ int error = 0;
+ bool bt_opened = false;
+ sound_type_e sound_type = 0;
+ Evas_Object *win = NULL;
+ Ecore_Event_Key *ev = NULL;
+
+ ev = (Ecore_Event_Key*) event;
+ retv_if(!ev, ECORE_CALLBACK_CANCEL);
+
+ _D("Key Press CB : %s", ev->keyname);
+
+ win = volume_view_win_get();
+ retv_if(!win, ECORE_CALLBACK_CANCEL);
+
+ if(!strncmp(ev->keyname, KEY_CANCEL, strlen(KEY_CANCEL)) || !strncmp(ev->keyname, KEY_BACK, strlen(KEY_BACK))) {
+ _D("%s is pressed", ev->keyname);
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ if(volume_view_is_slider_touching_get()) {
+ _E("Failed to show volume : is_slider_touching is EINA_TRUE");
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ if(vconf_get_int(VCONFKEY_STARTER_USE_VOLUME_KEY, &key_status) < 0) {
+ _E("Failed to get vconf : VCONFKEY_STATER_USE_VOLUME_KEY");
+ return ECORE_CALLBACK_CANCEL;
+ }
+ retvm_if(key_status == 2, ECORE_CALLBACK_CANCEL, "starter use volume key. status : 2");
+
+#ifndef FEATURE_SDK
+ int is_call = -1;
+ if(!strncmp(ev->keyname, KEY_MUTE, strlen(KEY_MUTE))) {
+ _D("MUTE key is pressed");
+ if(VOLUME_ERROR_OK != _mute_key_press())
+ _E("Failed to press MUTE key");
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ if(vconf_get_int(VCONFKEY_TELEPHONY_CALL_STATE, &is_call) < 0 || is_call < 0) {
+ _E("Failed to get call state vconf");
+ return ECORE_CALLBACK_CANCEL;
+ }
+ if(is_call>0) {
+ _D("Call is active");
+ return ECORE_CALLBACK_CANCEL;
+ }
+#endif
+
+ status = volume_control_check_status(&lock, &sound_type);
+ _D("status: %d, lock: %d, sound type : %d", status, lock, sound_type);
+
+ sound = volume_sound_vconf_status_get(TYPE_VCONF_SOUND_STATUS);
+ _D("sound status : %d", sound);
+
+ error = bt_ag_is_sco_opened(&bt_opened);
+ if(error != BT_ERROR_NONE)
+ _E("bt_ag_is_sco_opened return [%d]", error);
+
+ _D("BT state %d", bt_opened);
+
+ if(VOLUME_ERROR_OK != _volume_popup_check_in_alarm_type(sound_type)) {
+ _E("Failed to set volume popup");
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ volume_control_show_view(status, sound_type, sound, bt_opened);
+
+ key_event_info.is_pressing = EINA_TRUE;
+
+ volume_timer_del(TYPE_TIMER_POPUP);
+
+ if (!strncmp(ev->keyname, KEY_VOLUMEUP, strlen(KEY_VOLUMEUP))) {
+ if(VOLUME_ERROR_OK != _volume_up_key_press(sound_type, sound, bt_opened))
+ _E("Failed to press volume up key");
+ }
+ else if (!strncmp(ev->keyname, KEY_VOLUMEDOWN, strlen(KEY_VOLUMEDOWN))) {
+ if(VOLUME_ERROR_OK != _volume_down_key_press(sound_type, sound, bt_opened))
+ _E("Failed to press volume down key");
+ }
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static Eina_Bool _key_release_cb(void *data, int type, void *event)
+{
+ Ecore_Event_Key *ev = event;
+ retv_if(ev == NULL, ECORE_CALLBACK_CANCEL);
+ _D("Key Release CB : %s", ev->keyname);
+
+ Evas_Object *win = volume_view_win_get();
+ retv_if(win == NULL, ECORE_CALLBACK_CANCEL);
+
+ key_event_info.is_pressing = EINA_FALSE;
+
+ if(!strncmp(ev->keyname, KEY_CANCEL, strlen(KEY_CANCEL))) {
+ _D("%s is released", ev->keyname);
+ if(VOLUME_ERROR_OK != volume_control_hide_view())
+ _E("Failed to close volume");
+ if(VOLUME_ERROR_OK != volume_control_cache_flush())
+ _E("Failed to flush cache");
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ if(!strncmp(ev->keyname, KEY_BACK, strlen(KEY_BACK))) {
+ _D("BACK Key is released");
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ if (!strncmp(ev->keyname, KEY_VOLUMEUP, strlen(KEY_VOLUMEUP))) {
+ _D("up key released and del timer");
+ volume_timer_del(TYPE_TIMER_SU);
+ }
+ else if (!strncmp(ev->keyname, KEY_VOLUMEDOWN, strlen(KEY_VOLUMEDOWN))) {
+ _D("down key released and del timer");
+ volume_timer_del(TYPE_TIMER_SD);
+ }
+
+ volume_timer_del(TYPE_TIMER_POPUP);
+
+ if(volume_view_is_slider_touching_get() == EINA_FALSE)
+ volume_timer_add(3.0, TYPE_TIMER_POPUP);
+
+ _D("key release fini");
+ return ECORE_CALLBACK_CANCEL;
+}
+
--- /dev/null
+/*
+ * Copyright (c) 2009-2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 <feedback.h>
+#include <vconf.h>
+#include <app_control_internal.h>
+#include <app_preference.h>
+#include <Elementary.h>
+#include <appcore-efl.h>
+#include <app.h>
+
+#include "main.h"
+#include "_util_log.h"
+#include "_util_efl.h"
+#include "view.h"
+#include "control.h"
+
+static bool _create_app(void *user_data);
+static void _terminate_app(void *user_data);
+static void _pause_app(void *user_data);
+static void _resume_app(void *user_data);
+static void _control_app(app_control_h service, void *user_data);
+static void _control_app(app_control_h service, void *user_data);
+static void _changed_language(app_event_info_h event_info, void *user_data);
+
+int main(int argc, char *argv[])
+{
+ _D(">>>>>>>>>>>>>>>>>>>>>>>>>> main >>>>>>>>>>>>>>>>");
+ int ret = 0;
+
+ ui_app_lifecycle_callback_s lifecycle_callback = {0,};
+ app_event_handler_h handlers[5] = {NULL, };
+
+ lifecycle_callback.create = _create_app;
+ lifecycle_callback.terminate = _terminate_app;
+ lifecycle_callback.pause = _pause_app;
+ lifecycle_callback.resume = _resume_app;
+ lifecycle_callback.app_control = _control_app;
+
+ ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY, NULL, NULL);
+ ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, NULL, NULL);
+ ui_app_add_event_handler(&handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED], APP_EVENT_DEVICE_ORIENTATION_CHANGED, NULL, NULL);
+ ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, _changed_language, NULL);
+ ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, NULL, NULL);
+
+ ret = ui_app_main(argc, argv, &lifecycle_callback, NULL);
+ if (ret != APP_ERROR_NONE)
+ _E("app_main() is failed. err = %d", ret);
+
+ return ret;
+}
+
+static bool _create_app(void *user_data)
+{
+ _D(">>>>>>>>>>>>>>>>>>>>>>>>> create app >>>>>>>>>>>>>>>>>>>>");
+ elm_app_base_scale_set(1.8);
+ /* Initialize feedback */
+ //feedback_initialize();
+
+ /* Initialize volume */
+ if (VOLUME_ERROR_OK != volume_control_initialize()) {
+ _E("Failed to initialize volume");
+ return false;
+ }
+
+ return true;
+}
+
+static void _terminate_app(void *user_data)
+{
+ /* Deinitialize feedback */
+ feedback_deinitialize();
+
+ /* Deinitialize volume */
+ volume_control_deinitialize();
+}
+
+static void _pause_app(void *user_data)
+{
+ if(VOLUME_ERROR_OK != volume_control_pause())
+ _E("Failed to pause volume");
+}
+
+static void _resume_app(void *user_data)
+{
+}
+
+static void _control_app(app_control_h service, void *user_data)
+{
+ bundle *b = NULL;
+ app_control_to_bundle(service, &b);
+
+ if(VOLUME_ERROR_OK != volume_control_reset(b)) {
+ _E("Failed to reset volume");
+ return;
+ }
+
+ Evas_Object *win = volume_view_win_get();
+ if(win)
+ elm_win_activate(win);
+}
+
+static void _changed_language(app_event_info_h event_info, void *user_data)
+{
+ _D("language changed");
+ char *locale = vconf_get_str(VCONFKEY_LANGSET);
+ if (locale)
+ elm_language_set(locale);
+ free(locale);
+}
+
--- /dev/null
+/*
+ * Copyright (c) 2009-2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <appcore-common.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <feedback.h>
+
+#include "main.h"
+#include "_util_log.h"
+#include "view.h"
+#include "control.h"
+#include "sound.h"
+#include "bt.h"
+
+struct _sound_s_info {
+ int sound_step;
+ int sound_status;
+ int vibration_status;
+ Eina_Bool is_vibration;
+};
+
+static struct _sound_s_info sound_info = {
+ .sound_step = 0,
+ .sound_status = 0,
+ .vibration_status = 0,
+ .is_vibration = EINA_FALSE,
+};
+
+static void _sound_status_changed_cb(keynode_t *key, void *data);
+static int _setting_sound_enabled(void);
+
+int volume_sound_step_get(void)
+{
+ return sound_info.sound_step;
+}
+
+int volume_sound_sound_status_get(void)
+{
+ return sound_info.sound_status;
+}
+
+int volume_sound_vibration_status_get(void)
+{
+ return sound_info.vibration_status;
+}
+
+Eina_Bool volume_sound_is_vibration_get(void)
+{
+ return sound_info.is_vibration;
+}
+
+void volume_sound_is_vibration_set(Eina_Bool val)
+{
+ sound_info.is_vibration = val;
+}
+
+void volume_sound_feedback_play(int feedback_type, int pattern)
+{
+ _D("Feedback type : %d / pattern : %d", feedback_type, pattern);
+
+ if (FEEDBACK_ERROR_NONE != feedback_play_type(feedback_type, pattern))
+ _E("Failed to play feedback");
+}
+
+void volume_sound_vib_play(void)
+{
+ ret_if(sound_info.is_vibration);
+
+ _D("Play Feedback : vibration");
+
+ //if (FEEDBACK_ERROR_NONE != feedback_play_type(FEEDBACK_TYPE_VIBRATION, FEEDBACK_PATTERN_VIBRATION_ON))
+ // _E("Failed to play feedback");
+
+ sound_info.is_vibration = EINA_TRUE;
+}
+
+void volume_sound_play(void)
+{
+ sound_type_e sound_type = volume_control_get_sound_type_at_show();
+ _D("sound type at show : %d", sound_type);
+
+ ret_if(sound_type == SOUND_TYPE_ALARM);
+ ret_if(sound_type == SOUND_TYPE_MEDIA);
+ ret_if(sound_type == SOUND_TYPE_VOICE);
+ ret_if(sound_type == SOUND_TYPE_NOTIFICATION);
+
+ _D("Play Feedback : sound");
+ if(FEEDBACK_ERROR_NONE != feedback_play(FEEDBACK_PATTERN_VOLUME_KEY)) {
+ _E("Failed to play feedback");
+ }
+
+ return;
+}
+
+void volume_sound_setting_sound_play(void)
+{
+ int snd_enabled = _setting_sound_enabled();
+ _D("snd_enabled(%d)", snd_enabled);
+
+ if(snd_enabled == 1)
+ volume_sound_feedback_play(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_TOUCH_TAP);
+}
+
+int volume_sound_sound_manager_step_get(sound_type_e type)
+{
+ _D("volume sound manager step get");
+ int ret = -1, step = 0;
+
+ ret = sound_manager_get_max_volume(type, &step);
+ retvm_if(ret < 0, -1, "Failed to get step");
+
+ sound_info.sound_step = step;
+
+ return step;
+}
+
+int volume_sound_sound_manager_volume_get(sound_type_e type)
+{
+ int ret = -1, val = 0;
+ ret = sound_manager_get_volume(type, &val);
+ retvm_if(ret < 0, -1, "Failed to get volume");
+ return val;
+}
+
+sound_type_e volume_sound_sound_manager_type_get(void)
+{
+ _D(" Volume sound manager type get");
+ int ret = 0;
+ sound_type_e sound_type = -1;
+
+ ret = sound_manager_get_current_sound_type(&sound_type);
+ _D("ret: %d, sound type: %d", ret, sound_type);
+ switch (ret) {
+ case SOUND_MANAGER_ERROR_NONE:
+ _D("Error none");
+ break;
+ case SOUND_MANAGER_ERROR_NO_PLAYING_SOUND:
+ _D("NO playing sound");
+ sound_type = SOUND_TYPE_RINGTONE;
+ break;
+ default:
+ _E("Failed to get sound type : %d", ret);
+ sound_type = SOUND_TYPE_RINGTONE;
+ return sound_type;
+ }
+
+ if(sound_type == SOUND_TYPE_SYSTEM)
+ sound_type = SOUND_TYPE_RINGTONE;
+
+ return sound_type;
+}
+
+void _mm_func(sound_type_e type, unsigned int volume, void *data)
+{
+ bool bt_opened = false;
+
+ _D("mm func is called type : %d, volume : %d", type, volume);
+ if (type == volume_control_get_sound_type_at_show()) {
+ _D("current show type : %d, volume : %d", type, volume);
+ /* Need to check sound type & device in media type volume. */
+ if (type == SOUND_TYPE_MEDIA) {
+ int sound = volume_sound_vconf_status_get(TYPE_VCONF_SOUND_STATUS);
+ _D("sound status : %d", sound);
+
+ int vibration = volume_sound_vconf_status_get(TYPE_VCONF_VIBRATION_STATUS);
+ _D("vibration : %d", vibration);
+ volume_view_volume_icon_set(type, sound, vibration, bt_opened);
+ }
+ if (VOLUME_ERROR_OK != volume_view_slider_value_set(volume))
+ _E("Failed to set slider value");
+ }
+}
+
+void volume_sound_mm_sound_init(void)
+{
+ _D("MM sound Init");
+ int ret = sound_manager_set_volume_changed_cb(_mm_func, NULL);
+ if (ret != SOUND_MANAGER_ERROR_NONE)
+ _E("Failed to set volume changed event[%d]", ret);
+}
+
+int volume_sound_level_get(sound_type_e type)
+{
+ int val = -1;
+ if (sound_manager_get_volume(type, &val) < 0) {
+ _E("Failed to get Volume step");
+ return -1;
+ }
+
+ return val;
+}
+
+int volume_sound_level_set(sound_type_e type, int val)
+{
+ int ret = -1;
+ ret = sound_manager_set_volume(type, val);
+
+ return ret;
+}
+
+void volume_sound_change_set(int val)
+{
+ sound_type_e sound_type = volume_control_get_sound_type_at_show();
+ _D("sound type at show : %d", sound_type);
+
+ int sound = volume_sound_vconf_status_get(TYPE_VCONF_SOUND_STATUS);
+ _D("sound status : %d", sound);
+
+ if (val) {
+ if (sound_type != SOUND_TYPE_MEDIA) {
+ if (!volume_sound_vconf_status_get(TYPE_VCONF_SOUND_STATUS)) {
+ volume_sound_vconf_status_set(TYPE_VCONF_SOUND_STATUS, 1);
+ volume_sound_vconf_status_set(TYPE_VCONF_VIBRATION_STATUS, 0);
+ }
+ }
+ if (volume_sound_level_set(sound_type, val) != 0)
+ volume_sound_level_set(sound_type, 9);
+
+ volume_sound_play();
+ } else {
+ if (sound_type != SOUND_TYPE_MEDIA)
+ volume_sound_vconf_status_set(TYPE_VCONF_SOUND_STATUS, 0);
+ volume_view_slider_value_set(0);
+ volume_sound_level_set(sound_type, 0);
+
+ if (sound_type == SOUND_TYPE_RINGTONE) {
+ volume_sound_vconf_status_set(TYPE_VCONF_VIBRATION_STATUS, 1);
+ volume_sound_vib_play();
+ }
+ }
+}
+
+void volume_sound_vconf_status_set(volume_vconf_type_e type, int val)
+{
+ char *vconfkey = NULL;
+ switch (type)
+ {
+ case TYPE_VCONF_SOUND_STATUS:
+ vconfkey = VCONFKEY_SETAPPL_SOUND_STATUS_BOOL;
+ break;
+ case TYPE_VCONF_VIBRATION_STATUS:
+ vconfkey = VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL;
+ break;
+ default:
+ _E("Failed to set vconfkey : Type error");
+ return;
+ }
+
+ if (vconf_set_bool(vconfkey, val) < 0)
+ _E("Failed to set vconfkey : %s", vconfkey);
+}
+
+int volume_sound_vconf_status_get(volume_vconf_type_e type)
+{
+ int ret = -1;
+ char *vconfkey = NULL;
+
+ switch (type)
+ {
+ case TYPE_VCONF_SOUND_STATUS:
+ vconfkey = VCONFKEY_SETAPPL_SOUND_STATUS_BOOL;
+ break;
+ case TYPE_VCONF_VIBRATION_STATUS:
+ vconfkey = VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL;
+ break;
+ default:
+ _E("Failed to get vconfkey : Type error");
+ return -1;
+ }
+
+ if (vconf_get_bool(vconfkey, &ret) < 0) {
+ _E("Failed to get vconfkey : %s", vconfkey);
+ return -1;
+ }
+
+ return ret;
+}
+
+void volume_sound_vconfkey_register(void)
+{
+ if (vconf_notify_key_changed(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, _sound_status_changed_cb, NULL) < 0)
+ _E("Failed to notify vconfkey : VCONFKEY_SETAPPL_SOUND_STATUS_BOOL");
+
+ if (vconf_notify_key_changed(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, _sound_status_changed_cb, NULL) < 0)
+ _E("Failed to notify vconfkey : VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL");
+ _sound_status_changed_cb(NULL, NULL);
+}
+
+void volume_sound_vconfkey_unregister(void)
+{
+ if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, _sound_status_changed_cb) < 0)
+ _E("Failed to ignore vconfkey : VCONFKEY_SETAPPL_SOUND_STATUS_BOOL");
+
+ if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, _sound_status_changed_cb) < 0)
+ _E("Failed to ignore vconfkey : VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL");
+}
+
+static int _setting_sound_enabled(void)
+{
+ int snd_status = 0;
+
+ if (vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &snd_status) < 0)
+ _E("Failed to get vconfkey : VCONFKEY_SETAPPL_SOUND_STATUS_BOOL");
+
+ if (snd_status == 1)
+ return 1;
+
+ return 0;
+}
+
+static void _sound_status_changed_cb(keynode_t *key, void *data)
+{
+ bool bt_opened = false;
+ const char *keyname = vconf_keynode_get_name(key);
+ ret_if(!keyname);
+ _D("keyname : %s", keyname);
+
+ sound_type_e sound_type = volume_control_get_sound_type_at_show();
+ _D("sound type at show : %d", sound_type);
+
+ int sound = volume_sound_vconf_status_get(TYPE_VCONF_SOUND_STATUS);
+ _D("sound status : %d", sound);
+ sound_info.sound_status = sound;
+
+ int vibration = volume_sound_vconf_status_get(TYPE_VCONF_VIBRATION_STATUS);
+ _D("vibration : %d", vibration);
+ sound_info.vibration_status = vibration;
+
+ if (sound == 0 && vibration == 1)
+ _D("vibration mode");
+ else if (sound == 1 && vibration == 0) {
+ _D("sound mode");
+ sound_info.is_vibration = EINA_FALSE;
+ } else if (sound == 0 && vibration == 0) {
+ _D("mute mode");
+ sound_info.is_vibration = EINA_FALSE;
+ }
+
+ volume_view_volume_icon_set(sound_type, sound, vibration, bt_opened);
+}
+
--- /dev/null
+/*
+ * Copyright (c) 2009-2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <vconf.h>
+#include <vconf-keys.h>
+
+#include "main.h"
+#include "_util_log.h"
+#include "view.h"
+#include "control.h"
+#include "sound.h"
+#include "timer.h"
+
+#define DEL_TIMER(x) \
+ if (x) {\
+ _D("DELTIMER x : %p\n", x);\
+ ecore_timer_del(x);\
+ x = NULL;\
+ }
+#define ADD_TIMER(x, time, _timer_cb, data) \
+ if(x != NULL) DEL_TIMER(x); \
+ x = ecore_timer_add(time, _timer_cb, data);\
+ _D("ADDTIMER x : %p\n", x);\
+
+
+struct _timer_s_info {
+ Ecore_Timer *popup_timer; /* pop-up timer */
+ Ecore_Timer *slider_timer; /* slider timer */
+ Ecore_Timer *su_timer; /* short up timer */
+ Ecore_Timer *sd_timer; /* short down timer */
+ Ecore_Timer *lu_timer; /* long up timer */
+ Ecore_Timer *ld_timer; /* long down timer */
+ Ecore_Timer *bt_timer; /* long down timer */
+};
+
+static struct _timer_s_info timer_info = {
+ .popup_timer = NULL,
+ .slider_timer = NULL,
+ .su_timer = NULL,
+ .sd_timer = NULL,
+ .lu_timer = NULL,
+ .ld_timer = NULL,
+ .bt_timer = NULL,
+};
+
+static Eina_Bool _timer_short_down_cb(void *data);
+static Eina_Bool _timer_short_up_cb(void *data);
+static Eina_Bool _timer_slider_cb(void *data);
+static Eina_Bool _timer_popup_cb(void *data);
+static Eina_Bool _timer_bt_cb(void *data);
+
+Ecore_Timer *volume_timer_bt_timer_get(void)
+{
+ return timer_info.bt_timer;
+}
+
+Ecore_Timer *volume_timer_popup_timer_get(void)
+{
+ return timer_info.popup_timer;
+}
+
+Ecore_Timer *volume_timer_slider_timer_get(void)
+{
+ return timer_info.slider_timer;
+}
+
+Ecore_Timer *volume_timer_su_timer_get(void)
+{
+ return timer_info.su_timer;
+}
+
+Ecore_Timer *volume_timer_sd_timer_get(void)
+{
+ return timer_info.sd_timer;
+}
+
+void volume_timer_add(double time, volume_timer_type type)
+{
+ _D("VOLUME TIMER ADD");
+ if (type == TYPE_TIMER_POPUP) {
+ ADD_TIMER(timer_info.popup_timer, time, _timer_popup_cb, NULL);
+ } else if (type == TYPE_TIMER_SLIDER) {
+ ADD_TIMER(timer_info.slider_timer, time, _timer_slider_cb, NULL);
+ } else if (type == TYPE_TIMER_SD) {
+ ADD_TIMER(timer_info.sd_timer, time, _timer_short_down_cb, NULL);
+ } else if (type == TYPE_TIMER_SU) {
+ ADD_TIMER(timer_info.su_timer, time, _timer_short_up_cb, NULL);
+ } else if (type == TYPE_TIMER_BT) {
+ ADD_TIMER(timer_info.bt_timer, time, _timer_bt_cb, NULL);
+ } else {
+ _E("Failed to get type : type error(%d)", type);
+ return;
+ }
+}
+
+void volume_timer_del(volume_timer_type type)
+{
+ if (type == TYPE_TIMER_POPUP) {
+ DEL_TIMER(timer_info.popup_timer);
+ } else if (type == TYPE_TIMER_SLIDER) {
+ DEL_TIMER(timer_info.slider_timer);
+ } else if (type == TYPE_TIMER_SD) {
+ DEL_TIMER(timer_info.sd_timer);
+ } else if (type == TYPE_TIMER_SU) {
+ DEL_TIMER(timer_info.su_timer);
+ } else if (type == TYPE_TIMER_BT) {
+ DEL_TIMER(timer_info.bt_timer);
+ } else {
+ _E("Failed to get type : type error(%d)", type);
+ return;
+ }
+}
+
+static Eina_Bool _timer_bt_cb(void *data)
+{
+ if (VOLUME_ERROR_OK != volume_control_close_bt_display())
+ _E("Failed to close volume");
+ if (VOLUME_ERROR_OK != volume_control_cache_flush())
+ _E("Failed to flush cache");
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static Eina_Bool _timer_popup_cb(void *data)
+{
+ if (VOLUME_ERROR_OK != volume_control_hide_view())
+ _E("Failed to close volume");
+ if (VOLUME_ERROR_OK != volume_control_cache_flush())
+ _E("Failed to flush cache");
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static Eina_Bool _timer_slider_cb(void *data)
+{
+ Evas_Object *slider = volume_view_slider_get();
+ if (slider == NULL) {
+ timer_info.slider_timer = NULL;
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ double val = 0;
+
+ int sound = volume_sound_vconf_status_get(TYPE_VCONF_SOUND_STATUS);
+ _D("sound status : %d", sound);
+
+#if 0
+ int vibration = volume_sound_vconf_status_get(TYPE_VCONF_VIBRATION_STATUS);
+ _D("vibration : %d", vibration);
+#endif
+
+ sound_type_e sound_type = volume_control_get_sound_type_at_show();
+ _D("sound type at show : %d", sound_type);
+
+ val = elm_slider_value_get(slider);
+ val += 0.5;
+ _D("slider value : %d", (int)val);
+
+ if ((int)val != 0) {
+ if (sound_type != SOUND_TYPE_MEDIA) {
+ volume_sound_vconf_status_set(TYPE_VCONF_SOUND_STATUS, 1);
+ volume_sound_vconf_status_set(TYPE_VCONF_VIBRATION_STATUS, 0);
+ }
+ volume_sound_is_vibration_set(EINA_FALSE);
+ }
+ if (val < 1) {
+ if (sound_type != SOUND_TYPE_MEDIA) {
+ volume_sound_vconf_status_set(TYPE_VCONF_SOUND_STATUS, 0);
+
+ if (sound) {
+ volume_sound_vconf_status_set(TYPE_VCONF_VIBRATION_STATUS, 1);
+ volume_sound_vib_play();
+ }
+ }
+ elm_slider_value_set(slider, 0);
+ volume_sound_level_set(sound_type, 1);
+ }
+
+ return ECORE_CALLBACK_RENEW;
+}
+
+static Eina_Bool _timer_short_up_cb(void *data)
+{
+ _D("volume is in LongPress");
+ Evas_Object *win = volume_view_win_get();
+ if (!win) {
+ _E("Window is NULL");
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ sound_type_e sound_type = volume_control_get_sound_type_at_show();
+ _D("sound type at show : %d", sound_type);
+
+ if (!evas_object_visible_get(win) && sound_type == SOUND_TYPE_RINGTONE) {
+ _E("Window is hidden");
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ if (volume_view_is_slider_touching_get())
+ return ECORE_CALLBACK_RENEW;
+
+ ecore_timer_interval_set(timer_info.su_timer, 0.1);
+ volume_timer_del(TYPE_TIMER_SLIDER);
+
+ int sound_step = volume_sound_step_get();
+ _D("sound step : %d", sound_step);
+
+ int sound = volume_sound_vconf_status_get(TYPE_VCONF_SOUND_STATUS);
+ _D("sound status : %d", sound);
+
+ int val = volume_sound_level_get(sound_type);
+ if (val == -1) {
+ _E("Failed to get volume level");
+ return ECORE_CALLBACK_CANCEL;
+ }
+ _D("sound value : %d", val);
+
+ if (val == sound_step) {
+ _D("already sound value : %d", sound_step);
+ return ECORE_CALLBACK_RENEW;
+ }
+
+ if (!sound && sound_type == SOUND_TYPE_NOTIFICATION) {
+ _D("Do not adjust the noti type in no sound.");
+ return ECORE_CALLBACK_RENEW;
+ }
+
+ if (!sound && sound_type == SOUND_TYPE_RINGTONE) {
+ volume_sound_vconf_status_set(TYPE_VCONF_SOUND_STATUS, 1);
+ volume_sound_vconf_status_set(TYPE_VCONF_VIBRATION_STATUS, 0);
+ }
+
+ if (volume_sound_level_set(sound_type, val+1 > sound_step ? sound_step : val+1)) {
+ _D("[SAFETY_SOUND] release timer");
+ volume_timer_add(3.0, TYPE_TIMER_POPUP);
+ }
+ val = volume_sound_level_get(sound_type);
+
+ return ECORE_CALLBACK_RENEW;
+}
+
+static Eina_Bool _timer_short_down_cb(void *data)
+{
+ Evas_Object *win = volume_view_win_get();
+ if (!win) {
+ _E("Window is NULL");
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ sound_type_e sound_type = volume_control_get_sound_type_at_show();
+ _D("sound type at show : %d", sound_type);
+
+ if (!evas_object_visible_get(win) && sound_type == SOUND_TYPE_RINGTONE) {
+ _E("Window is hidden");;
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ if (volume_view_is_slider_touching_get())
+ return ECORE_CALLBACK_RENEW;
+
+ ecore_timer_interval_set(timer_info.sd_timer, 0.1);
+ volume_timer_del(TYPE_TIMER_SLIDER);
+
+ int sound = volume_sound_vconf_status_get(TYPE_VCONF_SOUND_STATUS);
+ _D("sound status : %d", sound);
+
+ int val = volume_sound_level_get(sound_type);
+ if (val == -1) {
+ _E("Failed to get volume level");
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ if (!sound && sound_type == SOUND_TYPE_NOTIFICATION) {
+ _D("Do not adjust the noti type in no sound.");
+ return ECORE_CALLBACK_RENEW;
+ }
+ _D("sound value : %d", val);
+
+ if (val == 1) {
+ if (sound && sound_type == SOUND_TYPE_RINGTONE) {
+ _D("Set sound status to vibration in long press");
+ volume_sound_vconf_status_set(TYPE_VCONF_SOUND_STATUS, 0);
+ volume_sound_vconf_status_set(TYPE_VCONF_VIBRATION_STATUS, 1);
+ volume_sound_vib_play();
+ }
+ } else if (!val) {
+ _D("already sound value : 0");
+ return ECORE_CALLBACK_RENEW;
+ }
+
+ if (sound || sound_type != SOUND_TYPE_RINGTONE)
+ volume_sound_level_set(sound_type, val-1 <= 0 ? 0 : val-1);
+
+ return ECORE_CALLBACK_RENEW;
+}
+
--- /dev/null
+/*
+ * Copyright (c) 2009-2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <Ecore.h>
+//#include <Ecore_X.h>
+#include <feedback.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <app.h>
+
+#include "main.h"
+#include "_util_efl.h"
+#include "_util_log.h"
+#include "view.h"
+#include "control.h"
+#include "timer.h"
+#include "x_event.h"
+#include "key_event.h"
+#include "sound.h"
+
+struct _view_s_info {
+ Evas_Object *win;
+ Evas_Object *evas;
+ Evas_Object *ly_outer;
+ Evas_Object *icon_volume;
+ Evas_Object *icon_setting;
+ Evas_Object *slider;
+
+ Evas_Object *lockscreen_splash;
+
+ Evas_Object *ao_settings;
+
+ Eina_Bool is_registered_callback;
+ Eina_Bool is_slider_touching;
+ Eina_Bool is_warning_displayed;
+};
+static struct _view_s_info view_info = {
+ .win = NULL,
+ .evas = NULL,
+ .ly_outer = NULL,
+ .icon_volume = NULL,
+ .icon_setting = NULL,
+ .slider = NULL,
+
+ .lockscreen_splash = NULL,
+
+ .ao_settings = NULL,
+
+ .is_registered_callback = EINA_FALSE,
+ .is_slider_touching = EINA_FALSE,
+ .is_warning_displayed = EINA_FALSE
+};
+
+static void _button_cb(void *data, Evas_Object *obj, void *event_info);
+static void _button_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void _app_control_error_check(int ret);
+static void _hide_launcher(void *data, Evas_Object *obj, const char *emission, const char *source);
+static void _slider_stop_cb(void *data, Evas_Object *obj, void *event_info);
+static void _slider_start_cb(void *data, Evas_Object *obj, void *event_info);
+static void _slider_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object* _slider_make();
+static Evas_Object* _volume_icon_make();
+static Evas_Object* _setting_icon_make();
+
+Evas_Object* volume_view_win_get(void)
+{
+ return view_info.win;
+}
+
+Evas_Object* volume_view_evas_get(void)
+{
+ return view_info.evas;
+}
+
+Evas_Object* volume_view_outer_layout_get(void)
+{
+ return view_info.ly_outer;
+}
+
+Evas_Object* volume_view_icon_volume_get(void)
+{
+ return view_info.icon_volume;
+}
+
+Evas_Object* volume_view_icon_setting_get(void)
+{
+ return view_info.icon_setting;
+}
+
+Evas_Object* volume_view_slider_get(void)
+{
+ return view_info.slider;
+}
+
+Eina_Bool volume_view_is_registered_callback_get(void)
+{
+ return view_info.is_registered_callback;
+}
+
+Eina_Bool volume_view_is_slider_touching_get(void)
+{
+ return view_info.is_slider_touching;
+}
+
+volume_error_e volume_view_set_default_slider(){
+ Evas_Object *slider = volume_view_slider_get();
+ elm_object_style_set(slider, "default");
+ return VOLUME_ERROR_OK;
+}
+
+volume_error_e volume_view_set_warning_slider(){
+ Evas_Object *slider = volume_view_slider_get();
+ elm_object_style_set(slider, "warning");
+ Edje_Message_Float_Set *msg = alloca(sizeof(Edje_Message_Float_Set) + (sizeof(double)));
+ msg->count = 1;
+ msg->val[0] = 0.66;
+ edje_object_message_send(elm_layout_edje_get(slider), EDJE_MESSAGE_FLOAT_SET, 0, msg);
+
+ return VOLUME_ERROR_OK;
+}
+
+int volume_mute_toggle_set()
+{
+ sound_type_e sound_type = volume_control_get_sound_type_at_show();
+ _D("sound type at show : %d", sound_type);
+
+ int sound = volume_sound_vconf_status_get(TYPE_VCONF_SOUND_STATUS);
+ _D("sound status : %d", sound);
+
+ int vibration = volume_sound_vconf_status_get(TYPE_VCONF_VIBRATION_STATUS);
+ _E("vibration : %d", vibration);
+
+ if (sound == 1 || vibration == 1) {
+ volume_sound_vconf_status_set(TYPE_VCONF_SOUND_STATUS, 0);
+ volume_sound_vconf_status_set(TYPE_VCONF_VIBRATION_STATUS, 0);
+
+ if(VOLUME_ERROR_OK != volume_view_slider_value_set(0))
+ _E("Failed to set slider value");
+
+ return 0;
+ }
+ else {
+ volume_sound_vconf_status_set(TYPE_VCONF_SOUND_STATUS, 1);
+ volume_sound_vconf_status_set(TYPE_VCONF_VIBRATION_STATUS, 0);
+
+ int val = volume_sound_level_get(sound_type);
+ retv_if(val == -1, 0);
+
+ if (val == 0) {
+ if (VOLUME_ERROR_OK != volume_view_slider_value_set(1))
+ _E("Failed to set slider value");
+ volume_sound_level_set(sound_type, 1);
+ } else {
+ if (VOLUME_ERROR_OK != volume_view_slider_value_set(val))
+ _E("Failed to set slider value");
+ }
+
+ return 1;
+ }
+}
+
+volume_error_e volume_view_slider_value_set(int val)
+{
+ _D("Slider value set : %d", val);
+ retv_if(view_info.is_slider_touching, VOLUME_ERROR_FAIL);
+ retv_if(val<0, VOLUME_ERROR_FAIL);
+
+ elm_slider_value_set(view_info.slider, val);
+
+ return VOLUME_ERROR_OK;
+}
+
+void volume_view_volume_icon_set(sound_type_e sound_type, int sound, int vibration, bool bt_opened)
+{
+ char *img = NULL;
+
+ if (sound == -1 || vibration == -1) {
+ img = IMG_VOLUME_ICON_MUTE;
+ _D("img : %s", img);
+ elm_image_file_set(view_info.icon_volume, EDJ_APP, img);
+ return;
+ }
+
+ switch (sound_type)
+ {
+ case SOUND_TYPE_RINGTONE:
+ if (sound)
+ img = IMG_VOLUME_ICON;
+ else if (vibration)
+ img = IMG_VOLUME_ICON_VIB;
+ else
+ img = IMG_VOLUME_ICON_MUTE;
+ break;
+ case SOUND_TYPE_MEDIA:
+ img = IMG_VOLUME_ICON_MEDIA;
+ break;
+ case SOUND_TYPE_CALL:
+ if (bt_opened)
+ img = IMG_VOLUME_ICON_CALL;
+ else
+ img = IMG_VOLUME_ICON_CALL;
+ break;
+ case SOUND_TYPE_NOTIFICATION:
+ if (sound)
+ img = IMG_VOLUME_ICON_NOTI;
+ else if(vibration)
+ img = IMG_VOLUME_ICON_NOTI_VIB;
+ else
+ img = IMG_VOLUME_ICON_NOTI_MUTE;
+ break;
+ case SOUND_TYPE_ALARM:
+ img = IMG_VOLUME_ICON_MEDIA;
+ break;
+ default:
+ img = IMG_VOLUME_ICON;
+ break;
+ }
+
+ volume_view_set_default_slider();
+
+ _D("img : %s", img);
+ elm_image_file_set(view_info.icon_volume, EDJ_APP, img);
+}
+
+void volume_view_setting_icon_set(const char *file)
+{
+ ret_if(!file);
+
+ Evas_Object *icon_setting = view_info.icon_setting;
+ ret_if(!icon_setting);
+
+ elm_image_file_set(icon_setting, EDJ_APP, file);
+}
+
+void volume_view_setting_icon_callback_add(void)
+{
+ _D("Setting callback add");
+ ret_if(view_info.is_registered_callback);
+
+ Evas_Object *icon_setting = view_info.icon_setting;
+ ret_if(!icon_setting);
+
+ evas_object_event_callback_add(icon_setting, EVAS_CALLBACK_MOUSE_DOWN, _button_mouse_down_cb, NULL);
+ evas_object_smart_callback_add(icon_setting, "clicked", _button_cb, NULL);
+
+ view_info.is_registered_callback = EINA_TRUE;
+}
+
+void volume_view_setting_icon_callback_del(void)
+{
+ _D("Setting callback del");
+ ret_if(!view_info.is_registered_callback);
+
+ Evas_Object *icon_setting = view_info.icon_setting;
+ ret_if(!icon_setting);
+
+ evas_object_smart_callback_del(icon_setting, "clicked", _button_cb );
+ evas_object_event_callback_del(icon_setting, EVAS_CALLBACK_MOUSE_DOWN, _button_mouse_down_cb);
+
+ view_info.is_registered_callback = EINA_FALSE;
+}
+
+Evas_Object *add_slider(Evas_Object *parent, int min, int max, int val)
+{
+ retv_if(!parent, NULL);
+ Evas_Object *slider = elm_slider_add(parent);
+ retvm_if(!slider, NULL, "Failed to add slider");
+
+ elm_slider_horizontal_set(slider, EINA_TRUE);
+ elm_slider_indicator_show_set(slider, EINA_FALSE);
+ elm_slider_indicator_format_set(slider, "%.0f");
+ evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
+ elm_slider_min_max_set(slider, min, max);
+ elm_slider_value_set(slider, val);
+
+ return slider;
+}
+
+volume_error_e volume_view_window_show(void)
+{
+ evas_object_show(view_info.win);
+ elm_object_signal_emit(view_info.ly_outer, "show_effect", "clipper");
+ volume_view_setting_icon_callback_add();
+
+ return VOLUME_ERROR_OK;
+}
+
+volume_error_e volume_view_window_hide(void)
+{
+ elm_object_signal_emit(view_info.ly_outer, "hide_effect", "clipper");
+ volume_view_setting_icon_callback_del();
+
+ return VOLUME_ERROR_OK;
+}
+
+Evas_Object *add_layout(Evas_Object *parent, const char *file, const char *group)
+{
+ retvm_if(!parent, NULL, "Invalid argument: parent is NULL\n");
+ retvm_if(!file, NULL, "Invalid argument: file is NULL\n");
+ retvm_if(!group, NULL, "Invalid argument: group is NULL\n");
+
+ Evas_Object *eo = elm_layout_add(parent);
+ retvm_if(!eo, NULL, "Failed to add layout\n");
+
+ int r = -1;
+ r = elm_layout_file_set(eo, file, group);
+ if (!r) {
+ _E("Failed to set file[%s]\n", file);
+ evas_object_del(eo);
+ return NULL;
+ }
+
+ evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(eo);
+
+ return eo;
+}
+
+volume_error_e volume_view_layout_create(Evas_Object *win)
+{
+ LOGD("Layout create");
+
+ retv_if(!win, VOLUME_ERROR_FAIL);
+
+ Evas_Object *ly_outer = add_layout(win, EDJ_APP, "volume_layout");
+ retv_if(!ly_outer, VOLUME_ERROR_FAIL);
+ elm_win_resize_object_add(win, ly_outer);
+ elm_object_signal_callback_add(ly_outer, "hide,popup", "event", _hide_launcher, NULL);
+ view_info.ly_outer = ly_outer;
+
+ /* make setting icon */
+ Evas_Object *icon_setting = _setting_icon_make();
+ retv_if(!icon_setting, VOLUME_ERROR_FAIL);
+ elm_object_part_content_set(ly_outer, "ic_setting", icon_setting);
+ view_info.icon_setting = icon_setting;
+
+ /* make volume icon */
+ Evas_Object *icon_volume = _volume_icon_make();
+ retv_if(!icon_volume, VOLUME_ERROR_FAIL);
+ elm_object_part_content_set(ly_outer, "ic_sound", icon_volume);
+ view_info.icon_volume = icon_volume;
+
+ /* make slider */
+ Evas_Object *slider = _slider_make();
+ retv_if(!slider, VOLUME_ERROR_FAIL);
+ view_info.slider = slider;
+ elm_object_part_content_set(ly_outer, "sw.slider", slider);
+
+ return VOLUME_ERROR_OK;
+}
+
+Evas_Object *add_volume_window(const char *name)
+{
+ _D(">>>>>>>>>>>>>>>>>>>>>>>>>> add volume window >>>>>>>>>>>>>>>>>>");
+ Evas_Object *eo = NULL;
+ Evas *evas = NULL;
+ int x, y, w, h = 0;
+
+ eo = elm_win_add(NULL, name, ELM_WIN_NOTIFICATION);
+ retv_if(!eo, NULL);
+ evas = evas_object_evas_get(eo);
+ retv_if(!evas, NULL);
+ view_info.evas = evas;
+
+ elm_win_alpha_set(eo, EINA_TRUE);
+ elm_win_title_set(eo, name);
+ elm_win_borderless_set(eo, EINA_TRUE);
+ ecore_evas_name_class_set(ecore_evas_ecore_evas_get(evas), "SYSTEM_POPUP", "SYSTEM_POPUP");
+ elm_win_role_set(eo, "no-dim");
+
+ elm_win_screen_size_get(eo, &x, &y, &w, &h);
+ _D("volume screen size => x: %d, y: %d, w: %d, h: %d", x, y, w, h);
+
+ return eo;
+}
+
+Evas_Object *volume_view_window_create(void)
+{
+ _D(">>>>>>>>>>>>>>>>>>>>>>>>>>> view win create >>>>>>>>>>>>>>>>>>>");
+ Evas_Object *win = add_volume_window(PACKAGE);
+ retv_if(!win, NULL);
+
+ view_info.win = win;
+ elm_win_keygrab_set(win, KEY_VOLUMEUP, 0, 0, 0, ELM_WIN_KEYGRAB_SHARED);
+ elm_win_keygrab_set(win, KEY_VOLUMEDOWN, 0, 0, 0, ELM_WIN_KEYGRAB_SHARED);
+
+ return win;
+}
+
+void _lock_sound_check(void)
+{
+ int lcdoff_source = -1;
+ int lock_sound = -1;
+ int lock_type = -1;
+
+ if (vconf_get_int(VCONFKEY_PM_LCDOFF_SOURCE, &lcdoff_source) < 0) {
+ _E("Failed to get vconfkey : VCONFKEY_PM_LCDOFF_SOURCE");
+ return;
+ }
+ _D("lcd off source : %d", lcdoff_source);
+
+ if (lcdoff_source != VCONFKEY_PM_LCDOFF_BY_POWERKEY) {
+ _E("Should not play lock sound");
+ return;
+ }
+
+ if (vconf_get_bool(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, &lock_sound) < 0) {
+ _E("Failed to get vconfkey : VCONFKEY_SETAPPL_SOUND_LOCK_BOOL");
+ return;
+ }
+ _D("lock sound : %d", lock_sound);
+
+ if (lock_sound) {
+ if (vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &lock_type) < 0) {
+ _E("Failed to get vconfkey : VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT");
+ lock_type = 0;
+ }
+ _D("lock type : %d", lock_type);
+
+ /*if (lock_type == SETTING_SCREEN_LOCK_TYPE_SWIPE)
+ feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_LOCK_SWIPE);
+
+ else
+ feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_LOCK);*/
+ }
+}
+
+Evas_Object* show_lockscreen_splash(const char* bg_path)
+{
+ _D(" ");
+
+ retv_if(bg_path == NULL, NULL);
+
+ if (view_info.lockscreen_splash) {
+ _E("There is remain fake_bg : remove old one");
+ evas_object_del(view_info.lockscreen_splash);
+ view_info.lockscreen_splash = NULL;
+ }
+
+ /* Check Lock Sound */
+ _lock_sound_check();
+
+ /* hide volume window */
+ if(VOLUME_ERROR_OK != volume_view_window_hide())
+ _E("Failed to hide window");
+
+ Evas_Object *win_splash = elm_win_add(NULL,"lockscreen_splash", ELM_WIN_NOTIFICATION);
+
+ if (!win_splash) {
+ _E("Failed to add splash window");
+ return NULL;
+ }
+
+ _D("Splash window created");
+
+ Evas_Object *bg = elm_bg_add(win_splash);
+ if (!bg) {
+ _D("Failed to get background");
+ evas_object_del(win_splash);
+ return NULL;
+ }
+
+ elm_win_resize_object_add(win_splash, bg);
+ elm_bg_file_set(bg, bg_path, NULL);
+ evas_object_show(bg);
+
+ evas_object_show(win_splash);
+
+ _D("Splash window shown");
+
+ view_info.lockscreen_splash = win_splash;
+
+ return win_splash;
+}
+
+volume_error_e hide_lockscreen_splash(void)
+{
+ _D(" ");
+
+ if (!view_info.lockscreen_splash) {
+ _E("No splash window found");
+ return VOLUME_ERROR_FAIL;
+ }
+
+ evas_object_del(view_info.lockscreen_splash);
+ view_info.lockscreen_splash = NULL;
+ _D("Splash window closed");
+
+ return VOLUME_ERROR_OK;
+}
+static void _slider_start_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ view_info.is_slider_touching = EINA_TRUE;
+
+ volume_timer_del(TYPE_TIMER_POPUP);
+
+ volume_timer_add(0.2, TYPE_TIMER_SLIDER);
+}
+
+static void _slider_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ volume_timer_del(TYPE_TIMER_POPUP);
+
+ double val = 0;
+
+ sound_type_e sound_type = volume_control_get_sound_type_at_show();
+ _D("sound type at show : %d", sound_type);
+
+ val = elm_slider_value_get(view_info.slider);
+ val += 0.5;
+ _D("slider value : %d", val);
+
+ if (view_info.is_slider_touching)
+ return;
+
+ volume_sound_change_set((int)val);
+
+ if (!volume_key_event_is_pressing_get()) {
+ volume_timer_add(3.0, TYPE_TIMER_POPUP);
+ return;
+ }
+
+ if (!view_info.is_slider_touching) {
+ volume_timer_add(3.0, TYPE_TIMER_POPUP);
+ return;
+ }
+}
+
+static void _slider_stop_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ view_info.is_slider_touching = EINA_FALSE;
+
+ volume_timer_del(TYPE_TIMER_SLIDER);
+
+ Evas_Object *slider = volume_view_slider_get();
+ ret_if(slider == NULL);
+
+ double val = 0;
+
+ val = elm_slider_value_get(slider);
+ val += 0.5;
+ _D("slider value : %d", (int)val);
+
+ volume_sound_change_set((int)val);
+
+ volume_timer_add(3.0, TYPE_TIMER_POPUP);
+}
+
+static void _hide_launcher(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ evas_object_hide(view_info.win);
+}
+
+static void _button_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ volume_view_setting_icon_set(IMG_VOLUME_ICON_SETTINGS_PRESSED);
+}
+
+static void _app_control_error_check(int ret)
+{
+ if (ret != APP_CONTROL_ERROR_NONE) {
+ switch (ret)
+ {
+ case APP_CONTROL_ERROR_INVALID_PARAMETER :
+ _E("error : APP_CONTROL_ERROR_INVALID_PARAMETER");
+ break;
+ case APP_CONTROL_ERROR_OUT_OF_MEMORY :
+ _E("error : APP_CONTROL_ERROR_OUT_OF_MEMORY");
+ break;
+ case APP_CONTROL_ERROR_APP_NOT_FOUND :
+ _E("error : APP_CONTROL_ERROR_APP_NOT_FOUND");
+ break;
+ case APP_CONTROL_ERROR_LAUNCH_REJECTED :
+ _E("error : APP_CONTROL_ERROR_LAUNCH_REJECTED");
+ break;
+ default :
+ _E("error : %d", ret);
+ break;
+ }
+ }
+}
+
+static void _button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ _D("volume setting is clicked");
+ int ret = -1;
+ app_control_h svc;
+
+ if (evas_object_visible_get(view_info.win)) {
+ volume_timer_del(TYPE_TIMER_POPUP);
+
+ ret = app_control_create(&svc);
+ _app_control_error_check(ret);
+
+ ret = app_control_set_app_id(svc, "org.tizen.setting.volume");
+ _app_control_error_check(ret);
+
+ ret = app_control_send_launch_request(svc, NULL, NULL);
+ _app_control_error_check(ret);
+
+ if (VOLUME_ERROR_OK != volume_control_pause())
+ _E("Failed to pause volume");
+
+ app_control_destroy(svc);
+ }
+}
+
+static Evas_Object* _setting_icon_make()
+{
+ Evas_Object *icon_setting = elm_icon_add(view_info.ly_outer);
+ retv_if(!icon_setting, NULL);
+
+ evas_object_size_hint_aspect_set(icon_setting, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+ elm_image_resizable_set(icon_setting, EINA_TRUE, EINA_TRUE);
+
+ view_info.icon_setting = icon_setting;
+
+ volume_view_setting_icon_set(IMG_VOLUME_ICON_SETTINGS);
+ evas_object_show(icon_setting);
+
+ return icon_setting;
+}
+
+static Evas_Object* _volume_icon_make()
+{
+ Evas_Object *icon_volume = elm_icon_add(view_info.ly_outer);
+ retv_if(!icon_volume, NULL);
+
+ evas_object_size_hint_aspect_set(icon_volume, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+ elm_image_resizable_set(icon_volume, EINA_TRUE, EINA_TRUE);
+ evas_object_show(icon_volume);
+
+ return icon_volume;
+}
+
+static Evas_Object* _slider_make()
+{
+ _D("Volume Slider Make");
+ sound_type_e sound_type = volume_control_get_sound_type_at_show();
+ _D("sound type at show : %d", sound_type);
+
+ //int sound_step = volume_sound_sound_manager_step_get(sound_type);
+ int sound_step = 7;
+ _D("sound step : %d", sound_step);
+
+ int sound_val = volume_sound_level_get(sound_type);
+ if (sound_val == -1) {
+ _E("Failed to get volume level");
+ sound_val = 0;
+ }
+ _D("sound value : %d", sound_val);
+
+ Evas_Object *slider = add_slider(view_info.ly_outer, 0, sound_step, sound_val);
+ retv_if(!slider, NULL);
+ evas_object_smart_callback_add(slider, "slider,drag,start", _slider_start_cb, NULL);
+ evas_object_smart_callback_add(slider, "changed", _slider_changed_cb, NULL);
+ evas_object_smart_callback_add(slider, "slider,drag,stop", _slider_stop_cb, NULL);
+
+ return slider;
+}
+
+++ /dev/null
-/*
- * org.tizen.volume
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#include <stdio.h>
-
-#include "volume.h"
-#include "_util_log.h"
-#include "_util_efl.h"
-#include "_logic.h"
-
-struct text_part {
- char *part;
- char *msgid;
-};
-
-static Eina_Bool rotate_cb(void *data, int type, void *event)
-{
- struct appdata *ad = data;
- Ecore_X_Event_Client_Message *ev = event;
-
- retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n");
- if (!event){
- return ECORE_CALLBACK_RENEW;
- }
-
- if (ev->message_type == ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE){
- _rotate_func(data);
- }
- return ECORE_CALLBACK_RENEW;
-}
-
-static int app_create(void *data)
-{
- struct appdata *ad = data;
-
- retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n");
-
- if(_app_create(ad)!=0){
- _E("_app_create() if failed\n");
- return -1;
- }
-
- /* add rotation event callback */
- ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE,
- rotate_cb, (void *)data);
-
- return 0;
-}
-
-static int app_terminate(void *data)
-{
- struct appdata *ad = data;
-
- if (ad->win)
- evas_object_del(ad->win);
-
- return 0;
-}
-
-static int app_pause(void *data)
-{
- _app_pause(data);
- return 0;
-}
-
-static int app_resume(void *data)
-{
- return 0;
-}
-
-static int app_reset(bundle *b, void *data)
-{
- _D("%s\n", __func__);
- struct appdata *ad = data;
- retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n");
-
- if(_app_reset(b, data) == -1){
- _D("_app_reset() if failed\n");
- return -1;
- }
- if (ad->win)
- elm_win_activate(ad->win);
-
- return 0;
-}
-
-int main(int argc, char *argv[])
-{
- struct appdata ad;
- struct appcore_ops ops = {
- .create = app_create,
- .terminate = app_terminate,
- .pause = app_pause,
- .resume = app_resume,
- .reset = app_reset,
- };
-
- /* appcore measure time example */
- printf("from AUL to %s(): %d msec\n", __func__,
- appcore_measure_time_from("APP_START_TIME"));
-
- memset(&ad, 0x0, sizeof(struct appdata));
- ops.data = &ad;
-
- return appcore_efl_main(PACKAGE, &argc, &argv, &ops);
-}
-
+++ /dev/null
-/*
- * org.tizen.volume
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __VOLUME_H__
-#define __VOLUME_H__
-
-#include <Elementary.h>
-#include <mm_sound.h>
-#include <ui-gadget.h>
-#include <syspopup.h>
-#include <appcore-efl.h>
-#include <Ecore_X.h>
-#include <notification.h>
-#include <tzplatform_config.h>
-#if !defined(PACKAGE)
-# define PACKAGE "volume"
-#endif
-
-#if !defined(RESDIR)
-# define RESDIR tzplatform_mkpath(TZ_SYS_RO_APP,"org.tizen.volume/res")
-#endif
-
-#if !defined(LOCALEDIR)
-# define LOCALEDIR RESDIR"/locale"
-#endif
-
-#if !defined(EDJDIR)
-# define EDJDIR RESDIR"/edje"
-#endif
-
-#if !defined(PKGNAME)
-# define PKGNAME "org.tizen.volume"
-#endif
-
-#define EDJ_APP EDJDIR"/volume_app.edj"
-#define GRP_VOLUME_BLOCKEVENTS "block_events"
-#define GRP_VOLUME_LAYOUT "volumeLayout"
-#define GRP_VOLUME_CONTENT "volumeLayoutContent"
-#define GRP_VOLUME_SLIDER_HORIZONTAL "volumeHorizontalSlider"
-
-#define IMG_VOLUME_PACKAGE_ICON "/usr/share/icons/default/small/org.tizen.volume.png"
-#define IMG_VOLUME_ICON "00_volume_icon.png"
-#define IMG_VOLUME_ICON_CALL "00_volume_icon_Call.png"
-#define IMG_VOLUME_ICON_MUTE "00_volume_icon_Mute.png"
-#define IMG_VOLUME_ICON_VIB "00_volume_icon_Vibrat.png"
-#define IMG_VOLUME_ICON_HEADPHONE "00_volume_icon_headphone.png"
-#define IMG_VOLUME_ICON_MEDIA "00_volume_icon_media.png"
-#define IMG_VOLUME_ICON_SETTINGS "00_volume_icon_settings.png"
-#define IMG_VOLUME_ICON_SETTINGS_PRESSED "00_volume_icon_settings_pressed.png"
-
-#define IDS_WARNING_MSG "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
-
-#define S_(str) dgettext("sys_string", str)
-#define T_(str) dgettext(PACKAGE, str)
-
-#define ADD_TIMER(x, time, _timer_cb, data) \
- x = ecore_timer_add(time, _timer_cb, data);\
-
-#define DEL_TIMER(x) \
- if (x) {\
- ecore_timer_del(x);\
- x = NULL;\
- }
-
-#define USE_SETTING_ICON 0
-
-struct appdata
-{
- Ecore_X_Window input_win;
- Evas_Object *win, *block_events, *ly, *sl, *ic, *ic_settings, *warn_lb;
-
- Ecore_Timer *ptimer;
- Ecore_Timer *stimer; /* slider timer */
- Ecore_Timer *sutimer, *sdtimer, *lutimer, *ldtimer; /* long press */
- Ecore_Timer *warntimer; /* warning message timer */
- Ecore_Timer *luwarmtimer, *ldwarmtimer;
- volume_type_t type;
- system_audio_route_device_t device;
- int step;
- int angle;
-
- /* bundle */
- bundle *volume_bundle;
-
- /* ticker notification handler */
- int noti_id;
- bool noti_seen;
-
- /* add more variables here */
- int sh; /* svi handle */
- int flag_pressing; /* EINA_TRUE : hw key pressing, block slider cb */
- int flag_touching; /* EINA_TRUE : slider indicator pressing, block hw key cb */
- int flag_launching; /* EINA_TRUE : volume is launcing block double lauch*/
- int flag_deleting; /* EINA_TRUE : closing volume, block double close_volume() */
- int flag_media;
- int flag_shared_grabed;
- int flag_top_positioni_grabed;
- int flag_exclusive_grabed;
- int flag_emul; /* EINA_TRUE : emulator, EINA_FALSE : target */
-
- /* Ecore event handler */
- Ecore_Event_Handler *event_volume_up;
- Ecore_Event_Handler *event_volume_down;
-};
-
-#endif /* __VOLUME_H__ */
-
--- /dev/null
+/*
+ * Copyright (c) 2009-2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 <X11/Xlib.h>
+//#include <X11/extensions/XInput.h>
+//#include <X11/extensions/XInput2.h>
+//#include <X11/extensions/shape.h>
+
+#include "main.h"
+#include "view.h"
+#include "control.h"
+#include "_util_log.h"
+
+/*struct _x_event_s_info {
+ Ecore_Event_Handler *event_outer_touch_handler;
+ Eina_Bool is_first_touch;
+};
+static struct _x_event_s_info x_event_info = {
+ .event_outer_touch_handler = NULL,
+ .is_first_touch = EINA_TRUE,
+};
+
+static Eina_Bool _event_handler_cb(void *data, int type, void *event_info);
+static void _x_touch_check(int cur_x, int cur_y);
+
+void volume_x_input_event_shape(Evas_Object *win, Eina_Bool is_warning_visible)
+{
+ _D("X input event shape");
+ Evas_Object *ly = NULL;
+ XRectangle rect;
+
+ int x, y, w ,h;
+ int tmp_x;
+ int tmp_y;
+ int tmp_w;
+ int tmp_h;
+
+ int current_angle = volume_control_get_current_angle();
+ _D("Current angle : %d", current_angle);
+
+ ly = volume_view_outer_layout_get();
+ if (!ly) {
+ _E("Failed to load edje");
+ return;
+ }
+
+ edje_object_part_geometry_get(_EDJ(ly), "bg", &x, &y, &w, &h);
+ _D("The position of bg x: %d, y: %d, w: %d, h: %d", x, y, w, h);
+
+ if (current_angle == 90) {
+ tmp_x = x;
+ tmp_y = y;
+ tmp_w = w;
+ tmp_h = h;
+
+ x = tmp_y;
+ y = tmp_x;
+ w = tmp_h;
+ h = tmp_w;
+ }
+ else if (current_angle == 270) {
+ tmp_x = x;
+ tmp_y = y;
+ tmp_w = w;
+ tmp_h = h;
+
+ x = volume_control_get_viewport_width()-tmp_y-tmp_h;
+ y = tmp_x;
+ w = tmp_h;
+ h = tmp_w;
+ }
+
+ rect.x = x;
+ rect.y = y;
+ rect.height = h;
+ rect.width = w;
+ _D("shape x: %d, y: %d, w: %d, h: %d", x, y, w, h);
+ XShapeCombineRectangles(ecore_x_display_get(), elm_win_xwindow_get(win), ShapeInput, 0, 0, &rect, 1, ShapeSet, Unsorted);
+}
+
+volume_error_e volume_x_input_event_register(void)
+{
+ if (x_event_info.event_outer_touch_handler == NULL) {
+ XIEventMask event_mask;
+
+ event_mask.deviceid = XIAllMasterDevices;
+ event_mask.mask_len = XIMaskLen(XI_RawMotion);
+ event_mask.mask = calloc(event_mask.mask_len, sizeof(char));
+ retvm_if(!event_mask.mask, VOLUME_ERROR_FAIL, "Failed to allocate memory");
+
+ XISetMask(event_mask.mask, XI_RawMotion);
+ XISelectEvents(ecore_x_display_get(), ecore_x_window_root_first_get(), &event_mask, 1);
+
+ x_event_info.event_outer_touch_handler = ecore_event_handler_add(ECORE_X_EVENT_GENERIC, (Ecore_Event_Handler_Cb)_event_handler_cb, NULL);
+
+ x_event_info.is_first_touch = EINA_TRUE;
+ free(event_mask.mask);
+ }
+
+ return VOLUME_ERROR_OK;
+}
+
+volume_error_e volume_x_input_event_unregister(void)
+{
+ retv_if(x_event_info.event_outer_touch_handler == NULL, VOLUME_ERROR_FAIL);
+
+ ecore_event_handler_del(x_event_info.event_outer_touch_handler);
+ x_event_info.event_outer_touch_handler = NULL;
+
+ return VOLUME_ERROR_OK;
+}
+
+static void _x_touch_check(int cur_x, int cur_y)
+{
+ int current_angle = volume_control_get_current_angle();
+
+ int x = 0, y = 0;
+ int w = 0, h = 0;
+
+ Evas_Object *ly = volume_view_outer_layout_get();
+
+ if (!ly) {
+ _E("Failed to load edje");
+ return;
+ }
+
+ edje_object_part_geometry_get(_EDJ(ly), "bg", &x, &y, &w, &h);
+ _D("control view x: %d, y: %d, w: %d, h: %d", x, y, w, h);
+
+ w = x + w; //WIDTH
+ h = y + h; //HEIGHT
+
+ if (current_angle == 90) {
+ if (cur_x > y && cur_x < h && cur_y > x && cur_y < w)
+ _D("touched inside");
+ else {
+ _D("current angle : %d / touched outside ", current_angle);
+ if (VOLUME_ERROR_OK != volume_control_hide_view())
+ _E("Failed to close volume");
+
+ if (VOLUME_ERROR_OK != volume_control_cache_flush())
+ _E("Failed to flush cache");
+ }
+ } else if (current_angle == 270) {
+ if (cur_x > h && cur_x < (volume_control_get_viewport_width() - y) && cur_y > x && cur_y < w)
+ _D("touched inside");
+ else {
+ _D("current angle : %d / touched outside ", current_angle);
+ if (VOLUME_ERROR_OK != volume_control_hide_view())
+ _E("Failed to close volume");
+
+ if (VOLUME_ERROR_OK != volume_control_cache_flush())
+ _E("Failed to flush cache");
+ }
+ } else {
+ if (x < cur_x && cur_x < w && y < cur_y && cur_y < h)
+ _D("current angle : %d / touched inside", current_angle);
+ else {
+ _D("current angle : %d / touched outside ", current_angle);
+ if (VOLUME_ERROR_OK != volume_control_hide_view())
+ _E("Failed to close volume");
+
+ if (VOLUME_ERROR_OK != volume_control_cache_flush())
+ _E("Failed to flush cache");
+ }
+ }
+}
+
+static Eina_Bool _event_handler_cb(void *data, int type, void *event_info)
+{
+ _D("%s", __func__);
+
+ Ecore_X_Event_Generic *e = (Ecore_X_Event_Generic *)event_info;
+ retv_if(e->evtype != XI_RawMotion, ECORE_CALLBACK_DONE);
+
+ if (x_event_info.is_first_touch == EINA_TRUE) {
+ x_event_info.is_first_touch = EINA_FALSE;
+ return ECORE_CALLBACK_DONE;
+ }
+ x_event_info.is_first_touch = EINA_TRUE;
+
+ int cur_x = 0, cur_y = 0;
+ ecore_x_pointer_xy_get(ecore_x_window_root_first_get(), &cur_x, &cur_y);
+ _D("cur_x : %d / cur_y : %d", cur_x, cur_y);
+
+ _x_touch_check(cur_x, cur_y);
+
+ return ECORE_CALLBACK_DONE;
+}
+*/