diff options
author | HyungKyu Song <hk76.song@samsung.com> | 2013-02-16 00:01:02 +0900 |
---|---|---|
committer | HyungKyu Song <hk76.song@samsung.com> | 2013-02-16 00:01:02 +0900 |
commit | 3163ca42d02787c46aa2f63945fa0565b34ecaa1 (patch) | |
tree | 1635b28637573607a66009a127083a11cd1e383c | |
parent | 4113731f43c52c82e17b0376a45c0f9a361bc21b (diff) | |
download | taskmanager-3163ca42d02787c46aa2f63945fa0565b34ecaa1.tar.gz taskmanager-3163ca42d02787c46aa2f63945fa0565b34ecaa1.tar.bz2 taskmanager-3163ca42d02787c46aa2f63945fa0565b34ecaa1.zip |
115 files changed, 7172 insertions, 0 deletions
@@ -0,0 +1,2 @@ +Hong Kwon <hhh.kwon at samsung dot com> +Minho Kim <minho07.kim at samsung dot com> diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100755 index 0000000..c8d3038 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,104 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +PROJECT(taskmgr C) + +SET(SRCS + src/taskmanager.c + src/_util_efl.c + src/_genlist.c + src/_logic.c +# src/_cpu.c + src/_eina.c +# src/_info.c + src/_progressbar.c +) + +SET(VENDOR tizen) +SET(PACKAGE ${PROJECT_NAME}) +SET(PKGNAME "org.${VENDOR}.${PACKAGE}") +SET(PREFIX ${CMAKE_INSTALL_PREFIX}) +SET(BINDIR "${PREFIX}/bin") +SET(RESDIR "${PREFIX}/res") +SET(DATADIR "/opt/usr/apps/org.${VENDOR}.${PACKAGE}/data") +SET(LOCALEDIR "${RESDIR}/locale") +SET(ICONDIR "/usr/share/icons/default/small") +SET(IMAGEDIR "${RESDIR}/images/${PACKAGE}") +SET(EDJDIR "${RESDIR}/edje/${PACKAGE}") + +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/src) + +IF("${CMAKE_BUILD_TYPE}" STREQUAL "") + SET(CMAKE_BUILD_TYPE "Release") +ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "") +MESSAGE("Build type: ${CMAKE_BUILD_TYPE}") + +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}) + +INCLUDE(FindPkgConfig) +pkg_check_modules(pkgs REQUIRED + ecore + ecore-file + ecore-input + ecore-x + edje + eina + evas + appcore-efl + elementary + aul + utilX + rua + vconf + sysman + ail + dlog +) + +FOREACH(flag ${pkgs_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC") +SET(CMAKE_C_FLAGS_DEBUG "-O0 -g") +SET(CMAKE_C_FLAGS_RELEASE "-O2") + +FIND_PROGRAM(UNAME NAMES uname) +EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH") +IF("${ARCH}" STREQUAL "arm") + ADD_DEFINITIONS("-DTARGET") + MESSAGE("add -DTARGET") +ENDIF("${ARCH}" STREQUAL "arm") + +ADD_DEFINITIONS("-fpie") + +ADD_DEFINITIONS("-DVENDOR=\"${VENDOR}\"") +ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE}\"") +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") + +ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS}) +TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} "-pie") + +# install binary +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 application HOME directory +INSTALL(DIRECTORY DESTINATION ${DATADIR}) + +#install etc +ADD_SUBDIRECTORY(data) + +# i18n +ADD_SUBDIRECTORY(po) diff --git a/LICENSE.Flora b/LICENSE.Flora new file mode 100755 index 0000000..9c95663 --- /dev/null +++ b/LICENSE.Flora @@ -0,0 +1,206 @@ +Flora License + +Version 1.0, May, 2012 + +http://floralicense.org/license/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, +and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by +the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and +all other entities that control, are controlled by, or are +under common control with that entity. For the purposes of +this definition, "control" means (i) the power, direct or indirect, +to cause the direction or management of such entity, +whether by contract or otherwise, or (ii) ownership of fifty percent (50%) +or more of the outstanding shares, or (iii) beneficial ownership of +such entity. + +"You" (or "Your") shall mean an individual or Legal Entity +exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, +including but not limited to software source code, documentation source, +and configuration files. + +"Object" form shall mean any form resulting from mechanical +transformation or translation of a Source form, including but +not limited to compiled object code, generated documentation, +and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, +made available under the License, as indicated by a copyright notice +that is included in or attached to the work (an example is provided +in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, +that is based on (or derived from) the Work and for which the editorial +revisions, annotations, elaborations, or other modifications represent, +as a whole, an original work of authorship. For the purposes of this License, +Derivative Works shall not include works that remain separable from, +or merely link (or bind by name) to the interfaces of, the Work and +Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original +version of the Work and any modifications or additions to that Work or +Derivative Works thereof, that is intentionally submitted to Licensor +for inclusion in the Work by the copyright owner or by an individual or +Legal Entity authorized to submit on behalf of the copyright owner. +For the purposes of this definition, "submitted" means any form of +electronic, verbal, or written communication sent to the Licensor or +its representatives, including but not limited to communication on +electronic mailing lists, source code control systems, and issue +tracking systems that are managed by, or on behalf of, the Licensor +for the purpose of discussing and improving the Work, but excluding +communication that is conspicuously marked or otherwise designated +in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity +on behalf of whom a Contribution has been received by Licensor and +subsequently incorporated within the Work. + +"Tizen Certified Platform" shall mean a software platform that complies +with the standards set forth in the Compatibility Definition Document +and passes the Compatibility Test Suite as defined from time to time +by the Tizen Technical Steering Group and certified by the Tizen +Association or its designated agent. + +2. Grant of Copyright License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the +Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +(except as stated in this section) patent license to make, have made, +use, offer to sell, sell, import, and otherwise transfer the Work +solely as incorporated into a Tizen Certified Platform, where such +license applies only to those patent claims licensable by such +Contributor that are necessarily infringed by their Contribution(s) +alone or by combination of their Contribution(s) with the Work solely +as incorporated into a Tizen Certified Platform to which such +Contribution(s) was submitted. If You institute patent litigation +against any entity (including a cross-claim or counterclaim +in a lawsuit) alleging that the Work or a Contribution incorporated +within the Work constitutes direct or contributory patent infringement, +then any patent licenses granted to You under this License for that +Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the +Work or Derivative Works thereof pursuant to the copyright license +above, in any medium, with or without modifications, and in Source or +Object form, provided that You meet the following conditions: + + 1. You must give any other recipients of the Work or Derivative Works + a copy of this License; and + 2. You must cause any modified files to carry prominent notices stating + that You changed the files; and + 3. You must retain, in the Source form of any Derivative Works that + You distribute, all copyright, patent, trademark, and attribution + notices from the Source form of the Work, excluding those notices + that do not pertain to any part of the Derivative Works; and + 4. If the Work includes a "NOTICE" text file as part of its distribution, + then any Derivative Works that You distribute must include a readable + copy of the attribution notices contained within such NOTICE file, + excluding those notices that do not pertain to any part of + the Derivative Works, in at least one of the following places: + within a NOTICE text file distributed as part of the Derivative Works; + within the Source form or documentation, if provided along with the + Derivative Works; or, within a display generated by the Derivative Works, + if and wherever such third-party notices normally appear. + The contents of the NOTICE file are for informational purposes only + and do not modify the License. + +You may add Your own attribution notices within Derivative Works +that You distribute, alongside or as an addendum to the NOTICE text +from the Work, provided that such additional attribution notices +cannot be construed as modifying the License. You may add Your own +copyright statement to Your modifications and may provide additional or +different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works +as a whole, provided Your use, reproduction, and distribution of +the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, +any Contribution intentionally submitted for inclusion in the Work +by You to the Licensor shall be under the terms and conditions of +this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify +the terms of any separate license agreement you may have executed +with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade +names, trademarks, service marks, or product names of the Licensor, +except as required for reasonable and customary use in describing the +origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or +agreed to in writing, Licensor provides the Work (and each +Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +implied, including, without limitation, any warranties or conditions +of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A +PARTICULAR PURPOSE. You are solely responsible for determining the +appropriateness of using or redistributing the Work and assume any +risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, +whether in tort (including negligence), contract, or otherwise, +unless required by applicable law (such as deliberate and grossly +negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, +incidental, or consequential damages of any character arising as a +result of this License or out of the use or inability to use the +Work (including but not limited to damages for loss of goodwill, +work stoppage, computer failure or malfunction, or any and all +other commercial damages or losses), even if such Contributor +has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing +the Work or Derivative Works thereof, You may choose to offer, +and charge a fee for, acceptance of support, warranty, indemnity, +or other liability obligations and/or rights consistent with this +License. However, in accepting such obligations, You may act only +on Your own behalf and on Your sole responsibility, not on behalf +of any other Contributor, and only if You agree to indemnify, +defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason +of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Flora License to your work + +To apply the Flora License to your work, attach the following +boilerplate notice, with the fields enclosed by brackets "[]" +replaced with your own identifying information. (Don't include +the brackets!) The text should be enclosed in the appropriate +comment syntax for the file format. We also recommend that a +file or class name and description of purpose be included on the +same "printed page" as the copyright notice for easier +identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Flora License, Version 1.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://floralicense.org/license/ + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + @@ -0,0 +1,4 @@ +Copyright (c) Samsung Electronics Co., Ltd. All rights reserved. +Except as noted, this software is licensed under Flora License, Version 1. +Please, see the LICENSE file for Flora License terms and conditions. + diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt new file mode 100755 index 0000000..cc8dcb1 --- /dev/null +++ b/data/CMakeLists.txt @@ -0,0 +1,20 @@ +ADD_CUSTOM_TARGET(taskmgr.edj + COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/images + ${CMAKE_SOURCE_DIR}/data/taskmgr.edc ${CMAKE_BINARY_DIR}/data/taskmgr.edj + DEPENDS ${CMAKE_SOURCE_DIR}/data/taskmgr.edc +) +ADD_DEPENDENCIES(${PROJECT_NAME} taskmgr.edj) +INSTALL(FILES ${CMAKE_BINARY_DIR}/data/taskmgr.edj DESTINATION ${EDJDIR}) + +# install theme +#ADD_CUSTOM_TARGET(theme_taskmanager.edj +# COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/themes +# ${CMAKE_SOURCE_DIR}/data/themes/theme_taskmanager.edc ${CMAKE_BINARY_DIR}/data/theme_taskmanager.edj +# DEPENDS ${CMAKE_SOURCE_DIR}/data/themes/theme_taskmanager.edc +#) +#ADD_DEPENDENCIES(${PROJECT_NAME} theme_taskmanager.edj) +#INSTALL(FILES ${CMAKE_BINARY_DIR}/data/theme_taskmanager.edj DESTINATION ${EDJDIR}) + +# install images +INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/icons/ DESTINATION ${IMAGEDIR} FILES_MATCHING PATTERN "*.png") + diff --git a/data/icons/00_button_01_normal.png b/data/icons/00_button_01_normal.png Binary files differnew file mode 100644 index 0000000..cf6db15 --- /dev/null +++ b/data/icons/00_button_01_normal.png diff --git a/data/icons/00_button_01_press.png b/data/icons/00_button_01_press.png Binary files differnew file mode 100644 index 0000000..7179246 --- /dev/null +++ b/data/icons/00_button_01_press.png diff --git a/data/icons/taskman_def_content.png b/data/icons/taskman_def_content.png Binary files differnew file mode 100755 index 0000000..22e995a --- /dev/null +++ b/data/icons/taskman_def_content.png diff --git a/data/icons/taskmgr_title_icon_info.png b/data/icons/taskmgr_title_icon_info.png Binary files differnew file mode 100644 index 0000000..9f4350b --- /dev/null +++ b/data/icons/taskmgr_title_icon_info.png diff --git a/data/images/39_multitasking_btn_bg.png b/data/images/39_multitasking_btn_bg.png Binary files differnew file mode 100755 index 0000000..2e16deb --- /dev/null +++ b/data/images/39_multitasking_btn_bg.png diff --git a/data/images/PUT_IMAGES_HERE b/data/images/PUT_IMAGES_HERE new file mode 100755 index 0000000..e69de29 --- /dev/null +++ b/data/images/PUT_IMAGES_HERE diff --git a/data/taskmgr.edc b/data/taskmgr.edc new file mode 100755 index 0000000..3ebb752 --- /dev/null +++ b/data/taskmgr.edc @@ -0,0 +1,188 @@ +/* + * org.tizen.taskmgr + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#define BTN_H 76 +#define GENLIST_BG 246 245 237 + +collections { + + group { + name: "task_manager"; + images { + image: "39_multitasking_btn_bg.png" COMP; + } + parts { + part { + name: "bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; +// color: GENLIST_BG 255; + color: 0 0 0 0; + } + } + + part { + name: "list"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "bg"; } + rel2 { relative: 1.0 1.0; to: "bg"; } + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + } + } + + group { + name: "icon"; + parts { + part { + name: "bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + color: 0 0 0 0; + } + } + + part { + name: "icon_ly"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "bg"; } + rel2 { relative: 1.0 1.0; to: "bg"; } + } + } + part { + name: "icon"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { to: "icon_ly"; } + rel2 { to: "icon_ly"; } + } + } + } + } + + group { + name: "info"; + parts { + part { + name: "bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + min: 240 105; + state: "default" 0.0; + color: 0 0 0 0; + } + } + part { + name: "padding/t"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 0 10; + fixed: 0 1; + align: 0.5 0.0; + color: 0 0 0 0; + rel1 { relative: 0.0 0.0; to: "bg"; } + rel2 { relative: 1.0 0.0; to: "bg"; } + } + } + part { + name: "padding/l"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 10 0; + fixed: 1 0; + align: 0.0 0.5; + color: 0 0 0 0; + rel1 { relative: 0.0 0.0; to: "bg"; } + rel2 { relative: 0.0 1.0; to: "bg"; } + } + } + part { + name: "padding/b"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 0 10; + fixed: 0 1; + align: 0.5 1.0; + color: 0 0 0 0; + rel1 { relative: 0.0 1.0; to: "bg"; } + rel2 { relative: 1.0 1.0; to: "bg"; } + } + } + part { + name: "padding/r"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 10 0; + fixed: 1 0; + align: 1.0 0.5; + color: 0 0 0 0; + rel1 { relative: 1.0 0.0; to: "bg"; } + rel2 { relative: 1.0 1.0; to: "bg"; } + } + } + + part { + name: "swallow"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + min: 1 1; + rel1 { + relative: 1.0 1.0; + to_x: "padding/l"; + to_y: "padding/t"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding/r"; + to_y: "padding/b"; + } + } + } + } + } +} diff --git a/data/themes/00_button_02_focus.png b/data/themes/00_button_02_focus.png Binary files differnew file mode 100755 index 0000000..933a96a --- /dev/null +++ b/data/themes/00_button_02_focus.png diff --git a/data/themes/00_button_02_press.png b/data/themes/00_button_02_press.png Binary files differnew file mode 100755 index 0000000..df6c4d0 --- /dev/null +++ b/data/themes/00_button_02_press.png diff --git a/data/themes/00_button_03_focus.png b/data/themes/00_button_03_focus.png Binary files differnew file mode 100644 index 0000000..72d99ec --- /dev/null +++ b/data/themes/00_button_03_focus.png diff --git a/data/themes/00_button_03_normal.png b/data/themes/00_button_03_normal.png Binary files differnew file mode 100644 index 0000000..df4433e --- /dev/null +++ b/data/themes/00_button_03_normal.png diff --git a/data/themes/00_button_03_press.png b/data/themes/00_button_03_press.png Binary files differnew file mode 100644 index 0000000..b973210 --- /dev/null +++ b/data/themes/00_button_03_press.png diff --git a/data/themes/00_button_delete.png b/data/themes/00_button_delete.png Binary files differnew file mode 100644 index 0000000..96f514b --- /dev/null +++ b/data/themes/00_button_delete.png diff --git a/data/themes/00_button_delete_text.png b/data/themes/00_button_delete_text.png Binary files differnew file mode 100644 index 0000000..d8df523 --- /dev/null +++ b/data/themes/00_button_delete_text.png diff --git a/data/themes/00_list_bar_press_1x80.png b/data/themes/00_list_bar_press_1x80.png Binary files differnew file mode 100755 index 0000000..1dc6e15 --- /dev/null +++ b/data/themes/00_list_bar_press_1x80.png diff --git a/data/themes/39_mini_controller_bg.png b/data/themes/39_mini_controller_bg.png Binary files differnew file mode 100755 index 0000000..2428ca6 --- /dev/null +++ b/data/themes/39_mini_controller_bg.png diff --git a/data/themes/39_mini_controller_button_nor.png b/data/themes/39_mini_controller_button_nor.png Binary files differnew file mode 100755 index 0000000..4d7404e --- /dev/null +++ b/data/themes/39_mini_controller_button_nor.png diff --git a/data/themes/39_mini_controller_button_press.png b/data/themes/39_mini_controller_button_press.png Binary files differnew file mode 100755 index 0000000..1df33fd --- /dev/null +++ b/data/themes/39_mini_controller_button_press.png diff --git a/data/themes/39_multitasking_btn_01.png b/data/themes/39_multitasking_btn_01.png Binary files differnew file mode 100755 index 0000000..13a3f74 --- /dev/null +++ b/data/themes/39_multitasking_btn_01.png diff --git a/data/themes/theme_taskmanager.edc b/data/themes/theme_taskmanager.edc new file mode 100755 index 0000000..8c94060 --- /dev/null +++ b/data/themes/theme_taskmanager.edc @@ -0,0 +1,1446 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://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. + */ + +collections { + + ////////////// BUTTON STYLE1 GROUP START ///////////////////////////////////////////// + group { name: "elm/button/base/text_only/style1_tm"; + images { + image: "00_button_03_normal.png" COMP; + image: "00_button_03_press.png" COMP; + image: "00_button_03_focus.png" COMP; + } + script { + public button_state = 0; //0:enabled, 1: disabled + } + parts { + part { name: "base"; + type: RECT; + mouse_events: 1; + description { state: "default" 0.0; + min: 0 70; + color: 0 0 0 0; + } + } + part { name: "button_image"; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + min: 0 50; + fixed: 0 1; + rel1 { + to: "base"; + relative: 0.0 0.5; + } + rel2 { + to: "base"; + relative: 1.0 0.5; + } + image { + normal: "00_button_03_normal.png"; + border: 7 7 7 7; + border_scale: 1; + } + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + image.normal: "00_button_03_press.png"; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + image.normal: "00_button_03_focus.png"; + } + } + part { + name: "padding_left"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 0.0; + rel2.relative: 0.0 1.0; + min: 5 5; + fixed: 1 0; + color: 0 0 0 0; + } + } + part { + name: "padding_right"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 1.0 0.0; + rel1.relative: 1.0 0.0; + rel2.relative: 1.0 1.0; + min: 5 5; + fixed: 1 0; + color: 0 0 0 0; + } + } + part { + name: "padding_top"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 0.0; + rel2.relative: 1.0 0.0; + min: 5 5; + fixed: 0 1; + color: 0 0 0 0; + } + } + part { + name: "padding_bottom"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 1.0 1.0; + rel1.relative: 0.0 1.0; + rel2.relative: 1.0 1.0; + min: 5 5; + fixed: 0 1; + color: 0 0 0 0; + } + } + part { + name: "icon_rect"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + visible: 1; + min: 0 40; + fixed: 1 0; + rel1 {relative: 0.0 1.0; to_x: "elm.swallow.content"; to_y: "padding_top"; } + rel2 {relative: 1.0 0.0; to_x: "elm.swallow.content"; to_y: "padding_bottom"; } + align: 0.0 0.5; + color: 0 0 0 0; + } + } + part { + name: "padding_icon_text"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + align: 0.0 0.0; + rel1 { relative: 1.0 0.0; to: "icon_rect"; } + rel2 { relative: 1.0 1.0; to: "icon_rect"; } + fixed: 1 0; + min: 0 0; + color: 0 0 0 0; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + description { state: "visible" 0.0; //when icon is visible + align: 0.0 0.0; + rel1 { relative: 1.0 0.0; to: "icon_rect"; } + rel2 { relative: 1.0 1.0; to: "icon_rect"; } + fixed: 1 0; + min: 5 0; + color: 0 0 0 0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + visible: 0; + align: 0.0 0.5; + rel1 {relative: 1.0 1.0; to_x: "padding_left"; to_y: "padding_top"; } + rel2 {relative: 1.0 0.0; to_x: "padding_left"; to_y: "padding_bottom"; } + fixed: 1 0; + } + description { state: "visible" 0.0; + fixed: 1 0; + visible: 1; + align: 0.0 0.5; + rel1 {relative: 1.0 1.0; to_x: "padding_left"; to_y: "padding_top"; } + rel2 {relative: 1.0 0.0; to_x: "padding_left"; to_y: "padding_bottom"; } + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + } + description { state: "icononly" 0.0;; + visible: 1; + min: 40 40; + rel1 {relative: 1.0 1.0; to_x: "padding_left"; to_y: "padding_top"; } + rel2 {relative: 0.0 0.0; to_x: "padding_right"; to_y: "padding_bottom"; } + align: 0.5 0.5; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + } + } + part { name: "elm.text"; + type: TEXT; +// effect: SHADOW; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + visible: 0; + rel1 { relative: 1.0 1.0; to_x: "padding_icon_text"; to_y: "padding_top"; } + rel2 { relative: 0.0 0.0; to_x: "padding_right"; to_y:"padding_bottom"; } + align: 0.5 0.5; + color: 90 73 40 255; + color2: 255 255 255 255; + text { + font: "SLP:style=Medium"; + size: 24; + min: 0 0; + align: 0.5 0.5; + max: 1 0; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + min: 90 40; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + min: 0 0; + color: 255 255 255 255; + color2: 0 0 0 102; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + color: 0 0 0 128; + color3: 0 0 0 0; + } + description { state: "disabled_visible" 0.0; + inherit: "default" 0.0; + color: 0 0 0 128; + color3: 0 0 0 0; + visible: 1; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + min: 0 0; + color: 255 255 255 255; + color2: 0 0 0 102; + } + } + part { name: "over2"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + color: 0 0 0 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { name: "over3"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "disabler"; + type: RECT; + description { state: "default" 0.0; + color: 0 0 0 0; + visible: 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + programs { + program { name: "button_click"; + signal: "mouse,down,1"; + source: "over2"; + action: SIGNAL_EMIT "elm,action,press" ""; + after: "button_click_anim"; + } + program { name: "button_click_anim"; + action: STATE_SET "clicked" 0.0; + target: "button_image"; + after: "text_clicked"; + } + program { name: "text_clicked"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.text", "clicked", 0.0); + } + } + program { name: "button_unpress"; + action: SIGNAL_EMIT "elm,action,unpress" ""; + } + program { name: "button_mouseout_clicked"; + signal: "mouse,up,1"; + source: "over3"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (strcmp(st, "icononly")) + { + emit("elm,action,default,text,set", ""); + set_state(PART:"elm.text", "visible", 0.0); + } + if(get_int(button_state) !=1) + set_state(PART:"button_image", "default", 0.0); + } + after: button_unpress; + } + program { name: "button_click2"; + signal: "mouse,down,1"; + source: "over3"; + action: STATE_SET "clicked" 0.0; + target: "over3"; + } + program { name: "button_unclick2"; + signal: "mouse,clicked,1"; + source: "over3"; + action: STATE_SET "default" 0.0; + target: "over3"; + } + program { name: "button_unclick3"; + signal: "mouse,clicked,1"; + source: "over2"; + action: SIGNAL_EMIT "elm,action,click" ""; + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "icononly")) + { + set_state(PART:"elm.swallow.content", "visible", 0.0); + set_state(PART:"padding_icon_text", "visible", 0.0); + } + set_state(PART:"elm.text", "visible", 0.0); + } + } + program { name: "text_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.content", "icononly", 0.0); + set_state(PART:"padding_icon_text", "icononly", 0.0); + } + set_state(PART:"elm.text", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.content", "visible", 0.0); + set_state(PART:"padding_icon_text", "visible", 0.0); + } + else + { + set_state(PART:"elm.swallow.content", "icononly", 0.0); + set_state(PART:"padding_icon_text", "icononly", 0.0); + } + } + } + program { name: "icon_hide"; + signal: "elm,state,icon,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.content"; + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "button_image"; + target: "over2"; + target: "disabler"; + after: "disable_text"; + } + program { name: "disable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.text", "disabled_visible", 0.0); + else + set_state(PART:"elm.text", "disabled", 0.0); + set_int(button_state, 1); + } + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "button_image"; + target: "over2"; + target: "disabler"; + after: "enable_text"; + } + program { name: "enable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "disabled_visible")) + set_state(PART:"elm.text", "visible", 0.0); + else + set_state(PART:"elm.text", "default", 0.0); + set_int(button_state, 0); + } + } + program { name: "focused"; + signal: "elm,action,focus"; + source: "elm"; + action: STATE_SET "focused" 0.0; + target: "button_image"; + target: "elm.text"; + } + program { name: "unfocused"; + signal: "elm,action,unfocus"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "button_image"; + after: "unfocus_text"; + } + program { name: "unfocus_text"; + action: STATE_SET "visible" 0.0; + target: "elm.text"; + } + } + } + + ////////////// BUTTON STYLE2 GROUP START ///////////////////////////////////////////// + group { name: "elm/button/base/text_only/style2_tm"; + images { + image: "00_button_03_normal.png" COMP; + image: "00_button_03_press.png" COMP; + image: "00_button_03_focus.png" COMP; + } + script { + public button_state = 0; //0:enabled, 1: disabled + } + parts { + part { name: "base"; + type: RECT; + mouse_events: 1; + description { state: "default" 0.0; + min: 0 70; + color: 0 0 0 0; + } + } + part { name: "button_image"; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + min: 0 50; + fixed: 0 1; + rel1 { + to: "base"; + relative: 0.0 0.5; + } + rel2 { + to: "base"; + relative: 1.0 0.5; + } + image { + normal: "00_button_03_normal.png"; + border: 7 7 7 7; + border_scale: 1; + } + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + image.normal: "00_button_03_press.png"; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + image.normal: "00_button_03_focus.png"; + } + } + part { + name: "padding_left"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 0.0; + rel2.relative: 0.0 1.0; + min: 5 5; + fixed: 1 0; + color: 0 0 0 0; + } + } + part { + name: "padding_right"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 1.0 0.0; + rel1.relative: 1.0 0.0; + rel2.relative: 1.0 1.0; + min: 5 5; + fixed: 1 0; + color: 0 0 0 0; + } + } + part { + name: "padding_top"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 0.0; + rel2.relative: 1.0 0.0; + min: 5 5; + fixed: 0 1; + color: 0 0 0 0; + } + } + part { + name: "padding_bottom"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 1.0 1.0; + rel1.relative: 0.0 1.0; + rel2.relative: 1.0 1.0; + min: 5 5; + fixed: 0 1; + color: 0 0 0 0; + } + } + part { + name: "icon_rect"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + visible: 1; + min: 0 40; + fixed: 1 0; + rel1 {relative: 0.0 1.0; to_x: "elm.swallow.content"; to_y: "padding_top"; } + rel2 {relative: 1.0 0.0; to_x: "elm.swallow.content"; to_y: "padding_bottom"; } + align: 0.0 0.5; + color: 0 0 0 0; + } + } + part { + name: "padding_icon_text"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + align: 0.0 0.0; + rel1 { relative: 1.0 0.0; to: "icon_rect"; } + rel2 { relative: 1.0 1.0; to: "icon_rect"; } + fixed: 1 0; + min: 0 0; + color: 0 0 0 0; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + description { state: "visible" 0.0; //when icon is visible + align: 0.0 0.0; + rel1 { relative: 1.0 0.0; to: "icon_rect"; } + rel2 { relative: 1.0 1.0; to: "icon_rect"; } + fixed: 1 0; + min: 5 0; + color: 0 0 0 0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + visible: 0; + align: 0.0 0.5; + rel1 {relative: 1.0 1.0; to_x: "padding_left"; to_y: "padding_top"; } + rel2 {relative: 1.0 0.0; to_x: "padding_left"; to_y: "padding_bottom"; } + fixed: 1 0; + } + description { state: "visible" 0.0; + fixed: 1 0; + visible: 1; + align: 0.0 0.5; + rel1 {relative: 1.0 1.0; to_x: "padding_left"; to_y: "padding_top"; } + rel2 {relative: 1.0 0.0; to_x: "padding_left"; to_y: "padding_bottom"; } + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + } + description { state: "icononly" 0.0;; + visible: 1; + min: 40 40; + rel1 {relative: 1.0 1.0; to_x: "padding_left"; to_y: "padding_top"; } + rel2 {relative: 0.0 0.0; to_x: "padding_right"; to_y: "padding_bottom"; } + align: 0.5 0.5; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + } + } + part { name: "elm.text"; + type: TEXT; +// effect: SHADOW; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + visible: 0; + rel1 { relative: 1.0 1.0; to_x: "padding_icon_text"; to_y: "padding_top"; } + rel2 { relative: 0.0 0.0; to_x: "padding_right"; to_y:"padding_bottom"; } + align: 0.5 0.5; + color: 90 73 40 255; + color2: 255 255 255 255; + text { + font: "SLP:style=Medium"; + size: 20; + min: 0 0; + align: 0.5 0.5; + max: 1 0; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + min: 90 40; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + min: 0 0; + color: 255 255 255 255; + color2: 0 0 0 102; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + color: 0 0 0 128; + color3: 0 0 0 0; + } + description { state: "disabled_visible" 0.0; + inherit: "default" 0.0; + color: 0 0 0 128; + color3: 0 0 0 0; + visible: 1; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + min: 0 0; + color: 255 255 255 255; + color2: 0 0 0 102; + } + } + part { name: "over2"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + color: 0 0 0 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { name: "over3"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "disabler"; + type: RECT; + description { state: "default" 0.0; + color: 0 0 0 0; + visible: 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + programs { + program { name: "button_click"; + signal: "mouse,down,1"; + source: "over2"; + action: SIGNAL_EMIT "elm,action,press" ""; + after: "button_click_anim"; + } + program { name: "button_click_anim"; + action: STATE_SET "clicked" 0.0; + target: "button_image"; + after: "text_clicked"; + } + program { name: "text_clicked"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.text", "clicked", 0.0); + } + } + program { name: "button_unpress"; + action: SIGNAL_EMIT "elm,action,unpress" ""; + } + program { name: "button_mouseout_clicked"; + signal: "mouse,up,1"; + source: "over3"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (strcmp(st, "icononly")) + { + emit("elm,action,default,text,set", ""); + set_state(PART:"elm.text", "visible", 0.0); + } + if(get_int(button_state) !=1) + set_state(PART:"button_image", "default", 0.0); + } + after: button_unpress; + } + program { name: "button_click2"; + signal: "mouse,down,1"; + source: "over3"; + action: STATE_SET "clicked" 0.0; + target: "over3"; + } + program { name: "button_unclick2"; + signal: "mouse,clicked,1"; + source: "over3"; + action: STATE_SET "default" 0.0; + target: "over3"; + } + program { name: "button_unclick3"; + signal: "mouse,clicked,1"; + source: "over2"; + action: SIGNAL_EMIT "elm,action,click" ""; + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "icononly")) + { + set_state(PART:"elm.swallow.content", "visible", 0.0); + set_state(PART:"padding_icon_text", "visible", 0.0); + } + set_state(PART:"elm.text", "visible", 0.0); + } + } + program { name: "text_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.content", "icononly", 0.0); + set_state(PART:"padding_icon_text", "icononly", 0.0); + } + set_state(PART:"elm.text", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.content", "visible", 0.0); + set_state(PART:"padding_icon_text", "visible", 0.0); + } + else + { + set_state(PART:"elm.swallow.content", "icononly", 0.0); + set_state(PART:"padding_icon_text", "icononly", 0.0); + } + } + } + program { name: "icon_hide"; + signal: "elm,state,icon,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.content"; + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "button_image"; + target: "over2"; + target: "disabler"; + after: "disable_text"; + } + program { name: "disable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + set_state(PART:"elm.text", "disabled_visible", 0.0); + else + set_state(PART:"elm.text", "disabled", 0.0); + set_int(button_state, 1); + } + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "button_image"; + target: "over2"; + target: "disabler"; + after: "enable_text"; + } + program { name: "enable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "disabled_visible")) + set_state(PART:"elm.text", "visible", 0.0); + else + set_state(PART:"elm.text", "default", 0.0); + set_int(button_state, 0); + } + } + program { name: "focused"; + signal: "elm,action,focus"; + source: "elm"; + action: STATE_SET "focused" 0.0; + target: "button_image"; + target: "elm.text"; + } + program { name: "unfocused"; + signal: "elm,action,unfocus"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "button_image"; + after: "unfocus_text"; + } + program { name: "unfocus_text"; + action: STATE_SET "visible" 0.0; + target: "elm.text"; + } + } + } + + + ////////////// GENLIST GROUP START ///////////////////////////////////////////// + +#define BEAT_GENLIST_PART_BASE( param_item_height ) \ + part { name: "base"; \ + type: RECT; \ + repeat_events: 1; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: 0 param_item_height; \ + color: 246 245 237 255; \ + } \ + } + +#define BEAT_GENLIST_PART_BG \ + part { name: "bg"; \ + type: RECT; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + color: 246 245 237 255; \ + } \ + description { state: "hide" 0.0; \ + inherit: "default" 0.0; \ + rel1 { relative: -0.025 0.0; } \ + rel2 { relative: 0.975 1.0; } \ + } \ + description { state: "hide" 0.1; \ + inherit: "default" 0.0; \ + rel1 { relative: -0.13 0.0; } \ + rel2 { relative: 0.87 1.0; } \ + } \ + description { state: "hide" 0.2; \ + inherit: "default" 0.0; \ + rel1 { relative: -0.5 0.0; } \ + rel2 { relative: 0.5 1.0; } \ + } \ + description { state: "hide" 0.3; \ + inherit: "default" 0.0; \ + rel1 { relative: -1.0 0.0; } \ + rel2 { relative: 0.0 1.0; } \ + } \ + } + +#define BEAT_GENLIST_PART_BG_IMAGE \ + part { name: "bg_image"; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + visible: 0; \ + image.normal: "00_list_bar_press_1x80.png"; \ + } \ + description { state: "selected" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + } + +#define BEAT_GENLIST_PART_BOTTOM_LINE \ + part { name: "bottom_line"; \ + type: RECT; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + min: 0 1; \ + fixed: 0 1; \ + visible: 1; \ + color: 212 212 212 255; \ + rel1 { \ + relative: 0.0 1.0; \ + offset: 0 -1; \ + } \ + } \ + } + +#define BEAT_GENLIST_PART_PADDING_TOP( param_padding_size ) \ + part { name: "elm.padding.top"; \ + type: RECT; \ + scale: 1; \ + description { \ + state: "default" 0.0; \ + min: 0 param_padding_size; \ + fixed: 0 1; \ + visible: 0; \ + rel2.relative: 0.0 0.0; \ + align: 0.0 0.0; \ + } \ + } + +#define BEAT_GENLIST_PART_PADDING_BOTTOM( param_padding_size ) \ + part { name: "elm.padding.bottom"; \ + type: RECT; \ + scale: 1; \ + description { \ + state: "default" 0.0; \ + min: 0 param_padding_size; \ + fixed: 0 1; \ + visible: 0; \ + rel1.relative: 0.0 1.0; \ + align: 0.0 1.0; \ + } \ + } + + +#define BEAT_GENLIST_PART_PADDING_LEFT( param_padding_size ) \ + part { name: "elm.padding.left"; \ + type: RECT; \ + scale: 1; \ + description { \ + state: "default" 0.0; \ + min: param_padding_size 0; \ + fixed: 1 0; \ + visible: 0; \ + rel2.relative: 0.0 1.0; \ + align: 0.0 0.0; \ + } \ + } + + + +#define BEAT_GENLIST_PART_PADDING_RIGHT( param_padding_size ) \ + part { name: "elm.padding.right"; \ + type: RECT; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: param_padding_size 0; \ + fixed: 1 0; \ + visible: 0; \ + rel1.relative: 1.0 0.0; \ + align: 1.0 0.0; \ + } \ + } + +#define BEAT_GENLIST_PART_DISCLIP \ + part { name: "disclip"; \ + type: RECT; \ + description { state: "default" 0.0; \ + rel1.to: "bg"; \ + rel2.to: "bg"; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + color: 255 255 255 64; \ + } \ + } + + + group { name: "elm/genlist/item_compress/taskswitcher/default"; + alias: "elm/genlist/item_compress_odd/taskswitcher/default"; + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text elm.text.right elm.text.button"; + data.item: "contents" "elm.swallow.icon elm.swallow.end"; + data.item: "treesize" "20"; + images { + image: "00_list_bar_press_1x80.png" COMP; + image: "39_mini_controller_button_nor.png" COMP; + image: "39_mini_controller_button_press.png" COMP; + } + parts { + BEAT_GENLIST_PART_BASE( 70 ) + BEAT_GENLIST_PART_BG + BEAT_GENLIST_PART_BG_IMAGE + BEAT_GENLIST_PART_BOTTOM_LINE + BEAT_GENLIST_PART_PADDING_TOP( 10 ) + BEAT_GENLIST_PART_PADDING_BOTTOM( 10 ) + BEAT_GENLIST_PART_PADDING_LEFT( 15 ) + BEAT_GENLIST_PART_PADDING_RIGHT( 15 ) + + part { + name: "end.bg"; + type: RECT; + scale: 1; + clip_to: "disclip"; + description { + state: "default" 0.0; + min: 110 70; + fixed: 1 0; + align: 1.0 0.5; + visible: 0; + rel1 { + relative: 0.0 0.0; + to_x: "elm.padding.right"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + } + } + } + part { + name: "end.padding.left"; + type: RECT; + scale: 1; + clip_to: "disclip"; + description { + state: "default" 0.0; + min: 10 10; + fixed: 1 1; + align: 0.0 0.0; + visible: 0; + rel1 { + relative: 0.0 0.0; + to: "end.bg"; + } + rel2 { + relative: 0.0 0.0; + to: "end.bg"; + } + } + } + part { + name: "end.padding.right"; + type: RECT; + scale: 1; + clip_to: "disclip"; + description { + state: "default" 0.0; + min: 10 10; + fixed: 1 1; + align: 1.0 1.0; + visible: 0; + rel1 { + relative: 1.0 1.0; + to: "end.bg"; + } + rel2 { + relative: 1.0 1.0; + to: "end.bg"; + } + } + } + part { + name: "elm.swallow.end"; + type: SWALLOW; + scale: 1; + clip_to: "disclip"; + description { + state: "default" 0.0; + align: 0.5 0.5; + rel1 { + relative: 1.0 1.0; + to: "end.padding.left"; + } + rel2 { + relative: 0.0 0.0; + to: "end.padding.right"; + } + } + } + + part { + name: "elm.text"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 1.0 0.0; + offset: 0 0; + to_x: "elm.swallow.icon"; + } + rel2 { + to_x: "elm.text.right"; + relative: 0.0 1.0; + offset: 0 0; + } + color: 0 0 0 255; + text { + font: "SLP:style=Roman"; + size: 32; + min: 0 1; + align: 0.0 0.5; + } + } + description { + state: "selected" 0.0; + inherit: "default" 0.0; + color: 225 225 225 255; + } + } + part { + name: "elm.text.right"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 70 50; + max: 70 50; + fixed: 1 0; + align: 1.0 0.5; + rel1 { + to_x: "end.bg"; + } + rel2 { + relative: 0.0 1.0; + to_x: "end.bg"; + } + color: 213 129 31 255; + text { + font: "SLP:style=Medium"; + size: 24; + min: 0 1; + align: 0.5 0.5; + } + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + visible: 0; + } + description { + state: "selected" 0.0; + inherit: "default" 0.0; + color: 225 225 225 255; + } + } + + part { + name: "elm.text.button"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { to: "elm.swallow.end"; } + rel2 { to: "elm.swallow.end"; } + color: 0 0 0 255; + text { + font: "SLP:style=Roman"; + size: 22; + min: 0 1; + align: 0.5 0.5; + } + } + description { + state: "selected" 0.0; + inherit: "default" 0.0; + color: 225 225 225 255; + } + } + + part { + name: "elm.swallow.icon"; + clip_to: "disclip"; + type: SWALLOW; + description { + state: "default" 0.0; + fixed: 1 0; + align: 0.0 0.5; + rel1 { + relative: 1.0 0.0; + to_x: "elm.padding.left"; + } + rel2.to_x: "elm.padding.left"; + } + } + BEAT_GENLIST_PART_DISCLIP + } + + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + target: "elm.text"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + target: "elm.text"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + + program { + name: "hide/mem"; + signal: "prog.hide.mem"; + source: "taskmanager"; + action: STATE_SET "hide" 0.0; + target: "elm.text.right"; + } + program { + name: "show/mem"; + signal: "prog.show.mem"; + source: "taskmanager"; + action: STATE_SET "default" 0.0; + target: "elm.text.right"; + } + + } + } + group { name: "elm/genlist/item_compress/taskswitcher_btn/default"; + alias: "elm/genlist/item_compress_odd/taskswitcher_btn/default"; + + images { + image: "39_mini_controller_button_nor.png" COMP; + image: "39_mini_controller_button_press.png" COMP; + } + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text"; + data.item: "contents" "elm.swallow.icon"; + data.item: "treesize" "20"; + parts { + BEAT_GENLIST_PART_BASE( 70 ) + BEAT_GENLIST_PART_BG + BEAT_GENLIST_PART_BG_IMAGE + BEAT_GENLIST_PART_BOTTOM_LINE + BEAT_GENLIST_PART_PADDING_TOP( 10 ) + BEAT_GENLIST_PART_PADDING_BOTTOM( 10 ) + BEAT_GENLIST_PART_PADDING_LEFT( 10 ) + BEAT_GENLIST_PART_PADDING_RIGHT( 10 ) + + + part { name: "label.bg"; + clip_to: "disclip"; + type: IMAGE; + description { state: "default" 0.0; + align: 0.5 0.5; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + image { + normal: "39_mini_controller_button_nor.png"; + border: 5 5 5 5; + border_scale: 1; + } + } + description { + state: "selected" 0.0; + inherit: "default" 0.0; + image { + normal: "39_mini_controller_button_press.png"; + border: 5 5 5 5; + border_scale: 1; + } + } + } + + part { name: "elm.text"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { + to: "label.bg"; + } + rel2 { + to: "label.bg"; + } + color: 0 0 0 255; + text { + font: "SLP:style=Roman"; + size: 28; + min: 0 1; + align: 0.5 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: 225 225 225 255; + } + } + + part { name: "elm.swallow.icon"; + clip_to: "disclip"; + type: SWALLOW; + description { state: "default" 0.0; + fixed: 1 0; + align: 0.5 0.5; + rel1.to_x: "elm.padding.left"; + rel2.to_x: "elm.padding.right"; + } + } + BEAT_GENLIST_PART_DISCLIP + } + programs { + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + program { name: "selected"; + signal: "mouse,down,1"; + source: "label.bg"; + action: STATE_SET "selected" 0.0; + target: "label.bg"; + target: "elm.text"; + transition: LINEAR 0.1; + } + program { name: "released"; + signal: "mouse,up,1"; + source: "label.bg"; + action: STATE_SET "default" 0.0; + target: "label.bg"; + target: "elm.text"; + transition: LINEAR 0.1; + } + program { name: "clicked"; + signal: "mouse,clicked,1"; + source: "label.bg"; + action: SIGNAL_EMIT "clicked" "label"; + } + } + } +} + ////////////// GENLIST GROUP END ///////////////////////////////////////////// diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..6f22138 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,20 @@ +taskmanager (0.14.5-1) oneiric; urgency=low + + * update version to 0.14.5-1 + + -- minho07.kim <minho07.kim@samsung.com> Mon, 21 Jan 2013 13:45:25 +0900 + +taskmanager (0.14.3-1) oneiric; urgency=low + + * Fix N_SE-17797 : Running Apps are blinking. + + -- minho07.kim <minho07.kim@samsung.com> Mon, 07 Jan 2013 15:26:49 +0900 + +taskmanager (0.14.2-1) oneiric; urgency=low + + * Apply open code + * Git : apps/home/taskmanager + * Tag : taskmanager_0.14.2-1 + + -- Hong Kwon <hhh.kwon@samsung.com> Mon, 13 Aug 2012 19:47:16 +0900 + diff --git a/debian/compat b/debian/compat new file mode 100755 index 0000000..7ed6ff8 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +5 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..86b9915 --- /dev/null +++ b/debian/control @@ -0,0 +1,18 @@ +Source: taskmanager +Section: devel +Priority: extra +Maintainer: Junghyun Kim <jh1114.kim>, hhh.kwon <hhh.kwon@samsung.com> +Uploaders: Noha Park <noha.park@samsung.com> +Build-Depends: debhelper (>= 5), libappcore-efl-dev, libelm-dev, libaul-1-dev, libslp-utilx-dev, librua-dev, libslp-sysman-dev, libail-0-dev, dlog-dev +Standards-Version: 3.7.2 + +Package: org.tizen.taskmgr +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Task Manager + +Package: org.tizen.taskmgr-dbg +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Task Manager Debug Symbols + Debug symbols for taskmanager diff --git a/debian/org.tizen.taskmgr.install.in b/debian/org.tizen.taskmgr.install.in new file mode 100644 index 0000000..b3f2e22 --- /dev/null +++ b/debian/org.tizen.taskmgr.install.in @@ -0,0 +1,3 @@ +@PREFIX@/* +/usr/share/applications/* +/usr/share/icons/default/small/org.tizen.taskmgr.png diff --git a/debian/org.tizen.taskmgr.postinst b/debian/org.tizen.taskmgr.postinst new file mode 100755 index 0000000..ab566dd --- /dev/null +++ b/debian/org.tizen.taskmgr.postinst @@ -0,0 +1,8 @@ +#!/bin/sh + +if [ x"${USER}" == x"root" ] +then + #5000 is inhouse user id + #do not use relative path + chown -R 5000:5000 /usr/apps/org.tizen.taskmgr/data +fi diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..1df424f --- /dev/null +++ b/debian/rules @@ -0,0 +1,119 @@ +#!/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 +CXXFLAGS ?= -Wall -g +LDFLAGS ?= +PREFIX ?= /opt/apps/org.tizen.taskmgr +RESDIR ?= /opt/apps/org.tizen.taaskmgr/res +DATADIR ?= /opt/apps/org.tizen.taskmgr/data + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 + CXXFLAGS += -O0 +else + CFLAGS += -O2 + CXXFLAGS += -O2 +endif + +CFLAGS += -fPIC +CXXFLAGS += -fPIC + +LDFLAGS += -Wl,--rpath=$(PREFIX)/lib -Wl,--hash-style=both -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) + + touch configure-stamp + +build: build-stamp + +build-stamp: configure-stamp + dh_testdir + + # Add here commands to compile the package. + cd $(CMAKE_BUILD_DIR) && $(MAKE) + #docbook-to-man debian/wavplayer.sgml > wavplayer.1 + + for f in `find $(CURDIR)/debian/ -name "*.in"`; do \ + cat $$f > $${f%.in}; \ + sed -i -e "s#@PREFIX@#$(PREFIX)#g" $${f%.in}; \ + sed -i -e "s#@RESDIR@#$(RESDIR)#g" $${f%.in}; \ + sed -i -e "s#@DATADIR@#$(DATADIR)#g" $${f%.in}; \ + done + + touch $@ + +clean: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + + # Add here commands to clean up after the build process. + 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.taskmgr-dbg + dh_compress + dh_fixperms +# dh_perl + dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/org.tizen.taskmgr.manifest b/org.tizen.taskmgr.manifest new file mode 100755 index 0000000..9287ef9 --- /dev/null +++ b/org.tizen.taskmgr.manifest @@ -0,0 +1,17 @@ +<manifest> + <define> + <domain name="org.tizen.taskmgr"/> + <request> + <smack request="system::homedir" type="arwxt"/> + <smack request="net-config" type="r"/> + <smack request="xorg" type="w"/> + <smack request="ail::db" type="rw"/> + <smack request="system::vconf" type="arwxt"/> + <smack request="rua::db" type="rw"/> + <smack request="dbus" type="w"/> + </request> + </define> + <request> + <domain name="org.tizen.taskmgr"/> + </request> +</manifest> diff --git a/org.tizen.taskmgr.png b/org.tizen.taskmgr.png Binary files differnew file mode 100755 index 0000000..ef74fd1 --- /dev/null +++ b/org.tizen.taskmgr.png diff --git a/org.tizen.taskmgr.xml b/org.tizen.taskmgr.xml new file mode 100755 index 0000000..16bdc15 --- /dev/null +++ b/org.tizen.taskmgr.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.taskmgr" version="0.14.5" install-location="internal-only">
+ <label>taskmgr</label>
+ <author email="hhh.kwon@samsung.com" href="www.samsung.com">Hong Kwon</author>
+ <description>Task Manager</description>
+ <ui-application appid="org.tizen.taskmgr" exec="/usr/apps/org.tizen.taskmgr/bin/taskmgr" nodisplay="true" multiple="false" type="capp" taskmanage="false">
+ <label>taskmgr</label>
+ </ui-application>
+</manifest>
diff --git a/packaging/org.tizen.taskmgr.spec b/packaging/org.tizen.taskmgr.spec new file mode 100755 index 0000000..d132269 --- /dev/null +++ b/packaging/org.tizen.taskmgr.spec @@ -0,0 +1,48 @@ +Name: org.tizen.taskmgr +Summary: Task Manager +Version: 0.14.5 +Release: 1 +Group: devel +License: Flora Software License +Source0: %{name}-%{version}.tar.gz +BuildRequires: pkgconfig(appcore-efl) +BuildRequires: pkgconfig(elementary) +BuildRequires: pkgconfig(aul) +BuildRequires: pkgconfig(utilX) +BuildRequires: pkgconfig(rua) +BuildRequires: pkgconfig(sysman) +BuildRequires: pkgconfig(ail) + +BuildRequires: cmake +BuildRequires: edje-bin +BuildRequires: embryo-bin +BuildRequires: gettext-devel + +%description +Task Manager. + +%prep +%setup -q + +%build +%define PREFIX "/usr/apps/org.tizen.taskmgr" +%define RESDIR "/usr/apps/org.tizen.taskmgr/res" +%define DATADIR "/opt/usr/apps/org.tizen.taskmgr/data" + +cmake . -DCMAKE_INSTALL_PREFIX=%{PREFIX} + +make %{?jobs:-j%jobs} + +%install +rm -rf %{buildroot} +%make_install + +%files +%manifest org.tizen.taskmgr.manifest +%defattr(-,root,root,-) +/usr/apps/org.tizen.taskmgr/bin/* +/usr/apps/org.tizen.taskmgr/res/* +%attr(-,inhouse,inhouse) +/opt/usr/apps/org.tizen.taskmgr/data +/usr/share/packages/* +/usr/share/icons/default/small/org.tizen.taskmgr.png diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt new file mode 100644 index 0000000..d7a85f7 --- /dev/null +++ b/po/CMakeLists.txt @@ -0,0 +1,24 @@ +# 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 es_MX.po sv.po tr_TR.po uk.po uz.po ar.po zh_SG.po hi.po en_PH.po fr_CA.po) + +SET(MSGFMT "/usr/bin/msgfmt") + +FOREACH(pofile ${POFILES}) + SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile}) + MESSAGE("PO: ${pofile}") + GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE) + GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE) + SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo) + ADD_CUSTOM_COMMAND( + OUTPUT ${moFile} + COMMAND ${MSGFMT} -o ${moFile} ${absPofile} + DEPENDS ${absPofile} + ) + INSTALL(FILES ${moFile} + DESTINATION ${LOCALEDIR}/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo) + SET(moFiles ${moFiles} ${moFile}) +ENDFOREACH(pofile) + +MESSAGE(".mo files: ${moFiles}") +ADD_CUSTOM_TARGET(po ALL DEPENDS ${moFiles}) diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 0000000..2477469 --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,10 @@ +# List of source files containing translatable strings. +taskmanager.c +_eina.c +_genlist.c +_info.c +_logic.c +_mem.c +_progressbar.c +_util_efl.c + diff --git a/po/ar.po b/po/ar.po new file mode 100644 index 0000000..707e16f --- /dev/null +++ b/po/ar.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "مسح المحفوظات" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "إغلاق جميع التطبيقات" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "تشغيل" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "لا توجد تطبيقات مفتوحة" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "لا توجد تطبيقات مستخدمة مؤخرا" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "المستخدمة مؤخرًا" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "هل تريد مسح محفوظات التطبيق كافة؟" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "هل تريد مسح محفوظات %s؟" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "هل تريد إغلاق جميع التطبيقات؟ قد يؤدي ذلك إلى فقد البيانات" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "هل تريد إغلاق تطبيق %s؟ قد يؤدي ذلك إلى فقد البيانات" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "يتعذر فتح التطبيق" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "محول المهام" + diff --git a/po/az.po b/po/az.po new file mode 100644 index 0000000..0e19b31 --- /dev/null +++ b/po/az.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Tarixçəni sil" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Bütün proqramları bağla" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "İşləyir" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Açıq proqram yoxdur" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Son işlənmiş prqrm yoxdur" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Son istifadə olunan" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Bütün proqram tarixçəsi silinsin?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "%s tarixçəsi silinsin?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Bütün proqramlar bağlansın? Bu məlumatların itirilməsinə səbəb ola bilər" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "%s proqramı bağlansın? Bu məlumatların itirilməsinə səbəb ola bilər" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Proqramı açmaq mümkün deyil" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Tapşırıq keçiricisi" + diff --git a/po/bg.po b/po/bg.po new file mode 100644 index 0000000..5f23713 --- /dev/null +++ b/po/bg.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Изтриване хронол." + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Затвори всички приложения" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Изпълнява се" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Няма отворени приложения" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Няма изп. наскоро прил." + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Последно използван" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Изтриване на хронологията на всички приложения?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Изтриване на хронологията на %s?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Затваряне на всички приложения? Това може да причини загуба на данни" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Затваряне на приложението %s? Това може да причини загуба на данни" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Приложението не може да се отвори" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Превключване на задачи" + diff --git a/po/ca.po b/po/ca.po new file mode 100644 index 0000000..0fc9c8f --- /dev/null +++ b/po/ca.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Netejar l'historial" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Tancar totes les aplicacions" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "En funcionament" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Cap aplicació oberta" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Cap aplic utilitz fa poc" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Utilitzats recentment" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Esborrar tot l'historial d'aplicacions?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Esborrar l'historial de %s?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Tancar totes les aplicacions? Aquesta acció pot fer que es perdin dades" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Tancar l'aplicació %s? Aquesta acció pot fer que es perdin dades" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "No es pot obrir l'aplicació" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Commutador de tasques" + diff --git a/po/cs.po b/po/cs.po new file mode 100644 index 0000000..2b292d5 --- /dev/null +++ b/po/cs.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Smazat historii" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Ukončit všechny aplikace" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Spuštěno" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Žádné otevřené aplikace" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Žádné použité aplikace" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Poslední použitý" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Smazat historii všech aplikací?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Smazat historii %s?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Ukončit všechny aplikace? Může dojít ke ztrátě dat" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Ukončit aplikaci %s? Může dojít ke ztrátě dat" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Aplikaci se nepodařilo otevřít" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Přepínač úloh" + diff --git a/po/da.po b/po/da.po new file mode 100644 index 0000000..589fc55 --- /dev/null +++ b/po/da.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Ryd historik" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Luk alle programmer" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Kører" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Ingen åbne programmer" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Ingen sen. brugte progr." + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Senest brugt" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Slet al programhistorik?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Slet %s historik?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Lukke alle programmer? Dette kan medføre tab af data" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Luk %s program? Dette kan medføre tab af data" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Kan ikke åbne program" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Opgaveskifter" + diff --git a/po/de_DE.po b/po/de_DE.po new file mode 100644 index 0000000..4a8c808 --- /dev/null +++ b/po/de_DE.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Verlauf löschen" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Alle Anwendungen schließen." + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Ausführen" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Keine Apps geöffnet" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Keine kürzli. verw. Apps" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Kürzlich verwendet" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Verlauf für alle Anwendungen löschen?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "%s-Verlauf löschen?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Alle Anwendungen schließen? Dadurch gehen möglicherweise Daten verloren." + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Anwendung %s schließen? Dadurch gehen möglicherweise Daten verloren." + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Öffnen der Anwendung nicht möglich." + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Task-Switcher" + diff --git a/po/el_GR.po b/po/el_GR.po new file mode 100644 index 0000000..c05eafe --- /dev/null +++ b/po/el_GR.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Εκκαθ. ιστορικού" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Κλείσιμο όλων των εφαρμογών" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Σε εκτέλεση" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Καμία ανοιχτή εφαρμογή" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Καμία πρόσφ. χρησ. εφαρ." + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Χρησιμοποιήθηκε πρόσφατα" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Εκκαθάριση ιστορικού όλων των εφαρμογών;" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Εκκαθάριση ιστορικού %s;" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Να κλείσουν όλες οι εφαρμογές; Αυτό ενδέχεται να προκαλέσει την απώλεια δεδομένων" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Να κλείσει η εφαρμογή %s; Αυτό ενδέχεται να προκαλέσει την απώλεια δεδομένων" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Δεν είναι δυνατό το άνοιγμα της εφαρμογής" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Εφαρμογή εναλλαγής εργασιών" + diff --git a/po/en.po b/po/en.po new file mode 100644 index 0000000..b84af25 --- /dev/null +++ b/po/en.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Clear history" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Close all applications" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Running" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "No apps open" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "No recently used apps" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Recently used" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Clear all app history?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Clear %s history?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Close all apps? This may cause data to be lost" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Close %s app? This may cause data to be lost" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Unable to open application" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Task switcher" + diff --git a/po/en_GB.po b/po/en_GB.po new file mode 100644 index 0000000..7aaa29e --- /dev/null +++ b/po/en_GB.po @@ -0,0 +1,18 @@ +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" + +msgid "IDS_COM_BODY_ANDROID" +msgstr "Android" + +msgid "IDS_COM_BODY_JAVA" +msgstr "Java" + +msgid "IDS_COM_BODY_WARNING" +msgstr "Warning" + +msgid "IDS_COM_BODY_MEDIA" +msgstr "Media" + +msgid "IDS_COM_OPT_HEADPHONES_ABB" +msgstr "Headphones" + diff --git a/po/en_PH.po b/po/en_PH.po new file mode 100644 index 0000000..b84af25 --- /dev/null +++ b/po/en_PH.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Clear history" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Close all applications" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Running" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "No apps open" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "No recently used apps" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Recently used" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Clear all app history?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Clear %s history?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Close all apps? This may cause data to be lost" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Close %s app? This may cause data to be lost" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Unable to open application" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Task switcher" + diff --git a/po/en_US.po b/po/en_US.po new file mode 100644 index 0000000..b84af25 --- /dev/null +++ b/po/en_US.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Clear history" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Close all applications" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Running" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "No apps open" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "No recently used apps" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Recently used" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Clear all app history?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Clear %s history?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Close all apps? This may cause data to be lost" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Close %s app? This may cause data to be lost" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Unable to open application" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Task switcher" + diff --git a/po/es_ES.po b/po/es_ES.po new file mode 100644 index 0000000..093c114 --- /dev/null +++ b/po/es_ES.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Borrar historial" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Cerrar todas las aplicaciones" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "En uso" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Sin aplicaciones abiertas" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Sin aplic usadas recient" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "De uso reciente" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "¿Borrar todo el historial de aplicaciones?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "¿Borrar el historial de %s?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "¿Cerrar todas las aplicaciones? Esta acción puede provocar la pérdida de datos" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "¿Cerrar la aplicación %s? Esta acción puede provocar la pérdida de datos" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "No se puede abrir la aplicación" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Conmutador de tareas" + diff --git a/po/es_MX.po b/po/es_MX.po new file mode 100644 index 0000000..75c339b --- /dev/null +++ b/po/es_MX.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Eliminar historial" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Cerrar todas las aplicaciones" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "En uso" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "No hay aplic. abiertas" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "No hay aplic. usadas rec." + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "De uso reciente" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "¿Eliminar historial de todas las aplicaciones?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "¿Eliminar historial de %s?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "¿Cerrar todas las aplicaciones? Esto puede causar la pérdida de datos" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "¿Cerrar aplicación %s? Esto puede causar la pérdida de datos" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "No se pudo abrir la aplicación" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Conmutador de tareas" + diff --git a/po/es_US.po b/po/es_US.po new file mode 100644 index 0000000..75c339b --- /dev/null +++ b/po/es_US.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Eliminar historial" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Cerrar todas las aplicaciones" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "En uso" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "No hay aplic. abiertas" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "No hay aplic. usadas rec." + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "De uso reciente" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "¿Eliminar historial de todas las aplicaciones?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "¿Eliminar historial de %s?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "¿Cerrar todas las aplicaciones? Esto puede causar la pérdida de datos" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "¿Cerrar aplicación %s? Esto puede causar la pérdida de datos" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "No se pudo abrir la aplicación" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Conmutador de tareas" + diff --git a/po/et.po b/po/et.po new file mode 100644 index 0000000..c75bf12 --- /dev/null +++ b/po/et.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Kustuta ajalugu" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Sulge kõik rakendused" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Töötab" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Ükski rak. ei ole avatud" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Hiljuti kasut. rak. pole" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Hiljuti kasutatud" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Kas kustutada kogu rakenduste ajalugu?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Kas kustutada rakenduse %s ajalugu?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Kas sulgeda kõik vestlused? See võib põhjustada andmekao" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Kas sulgeda rakendus %s? See võib põhjustada andmekao" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Rakendust ei saa avada" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Ülesannete vahetaja" + diff --git a/po/eu.po b/po/eu.po new file mode 100644 index 0000000..8678cd0 --- /dev/null +++ b/po/eu.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Garbitu historia" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Itxi aplikazio guztiak" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Funtzionatzen" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Aplikazio irekirik ez" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Berriki erabili ez diren apl." + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Berriki erabili da" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Garbitu aplikazioen historia osoa?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Garbitu %s historia?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Itxi aplikazio guztiak? Baliteke datuak galaraztea" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Itxi %s aplikazioa? Baliteke datuak gala+J135raztea" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Ezin da aplikazioa ireki" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Ataza aldatzailea" + diff --git a/po/fi.po b/po/fi.po new file mode 100644 index 0000000..0fad832 --- /dev/null +++ b/po/fi.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Tyhjennä historia" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Sulje kaikki sovellukset" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Käynnissä" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Sovelluksia ei käynnissä" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Viim. käyt. sov. ei ole" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Viimeksi käytetyt" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Tyhjennetäänkö koko sovellushistoria?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Tyhjennetäänkö kohteen %s historia?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Suljetaanko kaikki sovellukset? Tietoja voidaan menettää" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Suljetaanko sovellus %s? Tietoja voidaan menettää" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Sovellusta ei voi avata" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Tehtävänvaihtaja" + diff --git a/po/fr_CA.po b/po/fr_CA.po new file mode 100644 index 0000000..8b2bc6c --- /dev/null +++ b/po/fr_CA.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Effacer historique" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Fermer toutes les applications" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Exécution" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Aucune appli ouverte" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Auc appli récemment util" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Récemment utilisée" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Effacer l'historique de toutes les applications ?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Effacer l'historique %s ?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Fermer toutes les applications ? Cela peut entrainer la perte de données" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Fermer l'application %s ? Cela peut entrainer la perte de données" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Impossible d'ouvrir l'application" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Sélecteur de tâches" + diff --git a/po/fr_FR.po b/po/fr_FR.po new file mode 100644 index 0000000..d805672 --- /dev/null +++ b/po/fr_FR.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Effacer historique" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Fermer toutes les applications" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Exécution" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Aucune appli ouverte" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Auc appli récemment util" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Récemment utilisée" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Effacer l'historique de toutes les applications ?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Effacer l'historique %s ?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Fermer toutes les applications ? Cela peut entraîner la perte de données" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Fermer l'application %s ? Cela peut entraîner la perte de données" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Impossible d'ouvrir l'application" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Gestionnaire de tâches" + diff --git a/po/ga.po b/po/ga.po new file mode 100644 index 0000000..ebb8c17 --- /dev/null +++ b/po/ga.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Glan stair" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Dún gach feidhmchlár" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Ar rith" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Níl fchláir oscailte ann" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Níl f'chláir le déanaí ann" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Úsáidte le déanaí" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Glan gach stair feidhmchlár?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Glan stair %s?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Dún gach feidhmchlár? Is féidir go gcaillfear sonraí dá bharr" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Dún feidhmchlár %s? Is féidir go gcaillfear sonraí dá bharr" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Ní féidir an feidhmchlár a oscailt" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Malartóir tascanna" + diff --git a/po/gl.po b/po/gl.po new file mode 100644 index 0000000..d2af007 --- /dev/null +++ b/po/gl.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Borrar o historial" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Pechar todas as aplicacións" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Executando" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Sen aplicacións abertas" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Ning. aplic. usada recen." + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Usado recentemente" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Desexas borrar o historial de todas as aplicacións?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Desexas borrar o historial de %s?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Desexas pechar todas as aplicacións? É posible que isto provoque a perda de datos" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Desexas pechar a aplicación %s? É posible que isto provoque a perda de datos" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Non se pode abrir a aplicación" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Selector de tarefas" + diff --git a/po/he.po b/po/he.po new file mode 100644 index 0000000..d13bad1 --- /dev/null +++ b/po/he.po @@ -0,0 +1,18 @@ +msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "עוצמות קול גבוהות עלולות לפגוע בשמיעה אם מאזינים להן למשך זמן רב" + +msgid "IDS_COM_BODY_ANDROID" +msgstr "Android" + +msgid "IDS_COM_BODY_JAVA" +msgstr "Java" + +msgid "IDS_COM_BODY_WARNING" +msgstr "אזהרה" + +msgid "IDS_COM_BODY_MEDIA" +msgstr "מדיה" + +msgid "IDS_COM_OPT_HEADPHONES_ABB" +msgstr "אוזניות" + diff --git a/po/hi.po b/po/hi.po new file mode 100644 index 0000000..79f4ada --- /dev/null +++ b/po/hi.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "इतिहास साफ़ करें" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "सभी एप्लीकेशंस बंद करें" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "चल रहा है" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "कोई ऐप्स खुली नहीं" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "कोई हाल ही में उपयोग की गई ऐप्स नहीं" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "हाल ही में उपयोग किए" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "सभी ऐप इतिहास साफ़ करें?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "%s इतिहास साफ़ करें?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "सभी ऐप्स बंद करें? इससे डाटा हानि हो सकती है" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "%s ऐप बंद करें? इससे डाटा हानि हो सकती है" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "एप्लीकेशन खोलने में अक्षम" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "कार्य स्विचर" + diff --git a/po/hr.po b/po/hr.po new file mode 100644 index 0000000..6907f81 --- /dev/null +++ b/po/hr.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Obriši povijest" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Zatvori sve aplikacije" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Pokrenuto" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Nema otvorenih aplikacija" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Nema nedavnih aplikacija" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Nedavno korišteno" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Obrisati svu povijest aplikacija?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Obrisati %s povijest?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Zatvoriti sve aplikacije? To može uzrokovati gubitak podataka" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Zatvoriti %s aplikaciju? To može uzrokovati gubitak podataka" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Nemoguće otvoriti aplikaciju" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Biranje zadatka" + diff --git a/po/hu.po b/po/hu.po new file mode 100644 index 0000000..a4d3775 --- /dev/null +++ b/po/hu.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Előzmények törlése" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Összes alkalmazás bezárása" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Futás" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Nincs megnyitott alk." + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "A legut. alk. list. üres" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Legutóbb használt" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Törli az összes alkalmazás előzményeit?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Törli a(z) %s előzményeit?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Bezárja az összes alkalmazást? Így adatok veszhetnek el" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Bezár %s alkalmazást? Így adatok veszhetnek el" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Nem lehet megnyitni az alkalmazást" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Feladatváltó" + diff --git a/po/hy.po b/po/hy.po new file mode 100644 index 0000000..36c3e25 --- /dev/null +++ b/po/hy.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Մաքրել պատմությունը" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Փակել բոլոր ծրագրերը" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Աշխատեցում" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Բաց ծագրեր չկան" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Վերջերս օգտ. ծրագրեր չկան" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Վերջերս օգտագործված" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Մաքրե՞լ բոլոր ծրագրերի պատմությունը:" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Մաքրե՞լ %s պատմությունը:" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Փակե՞լ բոլոր ծրագրերը: Դա կարող է հանգեցնել տվյալների կորստի" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Փակե՞լ %s ծրագիրը: Դա կարող է հանգեցնել տվյալների կորստի" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Անհնար է բացել ծրագիրը" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Առաջադրանքների փոխարկիչ" + diff --git a/po/id.po b/po/id.po new file mode 100644 index 0000000..fb7537c --- /dev/null +++ b/po/id.po @@ -0,0 +1,18 @@ +msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Volume tinggi dapat membahayakan pendengaran Anda jika Anda mendengarkannya dalam waktu yang lama" + +msgid "IDS_COM_BODY_ANDROID" +msgstr "Android" + +msgid "IDS_COM_BODY_JAVA" +msgstr "Java" + +msgid "IDS_COM_BODY_WARNING" +msgstr "Peringatan" + +msgid "IDS_COM_BODY_MEDIA" +msgstr "Media" + +msgid "IDS_COM_OPT_HEADPHONES_ABB" +msgstr "Headphone" + diff --git a/po/is.po b/po/is.po new file mode 100644 index 0000000..727282c --- /dev/null +++ b/po/is.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Hreinsa feril" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Loka öllum forritum" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Í keyrslu" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Engin opin forrit" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Engin nýlega notuð forrit" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Notað nýlega" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Hreinsa feril allra forrita?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Hreinsa feril %s?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Loka öllum forritum? Gögn gætu mögulega tapast" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Loka %s forritum? Gögn gætu mögulega tapast" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Mistókst að opna forrit" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Verkefnaskipti" + diff --git a/po/it_IT.po b/po/it_IT.po new file mode 100644 index 0000000..b7b4a8a --- /dev/null +++ b/po/it_IT.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Cancella cronologia" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Chiudi tutte le applicazioni" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "In esecuzione" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Nessuna applicaz. aperta" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Ness. utilizz. di recente" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Utilizzato di recente" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Cancellare la cronologia di tutte le applicazioni?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Cancellare la cronologia di %s?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Chiudere tutte le applicazioni? Potrebbe verificarsi la perdita di dati" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Chiudere l'applicazione %s? Potrebbe verificarsi la perdita di dati" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Impossibile aprire l'applicazione" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Cambia attività" + diff --git a/po/ja_JP.po b/po/ja_JP.po new file mode 100644 index 0000000..cb06967 --- /dev/null +++ b/po/ja_JP.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "履歴を消去" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "全アプリを終了します。" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "実行中" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "起動アプリはありません。" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "最近使ったアプリはありません。" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "最近使用された言語" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "全てのアプリ履歴を消去しますか?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "%sの履歴を消去しますか?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "全てのアプリを終了しますか?この操作で、データが失われる可能性があります。" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "%sアプリを終了しますか?この操作で、データが失われる可能性があります。" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "アプリケーションを起動できません。" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "タスク切替" + diff --git a/po/ka.po b/po/ka.po new file mode 100644 index 0000000..898b29d --- /dev/null +++ b/po/ka.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "ისტორიის წაშლა" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "ყველა პროგრამის დახურვა" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "ჩართული" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "პროგრამები არაა გახსნილი" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "ბოლო პროგრამები არ არის" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "ბოლოს გამოყენებული" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "წაშლით პროგრამის მთელ ისტორიას?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "გასუფთავდეს ”%s”-ს ისტორია?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "დაიხუროს ყველა პროგრამა? შეიძლება ამან გამოიწვიოს მონაცემთა დაკარგვა" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "დაიხუროს პროგრამა ”%s”? შეიძლება ამან გამოიწვიოს მონაცემთა დაკარგვა" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "პროგრამის გახსნა შეუძლებელია" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "დავალების გადამრთველი" + diff --git a/po/kk.po b/po/kk.po new file mode 100644 index 0000000..643fbde --- /dev/null +++ b/po/kk.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Журналды тазалау" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Барлық қолданбаларды жабыңыз" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Іске қосу" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Ашық қолданба жоқ" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Соңғы пайда. қолданба жоқ" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Соңғы пайдаланылған" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Барлық қолданба журналын тазалау керек пе?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "%s журналын тазалау керек пе?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Барлық қолданбаны жабу керек пе? Ол деректердің жоғалуына себеп болуы мүмкін" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "%s қолданбасын жабу керек пе? Ол деректердің жоғалуына себеп болуы мүмкін" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Қолданбаны ашу мүмкін емес" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Тапсырма қосқыш" + diff --git a/po/ko_KR.po b/po/ko_KR.po new file mode 100644 index 0000000..4b72422 --- /dev/null +++ b/po/ko_KR.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "기록 삭제" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "모든 애플리케이션을 종료합니다" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "실행" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "실행 중인 애플리케이션이 없습니다" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "최근 사용된 애플리케이션이 없습니다" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "최근 사용" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "애플리케이션 기록을 모두 삭제할까요?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "%s 기록을 삭제할까요?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "애플리케이션을 모두 종료할까요? 데이터가 손실될 수 있습니다" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "%s 애플리케이션을 종료할까요? 데이터가 손실될 수 있습니다" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "애플리케이션을 실행하지 못하였습니다" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "작업 전환기" + diff --git a/po/lt.po b/po/lt.po new file mode 100644 index 0000000..897d8ad --- /dev/null +++ b/po/lt.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Valyti istoriją" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Uždaryti visas programas" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Vykdoma" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Nėra atidarytų programų" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Nėra neseniai naud.progr." + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Pastarąjį kartą naudota" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Išvalyti visą programų istoriją?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Išvalyti %s istoriją?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Uždaryti visas programas? Taip galite prarasti duomenis" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Uždaryti programą %s? Taip galite prarasti duomenis" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Neįmanoma atidaryti programos" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Užduočių jungiklis" + diff --git a/po/lv.po b/po/lv.po new file mode 100644 index 0000000..2f75264 --- /dev/null +++ b/po/lv.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Notīrīt vēsturi" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Aizvērt visas programmas" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Darbojas" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Nav atvērtu programmu" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Nav nesen lietotu progr." + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Nesen lietota" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Vai notīrīt visu programmu vēsturi?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Vai notīrīt %s vēsturi?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Vai aizvērt visas programmas? Tādejādi var tikt zaudēti dati" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Vai aizvērt %s programmu? Tādejādi var tikt zaudēti dati" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Nevar atvērt programmu" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Uzdevumu pārslēdzējs" + diff --git a/po/mk.po b/po/mk.po new file mode 100644 index 0000000..398a2bd --- /dev/null +++ b/po/mk.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Бриши историја" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Затвори ги сите апликации" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Активни" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Нема отворени апликации" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Нема последни апликации" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Последни користени" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Да се избрише целата историја на апликацијата?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Да се избрише историјата на %s?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Да се затворат сите апликации? Тоа може да предизвика да се изгубат податоци" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Да се затвори апликацијата %s? Тоа може да предизвика да се изгубат податоци" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Не може да се отвори апликацијата" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Менувач на задачи" + diff --git a/po/ms.po b/po/ms.po new file mode 100644 index 0000000..6955d87 --- /dev/null +++ b/po/ms.po @@ -0,0 +1,18 @@ +msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Kelantangan tinggi mungkin merosakkan pendengaran anda jika anda mendengar untuk masa yang lama" + +msgid "IDS_COM_BODY_ANDROID" +msgstr "Android" + +msgid "IDS_COM_BODY_JAVA" +msgstr "Java" + +msgid "IDS_COM_BODY_WARNING" +msgstr "Amaran" + +msgid "IDS_COM_BODY_MEDIA" +msgstr "Media" + +msgid "IDS_COM_OPT_HEADPHONES_ABB" +msgstr "Fon kepala" + diff --git a/po/nb.po b/po/nb.po new file mode 100644 index 0000000..32acb7a --- /dev/null +++ b/po/nb.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Tøm logg" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Lukk alle programmer" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Kjørende" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Ingen programmer åpne" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Ingen nylig brukte prog." + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Nylig brukt" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Tømme alle programlogger?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Tømme %s logg?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Lukke alle programmer? Dette kan føre til at data går tapt" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Lukke %s programmet? Dette kan føre til at data går tapt" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Kan ikke åpne program" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Oppgaveveksler" + diff --git a/po/nl_NL.po b/po/nl_NL.po new file mode 100644 index 0000000..d9e3864 --- /dev/null +++ b/po/nl_NL.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Geschiedenis wissen" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Alle toepassingen sluiten" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Actief" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Geen apps open" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Geen recent gebruik. apps" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Recent gebruikt" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Alle app-geschiedenis wissen?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Geschiedenis %s wissen?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Alle apps sluiten? Hierbij kunnen gegevens verloren gaan" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "App %s sluiten? Hierbij kunnen gegevens verloren gaan" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Kan applicatie niet openen" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Taak afwisselen" + diff --git a/po/no.po b/po/no.po new file mode 100644 index 0000000..b14a452 --- /dev/null +++ b/po/no.po @@ -0,0 +1,18 @@ +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" + +msgid "IDS_COM_BODY_ANDROID" +msgstr "Android" + +msgid "IDS_COM_BODY_JAVA" +msgstr "Java" + +msgid "IDS_COM_BODY_WARNING" +msgstr "Advarsel" + +msgid "IDS_COM_BODY_MEDIA" +msgstr "Medier" + +msgid "IDS_COM_OPT_HEADPHONES_ABB" +msgstr "Hodetelefoner" + diff --git a/po/pl.po b/po/pl.po new file mode 100644 index 0000000..97ba671 --- /dev/null +++ b/po/pl.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Wyczyść historię" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Zamknij wszystkie aplikacje" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Uruchomione" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Brak otwartych aplikacji" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Brak ostat. używ. aplik." + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Ostatnio używany" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Wyczyścić historię wszystkich aplikacji?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Wyczyścić historię %s?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Zamknąć wszystkie aplikacje? To może spowodować utratę danych" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Zamknąć aplikację %s? To może spowodować utratę danych" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Nie można otworzyć aplikacji" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Menedżer zadań" + diff --git a/po/pt_BR.po b/po/pt_BR.po new file mode 100644 index 0000000..7f755a4 --- /dev/null +++ b/po/pt_BR.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Limpar histórico" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Fechar todos os aplicativos" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Em execução" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Sem aplicativos abertos" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Sem aplic. usados antes" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Utilizado recentemente" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Limpar todo o histórico do aplicativo?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Limpar histórico de %s?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Fechar todos os aplicativos? Isto pode causar perda de dados" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Fechar o aplicativo %s? Isto pode causar perda de dados" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Não é possível abrir aplicativo" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Comutador de tarefas" + diff --git a/po/pt_PT.po b/po/pt_PT.po new file mode 100644 index 0000000..dd7c192 --- /dev/null +++ b/po/pt_PT.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Limpar histórico" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Fechar todas as aplicações" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "A ser executado" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Sem aplicações abertas" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Sem aplics. util. recent." + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Utilizado recentemente" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Limpar o histórico de todas as aplicações?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Limpar histórico de %s?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Fechar todas as aplicações? Isto pode causar a perda de dados" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Fechar %s aplicações? Isto pode causar a perda de dados" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Impossível abrir aplicação" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Comutador de tarefas" + diff --git a/po/ro.po b/po/ro.po new file mode 100644 index 0000000..18fad11 --- /dev/null +++ b/po/ro.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Ştergere istoric" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Închideţi toate aplicaţiile" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "În funcţiune" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Nicio aplicaţie deschisă" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Nicio aplic. util. recent" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Utilizată recent" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Ştergeţi istoricul tuturor aplicaţiilor?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Ştergeţi istoricul %s?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Închideţi toate aplicaţiile? Aceasta poate cauza pierderea datelor" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Închideţi aplicaţia %s? Aceasta poate cauza pierderea datelor" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Imposibil de deschis aplicaţia" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Comutator activităţi" + diff --git a/po/ru_RU.po b/po/ru_RU.po new file mode 100644 index 0000000..5f9a476 --- /dev/null +++ b/po/ru_RU.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Очистить журнал" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Закрыть все приложения" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Выполнять" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Нет открытых приложений" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Нет последних приложений" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Недавно использовавшийся" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Очистить журнал всех приложений?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Очистить журнал %s?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Закрыть все приложения? Это может привести к потере данных" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Закрыть приложение %s? Это может привести к потере данных" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Не удалось открыть приложение" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Диспетчер задач" + diff --git a/po/sk.po b/po/sk.po new file mode 100644 index 0000000..6d57d73 --- /dev/null +++ b/po/sk.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Vymazať históriu" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Ukončite všetky aplikácie" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Spustené" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Žiadne otvorené aplikácie" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Žiadne nap. použ. aplik." + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Nedávno použité" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Vymazať celú históriu aplikácií?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Vymazať históriu aplikácie %s?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Ukončiť všetky aplikácie? Môže to spôsobiť stratu údajov" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Ukončiť aplikáciu %s? Môže to spôsobiť stratu údajov" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Aplikácia sa nedá otvoriť" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Prepínanie úloh" + diff --git a/po/sl.po b/po/sl.po new file mode 100644 index 0000000..1acbdbc --- /dev/null +++ b/po/sl.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Počisti zgodovino" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Zapri vse programe" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Se izvaja" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Ni odprtih programov" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Ni nedavno up. programov" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Nazadnje uporabljeno" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Želite počistiti zgodovino vseh programov?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Želite počistiti zgodovino programa %s?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Želite zapreti vse programe? To lahko povzroči izgubo podatkov" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Želite zapreti program %s? To lahko povzroči izgubo podatkov" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Programa ni mogoče odpreti" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Preklopnik med opravili" + diff --git a/po/sr.po b/po/sr.po new file mode 100644 index 0000000..0d3ff15 --- /dev/null +++ b/po/sr.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Obriši istoriju" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Zatvori sve aplikacije" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Izvršavanje" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Nema otvorenih aplikacija" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Aplik. nisu skoro korišć." + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Nedavno korišćeno" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Obrisati istoriju za sve aplikacije?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Obrisati %s istoriju?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Zatvoriti sve aplikacije? To može dovesti do gubitka podataka" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Zatvoriti %s aplikaciju? To može dovesti do gubitka podataka" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Nije moguće otvoriti aplikaciju" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Planer zadataka" + diff --git a/po/sv.po b/po/sv.po new file mode 100644 index 0000000..61babd1 --- /dev/null +++ b/po/sv.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Rensa historik" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Stäng alla program" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Körs" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Inga öppna program" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Inga nyligen anv. program" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Nyligen använd" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Rensa all programhistorik?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Rensa historik för %s?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Stäng alla program? Detta kan medföra att data förloras" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Stäng %s program? Detta kan medföra att data förloras" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Det går inte att öppna program" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Aktivitetsväxlare" + diff --git a/po/taskmgr.pot b/po/taskmgr.pot new file mode 100644 index 0000000..54670e3 --- /dev/null +++ b/po/taskmgr.pot @@ -0,0 +1,58 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-11-23 18:20+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: _genlist.c:153 +#, c-format +msgid "IDS_TASKMGR_WARNNING_TERMINATE_ALL_TASKS" +msgstr "" + +#: _genlist.c:170 +#, c-format +msgid "IDS_TASKMGR_ASK_DELETE_ALL_HISTORY" +msgstr "" + +#: _genlist.c:186 +#, c-format +msgid "IDS_TASKMGR_ASK_TERMINATE_TASK" +msgstr "" + +#: _genlist.c:203 +#, c-format +msgid "IDS_TASKMGR_ASK_CLEAR_HISTORY" +msgstr "" + +#: _genlist.c:264 +msgid "IDS_TASKMGR_CANNOT_LAUNCH_APPLICATION" +msgstr "" + +#: _info.c:122 +msgid "IDS_TASKMGR_INFO_MESSAGE" +msgstr "" + +#: _logic.c:150 +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "" + +#: _util_efl.c:181 +msgid "Warning!" +msgstr "" + +#: _util_efl.c:184 +msgid "IDS_COM_POP_CANCEL" +msgstr "" diff --git a/po/th.po b/po/th.po new file mode 100644 index 0000000..c69ee38 --- /dev/null +++ b/po/th.po @@ -0,0 +1,18 @@ +msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "ระดับเสียงที่สูงอาจเป็นอันตรายต่อการฟังของคุณได้ หากคุณฟังเป็นเวลานาน" + +msgid "IDS_COM_BODY_ANDROID" +msgstr "Android" + +msgid "IDS_COM_BODY_JAVA" +msgstr "Java" + +msgid "IDS_COM_BODY_WARNING" +msgstr "เตือน" + +msgid "IDS_COM_BODY_MEDIA" +msgstr "มีเดีย" + +msgid "IDS_COM_OPT_HEADPHONES_ABB" +msgstr "หูฟัง" + diff --git a/po/tr_TR.po b/po/tr_TR.po new file mode 100644 index 0000000..848c355 --- /dev/null +++ b/po/tr_TR.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Geçmişi sil" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Tüm uygulamaları kapat" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Çalışıyor" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Açık uygulama yok" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Son kullanılan uyg yok" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Son kullanılanlar" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Tüm uygulama geçmişi silinsin mi?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "%s geçmişi silinsin mi?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Tüm uygulamalar kapatılsın mı? Bu veri kaybına neden olabilir" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "%s uygulaması kapatılsın mı? Bu veri kaybına neden olabilir" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Uygulama açılamıyor" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Görev değiştirici" + diff --git a/po/uk.po b/po/uk.po new file mode 100644 index 0000000..83807af --- /dev/null +++ b/po/uk.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Очищення історії" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Закрити всі програми" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Виконується" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Немає відкритих програм" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Немає нещод. вик. програм" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Нещодавно використані" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Очистити всю історію програм?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "Очистити історію %s?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Закрити усі програми? Це може спричинити втрату даних" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Закрити програму %s? Це може спричинити втрату даних" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Неможливо відкрити програму" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Диспетчер задач" + diff --git a/po/update-po.sh b/po/update-po.sh new file mode 100755 index 0000000..1869cbd --- /dev/null +++ b/po/update-po.sh @@ -0,0 +1,57 @@ +#!/bin/sh + +PACKAGE=taskmgr +SRCROOT=../src +POTFILES=POTFILES.in + +#ALL_LINGUAS= am az be ca cs da de el en_CA en_GB es et fi fr hr hu it ja ko lv mk ml ms nb ne nl pa pl pt pt_BR ru rw sk sl sr sr@Latn sv ta tr uk vi zh_CN zh_TW +ALL_LINGUAS="en_US en_GB ja ko zh_CN" + +XGETTEXT=/usr/bin/xgettext +MSGMERGE=/usr/bin/msgmerge + +echo -n "Make ${PACKAGE}.pot " +if [ ! -e $POTFILES ] ; then + echo "$POTFILES not found" + exit 1 +fi + +$XGETTEXT --default-domain=${PACKAGE} --directory=${SRCROOT} \ + --add-comments --keyword=_ --keyword=N_ --files-from=$POTFILES \ +&& test ! -f ${PACKAGE}.po \ + || (rm -f ${PACKAGE}.pot && mv ${PACKAGE}.po ${PACKAGE}.pot) + +if [ $? -ne 0 ]; then + echo "error" + exit 1 +else + echo "done" +fi + +for LANG in $ALL_LINGUAS; do + echo "$LANG : " + + if [ ! -e $LANG.po ] ; then + cp ${PACKAGE}.pot ${LANG}.po + echo "${LANG}.po created" + else + if $MSGMERGE ${LANG}.po ${PACKAGE}.pot -o ${LANG}.new.po ; then + if cmp ${LANG}.po ${LANG}.new.po > /dev/null 2>&1; then + rm -f ${LANG}.new.po + else + if mv -f ${LANG}.new.po ${LANG}.po; then + echo "" + else + echo "msgmerge for $LANG.po failed: cannot move $LANG.new.po to $LANG.po" 1>&2 + rm -f ${LANG}.new.po + exit 1 + fi + fi + else + echo "msgmerge for $LANG failed!" + rm -f ${LANG}.new.po + fi + fi + echo "" +done + diff --git a/po/uz.po b/po/uz.po new file mode 100644 index 0000000..6583e92 --- /dev/null +++ b/po/uz.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "Jurnalni tozalash" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "Barcha ilovalar yopilsin" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "Ishlamoqda" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "Ochilgan ilovalar yo‘q" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "Foydalanilmayotgan ilova" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "Oxirgi foydalanilgan" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "Barcha ilovalar jurnali tozalansinmi?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "%s jurnali tozalansinmi?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "Barcha ilovalar yopilsinmi? Bu ma’lumot yo‘qotilishiga olib kelishi mumkin" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "%s ilovasi yopilsinmi? Bu ma’lumot yo‘qotilishiga olib kelishi mumkin" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "Ilovani ochib bo‘lmaydi" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "Topshiriq almashtiruvchisi" + diff --git a/po/vi.po b/po/vi.po new file mode 100644 index 0000000..aa6c018 --- /dev/null +++ b/po/vi.po @@ -0,0 +1,18 @@ +msgid "IDS_COM_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Nghe âm lượng to trong thời gian dài có thể làm hại thính giác của bạn" + +msgid "IDS_COM_BODY_ANDROID" +msgstr "Android" + +msgid "IDS_COM_BODY_JAVA" +msgstr "Java" + +msgid "IDS_COM_BODY_WARNING" +msgstr "Cảnh báo" + +msgid "IDS_COM_BODY_MEDIA" +msgstr "Media" + +msgid "IDS_COM_OPT_HEADPHONES_ABB" +msgstr "Tai nghe" + diff --git a/po/zh_CN.po b/po/zh_CN.po new file mode 100644 index 0000000..19088c5 --- /dev/null +++ b/po/zh_CN.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "清除历史" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "关闭所有应用程序" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "正在运行" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "无开启应用程序" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "无最近使用的应用程序" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "最近使用" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "是否清除所有应用程序历史?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "是否清除 %s 历史?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "是否关闭所有应用程序?这可能导致数据丢失" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "是否关闭 %s 应用程序?这可能导致数据丢失" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "无法打开应用程序" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "任务切换器" + diff --git a/po/zh_HK.po b/po/zh_HK.po new file mode 100644 index 0000000..916d9c1 --- /dev/null +++ b/po/zh_HK.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "清除記錄" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "關閉所有應用程式" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "執行" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "無開啟的應用程式" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "無最近使用的應用程式" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "最近使用" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "清除所有應用程式記錄嗎?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "清除 %s 記錄嗎?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "關閉所有應用程式嗎?這可能會導致數據遺失" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "關閉 %s 應用程式嗎?這可能會導致數據遺失" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "無法開啟應用程式" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "工作切換器" + diff --git a/po/zh_SG.po b/po/zh_SG.po new file mode 100644 index 0000000..19088c5 --- /dev/null +++ b/po/zh_SG.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "清除历史" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "关闭所有应用程序" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "正在运行" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "无开启应用程序" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "无最近使用的应用程序" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "最近使用" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "是否清除所有应用程序历史?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "是否清除 %s 历史?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "是否关闭所有应用程序?这可能导致数据丢失" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "是否关闭 %s 应用程序?这可能导致数据丢失" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "无法打开应用程序" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "任务切换器" + diff --git a/po/zh_TW.po b/po/zh_TW.po new file mode 100644 index 0000000..89c754b --- /dev/null +++ b/po/zh_TW.po @@ -0,0 +1,36 @@ +msgid "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +msgstr "清除歷程記錄" + +msgid "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS" +msgstr "關閉所有應用程式" + +msgid "IDS_TASKMGR_HEADER_RUNNING" +msgstr "執行中" + +msgid "IDS_TASKMGR_MBODY_NO_APPS_OPEN" +msgstr "沒有開啟應用程式" + +msgid "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +msgstr "沒有最近使用的應用程式" + +msgid "IDS_TASKMGR_MBODY_RECENTLY_USED" +msgstr "最近使用" + +msgid "IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q" +msgstr "清除所有應用程式歷程記錄嗎?" + +msgid "IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q" +msgstr "清除 %s 歷程記錄嗎?" + +msgid "IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "關閉所有應用程式嗎?這可能會導致資料遺失" + +msgid "IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST" +msgstr "關閉 %s 應用程式嗎?這可能會導致資料遺失" + +msgid "IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION" +msgstr "無法開啟應用程式" + +msgid "IDS_TASKMGR_HEADER_TASK_SWITCHER" +msgstr "任務切換" + diff --git a/src/_cpu.c b/src/_cpu.c new file mode 100755 index 0000000..8a7f1df --- /dev/null +++ b/src/_cpu.c @@ -0,0 +1,111 @@ +/* + * org.tizen.taskmgr + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <unistd.h> +#include <stdio.h> +#include <sys/time.h> + +#include "_util_log.h" +#include "_cpu.h" + +int _get_sysconf(int *ncpu, long *tick) +{ + *ncpu = sysconf(_SC_NPROCESSORS_ONLN); + *ncpu = *ncpu < 1 ? 1 : *ncpu; + *tick = sysconf(_SC_CLK_TCK); + return 0; +} + +int _get_stat_info(pid_t pid, unsigned int *ut, unsigned int *st) +{ + FILE *fp; + char buf[128] = {0, }; + unsigned long cutime, cstime; + int i; + int ret = -1; + + snprintf(buf, sizeof(buf), "/proc/%d/stat", (int)pid); + + *ut = *st = 0; + cutime = cstime = 0; + fp = fopen(buf, "r"); + if (fp) { + retvm_if(fp == NULL, -1, "Failed to open %s\n", buf); + ret = fscanf(fp, "%*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %lu %lu %ld %ld", + ut, st, &cutime, &cstime); + if(ret < 0) + { + _E("Failed to fscanf() \n"); + fclose(fp); + return -1; + } + *ut += cutime; + *st += cstime; + fclose(fp); + + return 0; + } + return -1; +} + +double _get_cpu_ratio(void *data, int ncpu, long tick) +{ + struct _task_info *tinfo = (struct _task_info *)data; + unsigned int utime, stime; + struct timeval timev; + double usr, sys; + int r; + unsigned long long jiffy; + + retvm_if(tinfo == NULL, -1, "Invalid argument: tinfo is NULL\n"); + + utime = 0; + stime = 0; + r = _get_stat_info(tinfo->pid, &utime, &stime); + if (r < 0) { + _D("failed\n"); + return 0; + } + /* retvm_if(r < 0, -1, "Failed to get stat info\n"); */ + + gettimeofday(&timev, NULL); + jiffy = (timev.tv_sec - tinfo->oldtimev.tv_sec) * tick + + ((timev.tv_usec - tinfo->oldtimev.tv_usec) * tick) / 1000000; + + if(utime >= tinfo->oldutime) { + usr = ((double)(utime - tinfo->oldutime) * 100 / jiffy) / ncpu; + } else { + usr = 0.0; + } + if(stime >= tinfo->oldstime) { + sys = ((double)(stime - tinfo->oldstime) * 100 / jiffy) / ncpu; + } else { + sys = 0.0; + } + + /* _D("per:%lf] %lf %lf/ %u %u/ %u %u/ %u\n", + usr+sys, usr, sys, utime, stime, tinfo->oldutime, tinfo->oldstime, jiffy); + */ + + tinfo->oldutime = utime; + tinfo->oldstime = stime; + tinfo->oldtimev = timev; + + return usr + sys; +} + + diff --git a/src/_cpu.h b/src/_cpu.h new file mode 100755 index 0000000..c3d9717 --- /dev/null +++ b/src/_cpu.h @@ -0,0 +1,28 @@ +/* + * org.tizen.taskmgr + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef __TASKMANAGER_CPU_H__ +#define __TASKMANAGER_CPU_H__ + +#include "taskmanager.h" + +int _get_sysconf(int *ncpu, long *tick); +double _get_cpu_ratio(void *data, int ncpu, long tick); + +#endif +/* __TASKMANAGER_CPU_H__ */ diff --git a/src/_eina.c b/src/_eina.c new file mode 100755 index 0000000..f8f3e24 --- /dev/null +++ b/src/_eina.c @@ -0,0 +1,303 @@ +/* + * org.tizen.taskmgr + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + + +#include <stdlib.h> +#include <string.h> +#include <stdio.h> + +#include <Eina.h> +#include <ail.h> +#include <aul.h> +#include <rua.h> + +#include "taskmanager.h" +#include "_util_log.h" + +#define TASKMANAGER_ICON_NAME "org.tizen.taskmgr.png" + +static int grp_cnt[TS_MAX]; + +void _init_grp_cnt(void) +{ + int i; + + for(i = 0; i < TS_MAX; i++) { + grp_cnt[i] = 0; + } +} + +int _get_grp_cnt(int which) +{ + return grp_cnt[which]; +} + +int runapp_info_get(const aul_app_info *ainfo, void *data) +{ + ail_appinfo_h handle; + ail_error_e ret; + + char *valc; + bool valb; + char buf[1024] = { 0, }; + struct appdata *ad = data; + struct _task_info *info; + + retvm_if(ainfo == NULL, -1, "Invalid argument: ainfo is NULL\n"); + retvm_if(data == NULL, -1, "Invalid argument: data is NULL\n"); + + retvm_if(ainfo->pid <= 0, -1, "Invalid pid(%u)\n", ainfo->pid); + + /* filtering */ + if (ainfo->pid == getpid()) { + return 0; + } + + retvm_if(ainfo->pkg_name == NULL, 0, "Invalid pkg_name(%s)\n", ainfo->pkg_name); + +// _D("running app is (%s)\n", ainfo->pkg_name); + ret = ail_package_get_appinfo(ainfo->pkg_name, &handle); + retvm_if(ret != AIL_ERROR_OK, -1, + "Failed to get appinfo, pkg_name:%s\n", ainfo->pkg_name); + + ret = ail_appinfo_get_bool(handle, AIL_PROP_X_SLP_TASKMANAGE_BOOL, &valb); + if (valb == 0) { + goto exit; + } + info = calloc(1, sizeof(struct _task_info)); + if (info == NULL) { + _E("Failed to calloc task_info\n"); + goto exit; + } + info->pkg_name = strdup(ainfo->pkg_name); + + ret = ail_appinfo_get_str(handle, AIL_PROP_NAME_STR, &valc); + if (valc == NULL) { + _D("%s: Failed to get ail name\n", ainfo->pkg_name); + valc = "Unknown"; + } + info->app_name = strdup(valc); + + ret = ail_appinfo_get_str(handle, AIL_PROP_ICON_STR, &valc); + if (valc == NULL || (ecore_file_exists(valc) == EINA_FALSE)) { + _D("%s: Failed to get ail icon\n", ainfo->pkg_name); + valc = TASKMANAGER_ICON_NAME; + } + + snprintf(buf, sizeof(buf), "%s", valc); + info->icn_path = strdup(buf); +// _D("get app name[%s] set [%s], icon path[%s]\n", ainfo->pkg_name, info->app_name, buf); + + info->ad = ad; + info->pid = ainfo->pid; + info->category = TS_INUSE; +// info->mem_total = ad->mem_total; + _D("%s/pid(%d)\n", info->app_name, info->pid); + + ad->applist[TS_INUSE] = eina_list_prepend(ad->applist[TS_INUSE], info); + grp_cnt[TS_INUSE]++; + + exit: + ret = ail_package_destroy_appinfo(handle); + retvm_if(ret != AIL_ERROR_OK, -1, "Failed to destroy appinfo\n"); + return 0; +} + +int taskmanager_get_history_app_info(void *data) +{ + struct appdata *ad = data; + struct _task_info *info, *info_r; + Eina_List *l_r; + int flag = 0; + + struct rua_rec rec_result = { 0, }; + char **table = NULL; + char buf[1024] = { 0, }; + int nrows = 0, ncols = 0; + int row = 0; + + ail_appinfo_h handle; + ail_error_e ret; + bool valb; + char *valc; + + retvm_if(data == NULL, -1, "Invalid argument: data is NULL\n"); + retvm_if(rua_init() == -1, -1, "Failed to rua_init\n"); + + if (rua_history_load_db(&table, &nrows, &ncols) == -1) { + rua_fini(); + return -1; + } + + if (nrows == 0) { + rua_history_unload_db(&table); + rua_fini(); + return 0; + } + + ad->applist[TS_HISTORY] = eina_list_nth_list(ad->applist[TS_HISTORY], 0); + for (row = 0; row < nrows; row++) { + rua_history_get_rec(&rec_result, table, nrows, ncols, row); + + /* filtering + * pkg_name could be NULL or 0 length because it is launch by fork. + */ + if (rec_result.pkg_name == NULL + || strlen(rec_result.pkg_name) < 1) { + continue; + } + + _D("%s\n", rec_result.pkg_name); + ret = ail_package_get_appinfo(rec_result.pkg_name, &handle); + if (ret != AIL_ERROR_OK) { + _D("Failed to get appinfo(%d)\n", ret); + continue; + } + + ret = ail_appinfo_get_bool(handle, AIL_PROP_X_SLP_TASKMANAGE_BOOL, &valb); + if(valb == 0) { + goto cont; + } + + EINA_LIST_FOREACH(ad->applist[TS_INUSE], l_r, info_r) { + if (info_r != NULL) { + if (!strcmp + (rec_result.pkg_name, info_r->pkg_name)) { + flag = 1; + break; + } + } + } + + if (flag == 0) { + info = calloc(1, sizeof(struct _task_info)); + retvm_if(info == NULL, -1, "Failed to calloc _task_info\n"); + + info->pkg_name = strdup(rec_result.pkg_name); + + ret = ail_appinfo_get_str(handle, AIL_PROP_NAME_STR, &valc); + if (valc == NULL) { + _D("Failed to get ail name\n"); + valc = "Unknown"; + } + info->app_name = strdup(valc); + + ret = ail_appinfo_get_str(handle, AIL_PROP_ICON_STR, &valc); + if (valc == NULL || (ecore_file_exists(valc) == EINA_FALSE)) { + _D("Failed to get ail icon\n"); + valc = TASKMANAGER_ICON_NAME; + } + snprintf(buf, sizeof(buf), "%s", valc); + info->icn_path = strdup(buf); + _D("%s\n", info->icn_path); + + info->ad = ad; + info->pid = 0; + info->category = TS_HISTORY; + + if (rec_result.arg != NULL) { + if (strlen(rec_result.arg) > 0) { + info->b = bundle_decode( + (const bundle_raw *)rec_result.arg, + strlen(rec_result.arg)); + } + } + + ad->applist[TS_HISTORY] = + eina_list_append(ad->applist[TS_HISTORY], info); + grp_cnt[TS_HISTORY]++; + + } + + flag = 0; + +cont: + ret = ail_package_destroy_appinfo(handle); + } + + rua_history_unload_db(&table); + rua_fini(); + + return 0; +} + +int _free_einalist_all(struct appdata *ad) +{ + Eina_List *l; + struct _task_info *info = NULL; + int i; + + if (ad == NULL) { + printf("[Error] Invalid argument: appdata is NULL\n"); + return -1; + } + + for (i = 0; i < TS_MAX; i++) { + if (ad->applist[i] == NULL) + continue; + + EINA_LIST_FOREACH(ad->applist[i], l, info) { + if (info != NULL) { + if (info->b) + bundle_free(info->b); + + taskmanager_free_info(info); + info = NULL; + } + } + + eina_list_free(ad->applist[i]); + ad->applist[i] = NULL; + } + + return 0; +} + +int _subt_einalist_item(struct appdata *ad, int pid) +{ +_D("func\n"); + Eina_List *l; + int ret = -1; + struct _task_info *info; + + retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n"); + retvm_if(ad->applist[TS_INUSE] == NULL, -1, "applist is NULL\n"); + + EINA_LIST_FOREACH(ad->applist[TS_INUSE], l, info) { + _D("pid(%u):(%u)\n", pid, info->pid); + if (info == NULL) { + _E("Failed to get info\n"); + continue; + } + + if (pid > 0 && pid == info->pid) { + if(info->app_name) _D("killed [%s]\n", info->app_name); + ad->applist[TS_INUSE] = + eina_list_remove_list(ad->applist[TS_INUSE], l); + taskmanager_free_info(info); + info = NULL; + ret = 0; + } + } + return ret; +} + + + + diff --git a/src/_eina.h b/src/_eina.h new file mode 100755 index 0000000..59d2efe --- /dev/null +++ b/src/_eina.h @@ -0,0 +1,36 @@ +/* + * org.tizen.taskmgr + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + + +#ifndef __TASKMANAGER_EINA_H__ +#define __TASKMANAGER_EINA_H__ + +#include <aul.h> + +#include "taskmanager.h" + +void _init_grp_cnt(void); +int _get_grp_cnt(int which); +int runapp_info_get(const aul_app_info *ainfo, void *data); +int taskmanager_get_history_app_info(void *data); +int _free_einalist_all(struct appdata *ad); +int _subt_einalist_item(struct appdata *ad, int pid); + +#endif +/* __TASKMANAGER_EINA_H__ */ diff --git a/src/_genlist.c b/src/_genlist.c new file mode 100755 index 0000000..0b21d53 --- /dev/null +++ b/src/_genlist.c @@ -0,0 +1,854 @@ +/* + * org.tizen.taskmgr + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + + +#include <stdio.h> +#include <unistd.h> +#include <appcore-efl.h> +#include <vconf.h> +#include <utilX.h> +#include <aul.h> +#include <rua.h> +#include <Ecore_X.h> +#include <Eina.h> +#include <unistd.h> +#include <time.h> +#include <sys/time.h> +#include <pthread.h> + +#include "taskmanager.h" +#include "_genlist.h" +#include "_util_log.h" +#include "_util_efl.h" +#include "_logic.h" +#include "_cpu.h" +#include "_eina.h" +#include "_info.h" +#include "_progressbar.h" + +static Elm_Object_Item *g_egi; + +/* group list:gl, data list:dl, button list:bl, no list: nl */ +static Elm_Genlist_Item_Class itc_gl; +static Elm_Genlist_Item_Class itc_hl; +static Elm_Genlist_Item_Class itc_dl; +static Elm_Genlist_Item_Class itc_bl; +static Elm_Genlist_Item_Class itc_nl; +static Elm_Genlist_Item_Class itc_separator4; +static Elm_Genlist_Item_Class itc_separator2; + +static char *button_text[TS_MAX] = { + "IDS_TASKMGR_BUTTON_CLOSE_ALL_APPLICATIONS", + "IDS_TASKMGR_BUTTON_CLEAR_HISTORY_ABB" +}; + +static void end_all_inuse_cb(void *data, Evas_Object *obj, void *event_info); +static void delete_all_history_cb(void *data, Evas_Object *obj, + void *event_info); +void (*func_del[TS_MAX]) (void *data, Evas_Object *obj, void *event_info) = { +&end_all_inuse_cb, &delete_all_history_cb}; + +static void end_inuse_cb(void *data, Evas_Object *obj, void *event_info); +static void delete_history_cb(void *data, Evas_Object *obj, void *event_info); +void (*func_end[TS_MAX]) (void *data, Evas_Object *obj, void *event_info) = { +&end_inuse_cb, &delete_history_cb}; + +static char *group_name[TS_MAX] = { + "IDS_TASKMGR_HEADER_RUNNING", + "IDS_TASKMGR_MBODY_RECENTLY_USED" +}; + +static char *nolist_text[TS_MAX] = { + "IDS_TASKMGR_MBODY_NO_APPS_OPEN", + "IDS_TASKMGR_MBODY_NO_RECENTLY_USED_APPS" +}; + +void taskmanager_free_info(struct _task_info *info); +Eina_Bool _update_list(void *data); + +static void clear_genlist(void *data) +{ + ret_if(data == NULL); + + struct appdata *ad = data; + + if (ad->gl) { + elm_genlist_clear(ad->gl); + } +} + +void clear_task_manager_list(void *data) +{ + ret_if(data == NULL); + + struct appdata *ad = data; + _free_einalist_all(ad); + clear_genlist(ad); +} + +static void app_genlist_item_update(void *data) +{ + ret_if(data == NULL); + + struct appdata *ad = (struct appdata *)data; + + Elm_Object_Item *it_r; + Eina_List *realized_item_list, *l_r; + unsigned int cnt = 0; + + realized_item_list = elm_genlist_realized_items_get(ad->gl); + cnt = eina_list_count(realized_item_list); + if (cnt > 0) { + EINA_LIST_FOREACH(realized_item_list, l_r, it_r) { + if (it_r != NULL) { + elm_genlist_item_update(it_r); + } + } + } +} + +Eina_Bool alert_app_info(void *data) +{ + retv_if(data == NULL, -1); + + struct appdata *ad = (struct appdata *)data; + + app_genlist_item_update(ad); + return ECORE_CALLBACK_CANCEL; +} + +static void end_all_inuse_cb(void *data, Evas_Object *obj, void *event_info) +{ + ret_if(data == NULL); + + struct appdata *ad = data; + char buf[_BUF_MAX] = { 0, }; + + ad->mode = MODE_END_ALL_INUSE; + snprintf(buf, sizeof(buf), T_("IDS_TASKMGR_POP_CLOSE_ALL_APPS_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST")); + if (ad->popup_ask) { + evas_object_del(ad->popup_ask); + ad->popup_ask = NULL; + } + ad->popup_ask = _add_popup_ask(ad->win, buf, ad); +} + +static void +delete_all_history_cb(void *data, Evas_Object *obj, void *event_info) +{ +_D("func\n"); + ret_if(data == NULL); + + struct appdata *ad = data; + char buf[_BUF_MAX] = { 0, }; + + ad->mode = MODE_DEL_ALL_HISTORY; + snprintf(buf, sizeof(buf), T_("IDS_TASKMGR_POP_CLEAR_ALL_APP_HISTORY_Q")); + if (ad->popup_ask) { + evas_object_del(ad->popup_ask); + ad->popup_ask = NULL; + } + ad->popup_ask = _add_popup_ask(ad->win, buf, ad); +} + +static void end_inuse_cb(void *data, Evas_Object *obj, void *event_info) +{ + ret_if(data == NULL); + + struct _task_info *info_ev = (struct _task_info *)data; + struct appdata *ad = info_ev->ad; + char buf[_BUF_MAX] = { 0, }; + + ad->mode = MODE_END_INUSE; + snprintf(buf, _BUF_MAX, T_("IDS_TASKMGR_POP_CLOSE_PS_APP_Q_THIS_MAY_CAUSE_DATA_TO_BE_LOST"), info_ev->app_name); + if (ad->popup_ask) { + evas_object_del(ad->popup_ask); + ad->popup_ask = NULL; + } + ad->popup_ask = _add_popup_ask(ad->win, buf, ad); + g_egi = (void *)info_ev->it; +} + +static void delete_history_cb(void *data, Evas_Object *obj, void *event_info) +{ + ret_if(data == NULL); + + struct _task_info *info_ev = (struct _task_info *)data; + struct appdata *ad = info_ev->ad; + char buf[_BUF_MAX] = { 0, }; + + ad->mode = MODE_DEL_HISTORY; + + snprintf(buf, _BUF_MAX, T_("IDS_TASKMGR_POP_CLEAR_PS_HISTORY_Q"), info_ev->app_name); + if (ad->popup_ask) { + evas_object_del(ad->popup_ask); + ad->popup_ask = NULL; + } + ad->popup_ask = _add_popup_ask(ad->win, buf, ad); + g_egi = (void *)info_ev->it; +} + +static void nl_sel(void *data, Evas_Object *obj, void *event_info) +{ +_D("func\n"); + Elm_Object_Item *item = (Elm_Object_Item *) event_info; + elm_genlist_item_selected_set(item, EINA_FALSE); + return; +} + +static char *nl_text_get(void *data, Evas_Object *obj, const char *part) +{ + char buf[_BUF_MAX] = { 0, }; + + if (!strcmp(part, "elm.text")) { + snprintf(buf, sizeof(buf), "%s", T_(nolist_text[(int)data])); + + return strdup(buf); + } + return NULL; +} + +static void _gl_sel_app(void *data, Evas_Object *obj, void *event_info) +{ +_D("func\n"); + Elm_Object_Item *item = (Elm_Object_Item *) event_info; + struct appdata *ad = (struct appdata *)data; + struct _task_info *info; + /* parameter to block double click */ + static int selected = 0; + Elm_Object_Item *it = (Elm_Object_Item *) event_info; + int ret = -1; + + elm_genlist_item_selected_set(it, EINA_FALSE); + + retm_if(ad == NULL, "Invalid argument: appdata is NULL\n"); + + if (ad->update_timer) { + ecore_timer_del(ad->update_timer); + ad->update_timer = NULL; + } + + if (selected == 1) + return; + selected = 1; + + if (item == NULL) { + _E("[Error] Cannot find genlist item\n"); + selected = 0; + return; + } + + info = (struct _task_info *)elm_object_item_data_get(item); + if (info == NULL) { + _E("[Error] Cannot get item data: info\n"); + selected = 0; + return; + } + + if (info->pid) { + /* when application is alive */ + ret = aul_resume_pid(info->pid); + selected = 0; + } else { + /* when application is dead */ + if (info->pkg_name == NULL) { + util_show_popup_with_message(info->ad->win, + 3.0, + T_("IDS_TASKMGR_POP_UNABLE_TO_OPEN_APPLICATION")); + selected = 0; + + } else { + _unset_notification_level(info->ad->win); + + if (!strcmp(info->pkg_name, "org.tizen.phone")) { + /* exception : Because dialer doesn't need bundle + * since being unifyed dialer, voice call and video call + */ + ret = aul_launch_app(info->pkg_name, NULL); + selected = 0; + } else { + ret = aul_launch_app(info->pkg_name, info->b); + selected = 0; + } + } + } + if(ret == 0) { + _D("exit after 0.3 sec\n"); + ad->exit_timer = ecore_timer_add(0.3, _exit_cb, ad); + } +} + + +static Evas_Object *_gl_content_get_app(void *data, Evas_Object *obj, + const char *part) +{ + struct _task_info *info = (struct _task_info *)data; + char buf[_BUF_MAX] = { 0, }; + + Evas_Object *icon = NULL; + Evas_Object *btn = NULL; + + Evas_Object *rt, *icon_ly = NULL; + + retvm_if(data == NULL, NULL, "Invalid argument: task info is NULL\n"); + + if (!strcmp(part, "elm.icon.1")) { + snprintf(buf, sizeof(buf), "%s", info->icn_path); + retvm_if(buf == NULL, NULL, "%s icon is NULL\n", info->app_name); + if (!ecore_file_exists(buf) || strlen(buf) < 4) + snprintf((char *)buf, (size_t) sizeof(buf), + (const char *)IMAGEDIR "/icon_taskmgr.png"); + + if (!strncmp(&buf[strlen(buf) - 3], "edj", 3)) { + icon_ly = _add_layout(obj, buf, "icon"); + + } else { + icon_ly = elm_icon_add(obj); + elm_image_file_set(icon_ly, buf, NULL); + } + + icon = _add_layout(obj, EDJ_NAME, "icon"); + retvm_if(icon == NULL, NULL, "Cannot add layout: icon\n"); + + rt = evas_object_rectangle_add(evas_object_evas_get(obj)); + retvm_if(rt == NULL, NULL, "Failed to add rectangle\n"); + + evas_object_color_set(rt, 0, 0, 0, 0); + evas_object_size_hint_min_set(rt, + (int)72 * elm_config_scale_get(), + (int)72 * elm_config_scale_get()); + elm_object_part_content_set(icon, "icon_ly", rt); + + elm_object_part_content_set(icon, "icon", icon_ly); + + return icon; + + } else if (!strcmp(part, "elm.icon.2")) { + btn = elm_button_add(obj); + elm_object_text_set(btn, S_("IDS_COM_BODY_END")); + elm_object_style_set(btn, "default"); + + evas_object_smart_callback_add(btn, "clicked", + func_end[info->category], info); + elm_object_focus_set(btn, EINA_FALSE); + evas_object_propagate_events_set(btn, EINA_FALSE); + + return btn; + } + + return NULL; +} + +static char *_gl_text_get_app(void *data, Evas_Object *obj, const char *part) +{ + struct _task_info *info = (struct _task_info *)data; + char buf[_BUF_MAX] = { 0, }; + + retvm_if(data == NULL, NULL, "Invalid argument: task info is NULL\n"); + retvm_if(part == NULL, NULL, "Invalid argument: part is NULL\n"); + + if (!strcmp(part, "elm.text")) { + snprintf(buf, _BUF_MAX, "%s", info->app_name); + return strdup(buf); + + } + return NULL; +} + +static void _bl_sel(void *data, Evas_Object *obj, void *event_info) +{ +_D("func\n"); + Elm_Object_Item *item = (Elm_Object_Item *) event_info; + elm_genlist_item_selected_set(item, EINA_FALSE); +} + +static Evas_Object *_bl_content_get(void *data, Evas_Object *obj, + const char *part) +{ + Evas_Object *btn = NULL; + struct appdata *ad = evas_object_data_get(obj, "appdata"); + + if (!strcmp(part, "elm.icon")) { + + btn = elm_button_add(obj); + elm_object_style_set(btn, "default"); + + elm_object_text_set(btn, T_(button_text[(int)data])); + evas_object_smart_callback_add(btn, "clicked", + func_del[(int)data], ad); + elm_object_focus_set(btn, EINA_FALSE); + + evas_object_size_hint_min_set(btn, 0, 50); + evas_object_size_hint_max_set(btn, 0, 50); + evas_object_propagate_events_set(btn, EINA_FALSE); + + return btn; + + } + return NULL; +} + +static char *_gl_text_get_title(void *data, Evas_Object *obj, const char *part) +{ + char buf[_BUF_MAX]; + + if (!strcmp(part, "elm.text")) { + snprintf(buf, sizeof(buf), "%s (%d)", + T_(group_name[(int)data]), _get_grp_cnt((int)data)); + return strdup(buf); + } + return NULL; +} + +static char *_gl_text_get_his(void *data, Evas_Object *obj, const char *part) +{ + struct _task_info *info = (struct _task_info *)data; + char buf[_BUF_MAX] = { 0, }; + + if (!strcmp(part, "elm.text")) { + snprintf(buf, _BUF_MAX, "%s", info->app_name); + return strdup(buf); + } + return NULL; +} + +static Evas_Object *_gl_content_get_his(void *data, Evas_Object *obj, + const char *part) +{ + struct _task_info *info = (struct _task_info *)data; + char buf[_BUF_MAX] = { 0, }; + + Evas_Object *icon = NULL; + Evas_Object *btn = NULL; + + retvm_if(data == NULL, NULL, "Invalid argument: task info is NULL\n"); + + if (!strcmp(part, "elm.icon.1")) { + snprintf(buf, sizeof(buf), "%s", info->icn_path); + retvm_if(buf == NULL, NULL, "%s icon is NULL\n", info->app_name); + if (!ecore_file_exists(buf) || strlen(buf) < 4) + snprintf((char *)buf, (size_t) sizeof(buf), + (const char *)IMAGEDIR "/icon_taskmgr.png"); + + icon = elm_icon_add(obj); + elm_image_file_set(icon, buf, NULL); + elm_image_preload_disabled_set(icon, EINA_TRUE); + + evas_object_size_hint_min_set(icon, + (int)72 * elm_config_scale_get(), + (int)72 * elm_config_scale_get()); + + return icon; + + } else if (!strcmp(part, "elm.icon.2")) { + btn = elm_button_add(obj); + elm_object_text_set(btn, S_("IDS_COM_OPT_DELETE")); + elm_object_style_set(btn, "default"); + + evas_object_smart_callback_add(btn, "clicked", + func_end[info->category], info); + elm_object_focus_set(btn, EINA_FALSE); + evas_object_propagate_events_set(btn, EINA_FALSE); + + return btn; + } + + return NULL; + +} + +void _set_itc(void) +{ + itc_gl.item_style = "grouptitle"; + itc_gl.func.text_get = _gl_text_get_title; + + //itc_dl.item_style = "2text.2icon.7"; + itc_dl.item_style = "1text.2icon.4"; + itc_dl.func.text_get = _gl_text_get_app; + itc_dl.func.content_get = _gl_content_get_app; + + itc_hl.item_style = "1text.2icon.4"; + itc_hl.func.text_get = _gl_text_get_his; + itc_hl.func.content_get = _gl_content_get_his; + + itc_separator4.item_style = "dialogue/seperator"; + itc_separator2.item_style = "dialogue/seperator"; + + itc_bl.item_style = "1icon"; + itc_bl.func.content_get = _bl_content_get; + + itc_nl.item_style = "1text"; + itc_nl.func.text_get = nl_text_get; + +} + +int check_genlist(struct appdata *ad) +{ + Elm_Object_Item *egi; + struct _task_info *info; + + egi = elm_genlist_first_item_get(ad->gl); + while(egi) { + info = (struct _task_info *)elm_object_item_data_get(egi); + if(info) { + _D("%s info[0x%x]\n", (int)info < 3 ? "-" : info->app_name, info); + } else { + _D("group\n"); + } + egi = elm_genlist_item_next_get(egi); + } + + return 0; +} + +int _set_genlist_from_eina(struct appdata *ad) +{ +_D("func\n"); + Eina_List *l; + Elm_Object_Item *git, *item; + struct _task_info *info; + int i; + + retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n"); + retvm_if(ad->gl == NULL, -1, "Invalid argument:genlist is NULL\n"); + + for (i = 0; i < TS_MAX; i++) { + git = elm_genlist_item_append(ad->gl, &itc_gl, + (void *)i, NULL, + ELM_GENLIST_ITEM_NONE, + NULL, NULL); + retvm_if(git == NULL, -1, "Failed append item\n"); + elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + + if (eina_list_count(ad->applist[i]) > 0) { + + item = elm_genlist_item_append(ad->gl, &itc_separator4, + NULL, NULL, + ELM_GENLIST_ITEM_NONE, + NULL, NULL); + elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + + elm_genlist_item_append(ad->gl, &itc_bl, + (void *)i, NULL, + ELM_GENLIST_ITEM_NONE, + _bl_sel, (void *)i); + + item = elm_genlist_item_append(ad->gl, &itc_separator2, + NULL, NULL, + ELM_GENLIST_ITEM_NONE, + NULL, NULL); + elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + + ad->applist[i] = eina_list_nth_list(ad->applist[i], 0); + EINA_LIST_FOREACH(ad->applist[i], l, info) { + if (info != NULL) { + info->it = elm_genlist_item_append(ad->gl, + (i == TS_INUSE) ? &itc_dl : &itc_hl, + (void *)info, NULL, + ELM_GENLIST_ITEM_NONE, + _gl_sel_app, ad); + } + } + } else { + item = elm_genlist_item_append(ad->gl, &itc_nl, + (void *)i, NULL, + ELM_GENLIST_ITEM_NONE, + nl_sel, NULL); + elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + } + } + return 0; +} + +void _set_genlist(struct appdata *ad) +{ +_D("func\n"); + retm_if(ad == NULL, "Invalid argument: appdata is NULL\n"); + int ret = AUL_R_ERROR; + int retry_cnt = 0; + int sleep_value = 1000; + + _init_grp_cnt(); + + while (ret != AUL_R_OK && retry_cnt < 5) { + usleep(sleep_value); + ret = aul_app_get_running_app_info(runapp_info_get, ad); + + if (ret != AUL_R_OK) { + _D("Fail to get running app information from ail"); + } + + retry_cnt++; + sleep_value *= 2; + } + + taskmanager_get_history_app_info(ad); + _set_genlist_from_eina(ad); + +} + +void refresh_app_info(struct appdata *ad) +{ +_D("func\n"); + retm_if(ad == NULL, "Invalid argument: appdata is NULL\n"); + + _free_einalist_all(ad); + clear_genlist(ad); + + _set_genlist(ad); + + alert_app_info(ad); + +} + +void _del_popup_timer(struct appdata *ad) +{ + if (ad->popup_timer) { + ecore_timer_del(ad->popup_timer); + ad->popup_timer = NULL; + } +} + +void taskmanager_free_info(struct _task_info *info) +{ + if (info) { + if (info->app_name) { + free(info->app_name); + info->app_name = NULL; + } + if (info->pkg_name) { + free(info->pkg_name); + info->pkg_name = NULL; + } + if (info->icn_path) { + free(info->icn_path); + info->icn_path = NULL; + } + + free(info); + } +} + +int response_end_inuse(struct appdata *ad) +{ +_D("func\n"); + Eina_List *l, *l_next; + struct _task_info *info; + Eina_Bool dead = EINA_FALSE; + + retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n"); + + ad->ending = EINA_TRUE; + + EINA_LIST_FOREACH_SAFE(ad->applist[TS_INUSE], l, l_next, info) { + _D("applist pid : %d", info->pid); + if (info->it == g_egi) { + _D("matched applist pid : %d", info->pid); + if (info->pid > 0) { + if (aul_terminate_pid(info->pid) < 0) { + kill(info->pid, SIGKILL); + dead = EINA_TRUE; + } + } + break; + } + } + ad->ending = EINA_FALSE; + + if(!dead){ + _D("matched applist is nothing\n"); + _del_progressbar(ad); + } + + return 0; +} + +Eina_Bool _refresh_idler_cb(void *data) +{ +_D("func\n"); + struct appdata *ad = (struct appdata *)data; + retvm_if(data == NULL, ECORE_CALLBACK_CANCEL, "Invalid argument: appdata is NULL\n:"); + + _del_popup_timer(ad); + _del_progressbar(ad); + refresh_app_info(ad); + return ECORE_CALLBACK_CANCEL; +} + +int response_end_all_inuse(struct appdata *ad) +{ + Eina_List *l; + struct _task_info *info; + + retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n"); + + ad->ending = EINA_TRUE; + + if(ad->update_timer) { + ecore_timer_del(ad->update_timer); + ad->update_timer = NULL; + } + + ad->endcnt = eina_list_count(ad->applist[TS_INUSE]); + _D("set end count (%d)\n", ad->endcnt); + + EINA_LIST_FOREACH(ad->applist[TS_INUSE], l, info) { + if (info != NULL) { + _D("applist pid : %d", info->pid); + if (info->pid > 0) { + if (aul_terminate_pid(info->pid) < 0) { + kill(info->pid, SIGKILL); + } + _D("terminated\n"); + } + } + } + ad->ending = EINA_FALSE; + return 0; +} + +int response_del_history(struct appdata *ad) +{ + Eina_List *l, *l_next; + struct _task_info *info; + + retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n"); + + _show_progressbar(ad); + EINA_LIST_FOREACH_SAFE(ad->applist[TS_HISTORY], l, l_next, info) { + _D("history applist pid : %d", info->pid); + if (info->it == g_egi) { + + if (rua_init() == -1) { + break; + } + rua_delete_history_with_pkgname(info->pkg_name); + rua_fini(); + + ad->applist[TS_HISTORY] = + eina_list_remove_list(ad->applist[TS_HISTORY], l); + + if (info->b) { + bundle_free(info->b); + } + + elm_object_item_del(info->it); + taskmanager_free_info(info); + break; + } + } + alert_app_info(ad); + refresh_app_info(ad); + _del_popup_timer(ad); + _del_progressbar(ad); + + ad->mode = MODE_NONE; + return 0; +} + +int response_del_all_history(struct appdata *ad) +{ + Eina_List *l; + struct _task_info *info; + + retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n"); + + if(ad->update_timer) { + _D("update timer is deleted\n"); + ecore_timer_del(ad->update_timer); + ad->update_timer = NULL; + } + + + _show_progressbar(ad); + + if (rua_init() == -1) { + return -1; + } + + EINA_LIST_FOREACH(ad->applist[TS_HISTORY], l, info) { + if (info != NULL) { + rua_delete_history_with_pkgname(info->pkg_name); + } + } + + if (eina_list_count(ad->applist[TS_INUSE]) == 0) { + rua_clear_history(); + } + + rua_fini(); + refresh_app_info(ad); + _del_popup_timer(ad); + _del_progressbar(ad); + + ad->mode = MODE_NONE; + return 0; +} + +int response_kill_inuse(struct appdata *ad) +{ + Eina_List *l, *l_next; + struct _task_info *info; + + retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n"); + + _show_progressbar(ad); + + EINA_LIST_FOREACH_SAFE(ad->applist[TS_INUSE], l, l_next, info) { + _D("kill applist pid : %d", info->pid); + if (info->it == g_egi) { + if (info->pid > 0) { + kill(info->pid, SIGKILL); + } + + ad->applist[TS_INUSE] = + eina_list_remove_list(ad->applist[TS_INUSE], l); + taskmanager_free_info(info); + break; + } + } + refresh_app_info(ad); + _del_progressbar(ad); + + return 0; +} + +int response_kill_all_inuse(struct appdata *ad) +{ + Eina_List *l; + struct _task_info *info; + + retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n"); + + _show_progressbar(ad); + + EINA_LIST_FOREACH(ad->applist[TS_INUSE], l, info) { + _D("kill all applist pid : %d", info->pid); + if (info != NULL) { + if (info->pid > 0) { + kill(info->pid, SIGKILL); + } + } + } + refresh_app_info(ad); + _del_progressbar(ad); + + return 0; +} + diff --git a/src/_genlist.h b/src/_genlist.h new file mode 100755 index 0000000..876f741 --- /dev/null +++ b/src/_genlist.h @@ -0,0 +1,45 @@ +/* + * org.tizen.taskmgr + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + + +#ifndef __TASKMANAGER_GENLIST_H__ +#define __TASKMANAGER_GENLIST_H__ + +#include <Elementary.h> +#include "taskmanager.h" + +Eina_Bool alert_app_info(void *data); +void clear_task_manager_list(void *data); +void refresh_app_info(struct appdata *ad); +void load_task_manager_list(struct appdata *ad); +void _set_itc(void); +void _set_genlist(struct appdata *ad); +void _del_popup_timer(struct appdata *ad); +int response_end_inuse(struct appdata *ad); +int response_end_all_inuse(struct appdata *ad); +int response_del_history(struct appdata *ad); +int response_del_all_history(struct appdata *ad); +int response_kill_inuse(struct appdata *ad); +int response_kill_all_inuse(struct appdata *ad); +void _fini_pthread(void); +Eina_Bool _update_list(void *data); +void _restart_pthread(struct appdata *ad); + +#endif +/* __TASKMANAGER_GENLIST_H__ */ diff --git a/src/_info.c b/src/_info.c new file mode 100755 index 0000000..bb7419e --- /dev/null +++ b/src/_info.c @@ -0,0 +1,134 @@ +/* + * org.tizen.taskmgr + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + + +#include <stdio.h> + +#include <appcore-common.h> + +#include "taskmanager.h" +#include "_util_log.h" +#include "_util_efl.h" + +static void ctxpopup_clear(void *data) +{ + struct appdata *ad = data; + + retm_if(data == NULL, "Invalid argument: appdata is NULL\n"); + + if (ad->info_timer) { + ecore_timer_del(ad->info_timer); + ad->info_timer = NULL; + } + + if (ad->info_ctxpopup) { + evas_object_del(ad->info_ctxpopup); + ad->info_ctxpopup = NULL; + } + +} + +static void label_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Evas_Object *ly = (Evas_Object *)data; + Evas_Coord w, h; + Evas_Coord pw, ph; + + retm_if(ly == NULL, "Invalid argument: Evas_Object is NULL\n"); + + edje_object_part_geometry_get(_EDJ(ly), + "padding/t", NULL, NULL, &pw, &ph); + evas_object_geometry_get(obj, NULL, NULL, &w, &h); + evas_object_size_hint_min_set(ly, (w + ph * 2), (h + ph * 2)); +} + +static void _ctxpopup_hide_cb(void *data, Evas_Object *obj, void *event_info) +{ + struct appdata *ad = (struct appdata *)data; + ctxpopup_clear(ad); +} + +int _util_move_ctxpopup(Evas_Object *eo, Evas_Object *target) +{ + double scale; + Evas_Coord tx, ty, tw, th; + Evas_Coord cx, cy; + + retvm_if(eo == NULL, -1, "Invalid argument: ctxpopup is NULL\n"); + + scale = elm_config_scale_get(); + + evas_object_geometry_get(target, &tx, &ty, &tw, &th); + + cx = tx + (int)(tw * 0.5); + cy = ty + (int)(10.0 * scale); + + evas_object_move(eo, cx, cy); + + return 0; +} + +static Eina_Bool info_hide_cb(void *data) +{ + struct appdata *ad = data; + + ctxpopup_clear(ad); + + return ECORE_CALLBACK_CANCEL; +} + +void create_info_ctxpopup(void *data, Evas_Object *obj, void *event_info) +{ + struct appdata *ad = (struct appdata *)data; + Evas_Object *lb, *ly; + double scale = 0.0; + char buf[128] = {0, }; + + retm_if(data == NULL, "Invalid argument: appdata is NULL\n"); + + if (ad->info_ctxpopup) { + evas_object_del(ad->info_ctxpopup); + ad->info_ctxpopup = NULL; + } + + scale = elm_config_scale_get(); + + ad->info_ctxpopup = _add_ctxpopup(ad->win); + evas_object_smart_callback_add(ad->info_ctxpopup, "dismissed", + _ctxpopup_hide_cb, ad); + + ly = _add_layout(ad->info_ctxpopup, EDJ_NAME, "info"); + evas_object_resize(ly, (int)(240.0 * scale), (int)(105.0 * scale)); + elm_object_content_set(ad->info_ctxpopup, ly); + + snprintf(buf, sizeof(buf), + "<font_size=22>%s<font_size>", _("IDS_TASKMGR_INFO_MESSAGE")); + lb = _add_label(ly, buf); + evas_object_event_callback_add(lb, EVAS_CALLBACK_RESIZE, + label_resize_cb, ly); + elm_layout_content_set(ly, "swallow", lb); + + _util_move_ctxpopup(ad->info_ctxpopup, ad->info_btn); + + ad->info_timer = ecore_timer_add(3, info_hide_cb, ad); + + evas_object_show(ad->info_ctxpopup); +} + + diff --git a/src/_info.h b/src/_info.h new file mode 100755 index 0000000..46b206f --- /dev/null +++ b/src/_info.h @@ -0,0 +1,28 @@ +/* + * org.tizen.taskmgr + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + + +#ifndef __TASKMANAGER_INFO_H__ +#define __TASKMANAGER_INFO_H__ + +void create_info_ctxpopup(void *data, Evas_Object *obj, void *event_info); + +#endif +/* __TASKMANAGER_INFO_H__ */ + diff --git a/src/_logic.c b/src/_logic.c new file mode 100755 index 0000000..41ec8b8 --- /dev/null +++ b/src/_logic.c @@ -0,0 +1,352 @@ +/* + * org.tizen.taskmgr + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + + +#include <appcore-common.h> +#include <ail.h> +#include <aul.h> +#include <Ecore_X.h> +#include <vconf.h> + +#include "taskmanager.h" +#include "_util_log.h" +#include "_util_efl.h" +#include "_genlist.h" +#include "_eina.h" +#include "_progressbar.h" +#include "_info.h" + +int _dead_cb(int pid, void *data) +{ +_D("func\n"); + /* redraw list */ + struct appdata *ad = (struct appdata *)data; + retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n"); + + int ret = -1; + + if (ad->update_timer) { + ecore_timer_del(ad->update_timer); + ad->update_timer = NULL; + } + + ret = _subt_einalist_item(ad, pid); + _D("mode(%d) count(%d) pid(%d) \n", ad->mode, ad->endcnt, pid); + + if (ret != -1) { + switch (ad->mode) { + default: + case MODE_END_INUSE: + case MODE_DEL_HISTORY: + case MODE_DEL_ALL_HISTORY: + case MODE_KILL_INUSE: + _D("aa\n"); + _del_popup_timer(ad); + _del_progressbar(ad); + refresh_app_info(ad); + //_restart_pthread(ad); + break; + + case MODE_END_ALL_INUSE: + case MODE_KILL_ALL_INUSE: + _D("bb\n"); + if (ad->endcnt <= 1) { + _D("count set 0\n"); + + if(ad->killall_timer) + { + ecore_timer_del(ad->killall_timer); + ad->killall_timer = NULL; + } + + _del_popup_timer(ad); + _del_progressbar(ad); + refresh_app_info(ad); + + } else { + ad->endcnt--; + } + break; + } + } + + return ret; +} + +static void _back_cb(void *data, Evas_Object *obj, void *event_info) +{ + elm_exit(); +} + +int _app_create(struct appdata *ad) +{ + Evas_Object *ly, *bg, *nv, *bt, *gl; + + retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n"); + ad->ending = EINA_FALSE; + + ly = _add_layout_main(ad->win, EINA_TRUE, EINA_FALSE); + retvm_if(ly == NULL, -1, "Failed to add layout main\n"); + + bg = _add_bg(ad->win, "group_list"); + retvm_if(bg == NULL, -1, "Failed to add bg\n"); + elm_object_part_content_set(ly, "elm.swallow.bg", bg); + + nv = _add_naviframe(ly); + retvm_if(nv == NULL, -1, "Failed to add naviframe\n"); + ad->nv = nv; + + ly = _add_layout(ad->nv, EDJ_NAME, GRP_TM); + retvm_if(ly == NULL, -1, "Failed to add layout\n"); + ad->ly = ly; + + /* Load default content (running task) */ + gl = _add_genlist(ly); + retvm_if(gl == NULL, -1, "Failed to add genlist\n"); + elm_genlist_block_count_set(gl, 20); + evas_object_data_set(gl, "appdata", ad); + elm_object_part_content_set(ly, "list", gl); + ad->gl = gl; + + bt = elm_button_add(nv); + retvm_if(bt == NULL, -1, "Failed to add button\n"); + elm_object_style_set(bt, "naviframe/end_btn/default"); + evas_object_smart_callback_add(bt, "clicked", _back_cb, ad); + + elm_naviframe_item_push(nv, + T_("IDS_TASKMGR_HEADER_TASK_SWITCHER"), + bt, NULL, ly, NULL); + + return 0; +} + +static void _get_win_geometry(struct appdata *ad) +{ + Ecore_X_Window focus_win; + Ecore_X_Window root_win; + + focus_win = ecore_x_window_focus_get(); + root_win = ecore_x_window_root_get(focus_win); + ecore_x_window_size_get(root_win, &ad->root_w, &ad->root_h); +} + +/* this func is to exit taskmanager after launching application */ +static Eina_Bool __climsg_cb(void *data, int type, void *event) +{ +_D("%s\n", __func__); + static Atom a_deact; + pid_t pid_a, pid_d; + + struct appdata *ad = (struct appdata *)data; + Ecore_X_Event_Client_Message *ev = event; + + if(ev == NULL) { + _E("Invalid argument: event is NULL\n"); + ad->exit_timer = ecore_timer_add(0.3, _exit_cb, ad); + return ECORE_CALLBACK_CANCEL; + } + + pid_a = ev->data.l[1]; + pid_d = ev->data.l[3]; + a_deact = ecore_x_atom_get("_X_ILLUME_DEACTIVATE_WINDOW"); + + /* when pid_a == pid_d, this is useless data */ + if (pid_a == pid_d) { + return ECORE_CALLBACK_RENEW; + } + + if (ev->message_type == a_deact) { + ad->exit_timer = ecore_timer_add(0.3, _exit_cb, ad); + return ECORE_CALLBACK_CANCEL; + } else { + _D("messagre is act\n"); + + } + + return ECORE_CALLBACK_CANCEL; +} + +static int runapp_count = 0; + +int _runapp_info_get_count(const aul_app_info *ainfo, void *data) +{ + ail_appinfo_h handle; + ail_error_e ret; + bool is_taskmanage; + + retvm_if(ainfo == NULL, -1, "Invalid argument: ainfo is NULL\n"); + + retvm_if(ainfo->pid <= 0, -1, "Invalid pid(%u)\n", ainfo->pid); + + /* filtering */ + if (ainfo->pid == getpid()) + { + return 0; + } + + retvm_if(ainfo->pkg_name == NULL, 0, "Invalid pkg_name(%s)\n", ainfo->pkg_name); + + ret = ail_package_get_appinfo(ainfo->pkg_name, &handle); + retvm_if(ret != AIL_ERROR_OK, -1, + "Failed to get appinfo, pkg_name:%s\n", ainfo->pkg_name); + + ret = ail_appinfo_get_bool(handle, AIL_PROP_X_SLP_TASKMANAGE_BOOL, &is_taskmanage); + if (is_taskmanage == 0) { + ret = ail_package_destroy_appinfo(handle); + retvm_if(ret != AIL_ERROR_OK, -1, "Failed to destroy appinfo\n"); + return 0; + } + + ++runapp_count; + _D("running(%s)\n", ainfo->pkg_name); + _D("runapp count : %d\n", runapp_count); + + ret = ail_package_destroy_appinfo(handle); + retvm_if(ret != AIL_ERROR_OK, -1, "Failed to destroy appinfo\n"); + return 0; +} + +Eina_Bool _kill_all_timer_cb(void *data) +{ + _D("func\n"); + + struct appdata *ad = data; + + int ret = AUL_R_ERROR; + int retry_cnt = 0; + int sleep_value = 500; + + runapp_count = 0; + + while(ret != AUL_R_OK && retry_cnt < 5) + { + usleep(sleep_value); + ret = aul_app_get_running_app_info(_runapp_info_get_count, ad); + + if(ret != AUL_R_OK) + { + _D("Fail to get running app information\n"); + } + + retry_cnt++; + sleep_value *= 2; + } + _D("runapp count : %d\n", runapp_count); + + /* count inuse app number */ + /** if(count == 0) dead_cb */ + if(runapp_count == 0) + { + _D("runapp_count == 0\n"); + _del_popup_timer(ad); + _del_progressbar(ad); + refresh_app_info(ad); + //_restart_pthread(ad); + return ECORE_CALLBACK_CANCEL; + } + + return ECORE_CALLBACK_RENEW; +} + +void _ok_response_cb(void *data, Evas_Object *obj, void *event_info) +{ + struct appdata *ad = (struct appdata *)data; + + retm_if(data == NULL, "Invalid argument: appdata is NULL\n"); + if (ad->popup_ask) { + evas_object_del(ad->popup_ask); + ad->popup_ask = NULL; + } + + switch (ad->mode) { + case MODE_END_INUSE: + _D("end inuse\n"); + _del_popup_timer(ad); + _show_progressbar(ad); + response_end_inuse(ad); + //_restart_pthread(ad); + break; + + case MODE_END_ALL_INUSE: + _D("end all inuse\n"); + _del_popup_timer(ad); + _show_progressbar(ad); + response_end_all_inuse(ad); + ad->killall_timer = ecore_timer_add(2.0, _kill_all_timer_cb, ad); + break; + + case MODE_DEL_HISTORY: + _D("del inuse\n"); + _del_popup_timer(ad); + response_del_history(ad); + break; + + case MODE_DEL_ALL_HISTORY: + _D("del all inuse\n"); + _del_popup_timer(ad); + response_del_all_history(ad); + break; + + case MODE_KILL_INUSE: + _D("kill all inuse\n"); + response_kill_inuse(ad); + break; + + case MODE_KILL_ALL_INUSE: + _D("kill all inuse\n"); + response_kill_all_inuse(ad); + break; + + default: + printf("[Wanning] taskmanager: check mode [%d]\n", + ad->mode); + break; + } +} + +void _cancel_response_cb(void *data, Evas_Object *obj, void *event_info) +{ + struct appdata *ad = (struct appdata *)data; + + retm_if(data == NULL, "Invalid argument: appdata is NULL\n"); + if (ad->popup_ask) { + evas_object_del(ad->popup_ask); + ad->popup_ask = NULL; + } +} + +Eina_Bool _create_idler_cb(void *data) +{ + struct appdata *ad = (struct appdata *)data; + retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "Invalid argument\n"); + + _check_show_state(); + + evas_object_show(ad->win); + + _key_grab(ad); + + _get_win_geometry(ad); + ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE, __climsg_cb, ad); + + return ECORE_CALLBACK_CANCEL; +} + + + diff --git a/src/_logic.h b/src/_logic.h new file mode 100755 index 0000000..c37c075 --- /dev/null +++ b/src/_logic.h @@ -0,0 +1,33 @@ +/* + * org.tizen.taskmgr + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + + +#ifndef __TASKMANAGER_LOGIC_H__ +#define __TASKMANAGER_LOGIC_H__ + +#include "taskmanager.h" + +int _dead_cb(int pid, void *data); +Eina_Bool _create_idler_cb(void *data); +int _app_create(struct appdata *ad); +void _ok_response_cb(void *data, Evas_Object *obj, void *event_info); +void _cancel_response_cb(void *data, Evas_Object *obj, void *event_info); + +#endif +/* __TASKMANAGER_LOGIC_H__ */ diff --git a/src/_progressbar.c b/src/_progressbar.c new file mode 100755 index 0000000..abc615d --- /dev/null +++ b/src/_progressbar.c @@ -0,0 +1,51 @@ +/* + * org.tizen.taskmgr + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + + +#include "taskmanager.h" +#include "_util_log.h" +#include "_util_efl.h" + +void _del_progressbar(void *data) +{ + _D("%s\n", __func__); + struct appdata *ad = (struct appdata *)data; + retm_if(ad == NULL, "Invalid argument: appdata is NULL\n"); + + if (ad->popup_progressbar) { + evas_object_hide(ad->popup_progressbar); + evas_object_del(ad->popup_progressbar); + ad->popup_progressbar = NULL; + } +} + +void _show_progressbar(void *data) +{ + _D("%s\n", __func__); + struct appdata *ad = (struct appdata *)data; + retm_if(ad == NULL, "Invalid argument: appdata is NULL\n"); + + if (ad->popup_progressbar) + _del_progressbar(ad); + + ad->popup_progressbar = _add_progressbar(ad->win, "list_process", + ad->root_w, ad->root_h); + + evas_object_show(ad->popup_progressbar); +} diff --git a/src/_progressbar.h b/src/_progressbar.h new file mode 100755 index 0000000..bdb2885 --- /dev/null +++ b/src/_progressbar.h @@ -0,0 +1,28 @@ +/* + * org.tizen.taskmgr + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + + +#ifndef __TASKMANAGER_PROGRESSBAR_H__ +#define __TASKMANAGER_PROGRESSBAR_H__ + +void _show_progressbar(void *data); +void _del_progressbar(void *data); + +#endif +/* __TASKMANAGER_PROGRESSBAR_H__ */ diff --git a/src/_util_efl.c b/src/_util_efl.c new file mode 100755 index 0000000..5a43787 --- /dev/null +++ b/src/_util_efl.c @@ -0,0 +1,270 @@ +/* + * org.tizen.taskmgr + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + + +#include <appcore-efl.h> + +#include "taskmanager.h" +#include "_util_log.h" +#include "_util_efl.h" +#include "_logic.h" + +Evas_Object *_add_window(const char *name) +{ + Evas_Object *eo; + int w, h; + + eo = elm_win_add(NULL, name, ELM_WIN_BASIC); + if (eo) { + elm_win_title_set(eo, name); + elm_win_borderless_set(eo, EINA_TRUE); + ecore_x_window_size_get(ecore_x_window_root_first_get(), + &w, &h); + evas_object_resize(eo, w, h); + } + + return eo; +} + +Evas_Object *_add_bg(Evas_Object *parent, char *style) +{ + Evas_Object *bg; + + bg = elm_bg_add(parent); + retvm_if(bg == NULL, NULL, "Failed to add bg\n"); + if (style) elm_object_style_set(bg, style); + evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + evas_object_show(bg); + return bg; +} + +Evas_Object *_add_genlist(Evas_Object *parent) +{ + Evas_Object *eo; + + eo = elm_genlist_add(parent); + if (eo == NULL) { + printf("[Error] Cannot add genlist\n"); + return NULL; + } + + evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(eo, EVAS_HINT_FILL, EVAS_HINT_FILL); + + return eo; +} + +Evas_Object *_add_icon(Evas_Object *parent, const char *png) +{ + Evas_Object *eo; + char buf[128] = { 0, }; + + eo = elm_icon_add(parent); + if (eo == NULL) { + printf("[Error] Cannot add button\n"); + return NULL; + } + + snprintf(buf, sizeof(buf), "%s/%s", IMAGEDIR, png); + elm_image_file_set(eo, buf, NULL); + elm_image_resizable_set(eo, 1, 1); + evas_object_size_hint_aspect_set(eo, EVAS_ASPECT_CONTROL_VERTICAL, 1, + 1); + + return eo; +} + +Evas_Object *_add_layout(Evas_Object *parent, const char *file, + const char *group) +{ + Evas_Object *eo = NULL; + int r; + + eo = elm_layout_add(parent); + if (eo == NULL) { + printf("[Error] Cannot add layout\n"); + return NULL; + } + + r = elm_layout_file_set(eo, file, group); + if (!r) { + printf("[Error] Cannot set file layout\n"); + evas_object_del(eo); + return NULL; + } + + evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + + return eo; +} + +Evas_Object *_add_ctxpopup(Evas_Object *parent) +{ + Evas_Object *eo = NULL; + + eo = elm_ctxpopup_add(parent); + if (eo == NULL) { + printf("[Error] Cannot add ctxpopup\n"); + return NULL; + } + + elm_ctxpopup_horizontal_set(eo, EINA_TRUE); + elm_ctxpopup_direction_priority_set(eo, + ELM_CTXPOPUP_DIRECTION_DOWN, + ELM_CTXPOPUP_DIRECTION_UP, + ELM_CTXPOPUP_DIRECTION_LEFT, + ELM_CTXPOPUP_DIRECTION_RIGHT); + + return eo; +} + +Evas_Object *_add_label(Evas_Object *parent, const char *msg) +{ + Evas_Object *eo = NULL; + + eo = elm_label_add(parent); + if (eo == NULL) { + printf("[Error] Cannot add label\n"); + return NULL; + } + + elm_label_line_wrap_set(eo, ELM_WRAP_WORD); + elm_object_text_set(eo, msg); + + return eo; +} + +static Eina_Bool _disappear_popup(void *data) +{ + Evas_Object *eo = (Evas_Object *)data; + if (eo == NULL) { + printf("[Error] Invalid argument: popup is NULL\n"); + return ECORE_CALLBACK_CANCEL; + } + evas_object_del(eo); + return ECORE_CALLBACK_CANCEL; +} + +Evas_Object *_add_popup_ask(Evas_Object *parent, char *text, void *data) +{ + Evas_Object *pu, *bt1, *bt2; + retvm_if(parent == NULL, NULL, "Invalid argument: parent is NULL\n"); + + pu = elm_popup_add(parent); + retvm_if(pu == NULL, NULL, "Falied to add popup\n"); + evas_object_size_hint_weight_set(pu, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_part_text_set(pu, "title,text", S_("IDS_COM_POP_WARNING")); + elm_object_text_set(pu, text); + evas_object_show(pu); + + bt1 = elm_button_add(pu); + elm_object_text_set(bt1, S_("IDS_COM_SK_OK")); + elm_object_part_content_set(pu, "button1", bt1); + evas_object_smart_callback_add(bt1, "clicked", _ok_response_cb, data); + + bt2 = elm_button_add(pu); + elm_object_text_set(bt2, S_("IDS_COM_POP_CANCEL")); + elm_object_part_content_set(pu, "button2", bt2); + evas_object_smart_callback_add(bt2, "clicked", _cancel_response_cb, data); + + + return pu; +} + +void util_show_popup_with_message(Evas_Object *parent, double in, + const char *msg) +{ + Evas_Object *eo = NULL; + + eo = elm_popup_add(parent); + if (eo == NULL) { + printf("[Error] Cannot add popup\n"); + return; + } + + evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + elm_object_text_set(eo, msg); + + ecore_timer_add(in, _disappear_popup, eo); +} + +Evas_Object *_add_naviframe(Evas_Object *parent) +{ + Evas_Object *nv; + + retv_if(parent == NULL, NULL); + + nv = elm_naviframe_add(parent); + retvm_if(nv == NULL, NULL, "Failed to add naviframe\n"); + elm_object_part_content_set(parent, "elm.swallow.content", nv); + + evas_object_show(nv); + + return nv; +} + +Evas_Object *_add_layout_main(Evas_Object *parent, + Eina_Bool content, Eina_Bool transparent) +{ + Evas_Object *ly; + + retv_if(parent == NULL, NULL); + + ly = elm_layout_add(parent); + retvm_if(ly == NULL, NULL, "Failed elm_layout_add.\n"); + + elm_layout_theme_set(ly, "layout", "application", "default"); + evas_object_size_hint_weight_set(ly, + EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(parent, ly); + if (content) + elm_object_signal_emit(ly, "elm,state,show,content", "elm"); + if (transparent) + elm_object_signal_emit(ly, "elm,bg,show,transparent", "elm"); + evas_object_show(ly); + return ly; +} + +Evas_Object *_add_progressbar(Evas_Object *parent, const char *style, + Evas_Coord w, Evas_Coord h) +{ + Evas_Object *pb; + double scale; + + retvm_if(parent == NULL, NULL, "Invalid argument: parent is NULL\n"); + + scale = elm_config_scale_get(); + + pb = elm_progressbar_add(parent); + retvm_if(pb == NULL, NULL, "Failed to add progressbar\n"); + + elm_object_style_set(pb, style); + evas_object_resize(pb, w, (int)(60 * scale)); + evas_object_move(pb, 0, h / 2); + elm_progressbar_pulse(pb, EINA_TRUE); + evas_object_show(pb); + + return pb; +} + + diff --git a/src/_util_efl.h b/src/_util_efl.h new file mode 100755 index 0000000..ac9cafe --- /dev/null +++ b/src/_util_efl.h @@ -0,0 +1,42 @@ +/* + * org.tizen.taskmgr + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + + +#ifndef __TASKMANAGER_UTIL_EFL_H__ +#define __TASKMANAGER_UTIL_EFL_H__ + +#include <Elementary.h> + +Evas_Object *_add_window(const char *name); +Evas_Object *_add_bg(Evas_Object *parent, char *style); +Evas_Object *_add_genlist(Evas_Object *parent); +Evas_Object *_add_icon(Evas_Object *parent, const char *png); +Evas_Object *_add_layout(Evas_Object *parent, const char *file, const char *group); +Evas_Object *_add_ctxpopup(Evas_Object *parent); +Evas_Object *_add_label(Evas_Object *parent, const char *msg); +Evas_Object *_add_naviframe(Evas_Object *parent); +Evas_Object *_add_layout_main(Evas_Object *parent, + Eina_Bool content, Eina_Bool transparent); +Evas_Object *_add_progressbar(Evas_Object *parent, const char *style, + Evas_Coord w, Evas_Coord h); +Evas_Object *_add_popup_ask(Evas_Object *parent, char *text, void *data); +void util_show_popup_with_message(Evas_Object *parent, double in, const char *msg); + +#endif +/* __TASKMANAGER_UTIL_EFL_H__ */ diff --git a/src/_util_log.h b/src/_util_log.h new file mode 100755 index 0000000..a5aca2f --- /dev/null +++ b/src/_util_log.h @@ -0,0 +1,63 @@ +/* + * org.tizen.taskmgr + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + + +#ifndef __TASKMANAGER_UTIL_LOG_H__ +#define __TASKMANAGER_UTIL_LOG_H__ + +#include <unistd.h> +#include <dlog.h> + +#undef LOG_TAG +#define LOG_TAG "TASKMANAGER" +#define _E(fmt, arg...) LOGE("[%s,%d] "fmt,__FUNCTION__,__LINE__,##arg) +#define _D(fmt, arg...) LOGD("[%s,%d] "fmt,__FUNCTION__,__LINE__,##arg) + +#define retvm_if(expr, val, fmt, arg...) do { \ + if(expr) { \ + _E(fmt, ##arg); \ + _E("(%s) -> %s() return", #expr, __FUNCTION__); \ + return (val); \ + } \ +} while (0) + +#define retv_if(expr, val) do { \ + if(expr) { \ + _E("(%s) -> %s() return", #expr, __FUNCTION__); \ + return (val); \ + } \ +} while (0) + +#define retm_if(expr, fmt, arg...) do { \ + if(expr) { \ + _E(fmt, ##arg); \ + _E("(%s) -> %s() return", #expr, __FUNCTION__); \ + return; \ + } \ +} while (0) + +#define ret_if(expr) do { \ + if(expr) { \ + _E("(%s) -> %s() return", #expr, __FUNCTION__); \ + return; \ + } \ +} while (0) + +#endif +/* __TASKMANAGER_UTIL_LOG_H__ */ diff --git a/src/taskmanager.c b/src/taskmanager.c new file mode 100755 index 0000000..cc32e30 --- /dev/null +++ b/src/taskmanager.c @@ -0,0 +1,301 @@ +/* + * org.tizen.taskmgr + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + + +#include <stdio.h> +#include <unistd.h> +#include <appcore-efl.h> +#include <Elementary.h> +#include <Ecore_X.h> +#include <utilX.h> +#include <vconf.h> +#include <aul.h> +#include <sysman.h> + +#include "taskmanager.h" +#include "_util_log.h" +#include "_util_efl.h" +#include "_logic.h" +#include "_genlist.h" + +struct text_part { + char *part; + char *msgid; +}; + +enum { + IDLELOCK_OFF = 0x0, + IDLELOCK_ON, + IDLELOCK_MAX, +}; + +enum { + LCD_OFF = 0x0, + LCD_ON, + LCD_MAX, +}; + +static struct text_part main_txt[] = { +}; + +static void update_ts(Evas_Object *eo, struct text_part *tp, int size) +{ + int i; + + if (eo == NULL || tp == NULL || size < 0) + return; + + for (i = 0; i < size; i++) { + if (tp[i].part && tp[i].msgid) + edje_object_part_text_set(eo, + tp[i].part, _(tp[i].msgid)); + } +} + +static int _lang_changed(void *data) +{ + struct appdata *ad = data; + + if (ad->ly == NULL) + return 0; + + update_ts(elm_layout_edje_get(ad->ly), + main_txt, sizeof(main_txt) / sizeof(main_txt[0])); + + 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\n"); + _D("idlelock vconf:%d\n", lock); + + return lock == VCONFKEY_IDLE_LOCK ? IDLELOCK_ON : IDLELOCK_OFF; +} + +int _get_vconf_lcdstate(void) +{ + int ret = -1; + int lcd = 0; + + ret = vconf_get_int(VCONFKEY_PM_STATE, &lcd); + retvm_if(ret < 0, -1, "Failed to get vconf\n"); + _D("lcd vconf:%d\n", lcd); + + return lcd == VCONFKEY_PM_STATE_LCDOFF ? LCD_OFF : LCD_ON; +} + +Eina_Bool _exit_cb(void *data) +{ + int lock = IDLELOCK_ON; + lock = _get_vconf_idlelock(); + + _D("lock(%d)\n", lock); + if(lock == IDLELOCK_OFF){ + _D("normal case\n"); + elm_exit(); + } + else{ + _D("IDLELOCK is set, taskmnager doesn't exit\n"); + return ECORE_CALLBACK_CANCEL; + } + return ECORE_CALLBACK_CANCEL; +} + +void _key_grab(struct appdata *ad) +{ + int ret = 0; + Ecore_X_Window xwin; /* key grab */ + Ecore_X_Display *disp; /* key grab */ + + /* Key Grab */ + disp = ecore_x_display_get(); + xwin = elm_win_xwindow_get(ad->win); + + ret = utilx_grab_key(disp, xwin, KEY_SELECT, SHARED_GRAB); + retm_if(ret < 0, "Failed to grab home key\n"); +} + +int _set_launch_effect(Evas_Object *win) +{ + Ecore_X_Window xwin = 0; + static Ecore_X_Atom ATOM_WM_WINDOW_ROLE = 0; + static Ecore_X_Atom ATOM_NET_WM_NAME = 0; + retvm_if(win == NULL, -1, "[Error] Invalid argument: win is NULL\n"); + + ATOM_WM_WINDOW_ROLE = ecore_x_atom_get("WM_WINDOW_ROLE"); + if (!ATOM_WM_WINDOW_ROLE) { + fprintf(stderr, + "[App] %s(%d) XInternAtom(WM_WINDOW_ROLE) failed.\n", + __func__, __LINE__); + } + + ATOM_NET_WM_NAME = ecore_x_atom_get("_NET_WM_NAME"); + if (!ATOM_NET_WM_NAME) { + fprintf(stderr, + "[App] %s(%d) XInternAtom(ATOM_NET_WM_NAME) failed.\n", + __func__, __LINE__); + } + + xwin = elm_win_xwindow_get(win); + ecore_x_window_prop_string_set(xwin, ATOM_WM_WINDOW_ROLE, + "TASK_MANAGER"); + ecore_x_window_prop_string_set(xwin, ATOM_NET_WM_NAME, "TASK_MANAGER"); + + ecore_x_icccm_name_class_set(xwin, "TASK_MANAGER", "TASK_MANAGER"); + return 0; +} + +int _unset_notification_level(Evas_Object *win) +{ + Ecore_X_Window xwin; + + xwin = elm_win_xwindow_get(win); + ecore_x_netwm_window_type_set(xwin, ECORE_X_WINDOW_TYPE_NORMAL); + return 0; +} + + +int _set_notification_level(Evas_Object *win, Utilx_Notification_Level level) +{ + Ecore_X_Window xwin = 0; + + xwin = elm_win_xwindow_get(win); + ecore_x_netwm_window_type_set(xwin, ECORE_X_WINDOW_TYPE_NOTIFICATION); + utilx_set_system_notification_level(ecore_x_display_get(), xwin, level); + return 0; +} + +void _check_show_state(void) +{ + int lcd = LCD_OFF, idlelock = IDLELOCK_OFF; + lcd = _get_vconf_lcdstate(); + idlelock = _get_vconf_idlelock(); + if(lcd == LCD_OFF || idlelock == IDLELOCK_ON) + { + elm_exit(); + } +} + +int app_create(void *data) +{ + Evas_Object *win; + struct appdata *ad = data; + int r; + + win = _add_window(PACKAGE); + retv_if(win == NULL, -1); + elm_win_indicator_mode_set(win, ELM_WIN_INDICATOR_SHOW); + ad->win = win; + + _set_launch_effect(win); +// _set_notification_level(win, UTILX_NOTIFICATION_LEVEL_NORMAL); + + /* init internationalization */ + r = appcore_set_i18n(PACKAGE, LOCALEDIR); + retvm_if(r < 0, -1, "Failed to set i18n\n"); + _lang_changed(ad); + + + elm_theme_extension_add(NULL, EDJ_THEME); + + _app_create(ad); + _set_itc(); + _set_genlist(ad); + + /* set dead signal listener */ + aul_listen_app_dead_signal(_dead_cb, ad); + + appcore_set_event_callback(APPCORE_EVENT_LANG_CHANGE, + _lang_changed, ad); + + ecore_idler_add(_create_idler_cb, ad); + + return 0; +} + +static int app_terminate(void *data) +{ + return 0; +} + +static int app_pause(void *data) +{ + return 0; +} + +static int app_resume(void *data) +{ +_D("func\n"); + struct appdata *ad = data; + + refresh_app_info(ad); + if (ad->killall_timer) { + ecore_timer_del(ad->killall_timer); + ad->killall_timer = NULL; + } + if (ad->exit_timer) { + ecore_timer_del(ad->exit_timer); + ad->exit_timer = NULL; + } + + return 0; +} + +static int app_reset(bundle *b, void *data) +{ + struct appdata *ad = data; + + /* appcore measure time example */ + printf("from AUL to %s(): %d msec\n", __func__, + appcore_measure_time_from("APP_START_TIME")); + printf("from create to %s(): %d msec\n", __func__, + appcore_measure_time()); + + if (ad->win) + elm_win_activate(ad->win); + return 0; +} + +int main(int argc, char *argv[]) +{ + sysconf_set_mempolicy(OOM_IGNORE); + + 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 */ + _D("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); +} diff --git a/src/taskmanager.h b/src/taskmanager.h new file mode 100755 index 0000000..d85a2ad --- /dev/null +++ b/src/taskmanager.h @@ -0,0 +1,133 @@ +/* + * org.tizen.taskmgr + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + + +#ifndef __TASKMANAGER_H__ +#define __TASKMANAGER_H__ + +#include <Elementary.h> +#include <Ecore_X.h> +#include <utilX.h> +#include <bundle.h> + +#if !defined(PACKAGE) +#define PACKAGE "taskmanager" +#endif + +#ifndef PREFIX +#define PREFIX "/usr/apps/org.tizen."PACKAGE +#endif + +#if !defined(RESDIR) +# define RESDIR PREFIX"/res" +#endif + +#if !defined(LOCALEDIR) +#define LOCALEDIR RESDIR"/locale" +#endif + +#if !defined(EDJDIR) +#define EDJDIR RESDIR"/edje"PACKAGE +#endif + +#if !defined(IMAGEDIR) +# define IMAGEDIR RESDIR"/images/"PACKAGE +#endif + +#define EDJ_NAME EDJDIR"/taskmgr.edj" +#define EDJ_THEME EDJDIR"/theme_taskmanager.edj" +#define GRP_TM "task_manager" + +#define S_(str) dgettext("sys_string", str) +#define T_(str) gettext(str) + +#define _BUF_MAX 256 +#define _EDJ(x) elm_layout_edje_get(x) + +#define POPUP_TIMER 1.0 +#define POPUP_TERMINATE_TIMER 1.5 + +struct appdata { + Evas *evas; + Evas_Object *win, *ly, *nv, *gl; + + Evas_Coord root_w, root_h; + + Eina_List *applist[2]; + /* runapp : 0, history: 1 */ + + Ecore_Timer *popup_timer; + Evas_Object *popup_ask; + Evas_Object *popup_progressbar; + + Ecore_Timer *update_timer; + Ecore_Timer *exit_timer; + + Ecore_Timer *killall_timer; + + double mem_total; + + int mode; + int ending; + int endcnt; +}; + +struct _task_info { + char *app_name; + char *pkg_name; + char *icn_path; + pid_t pid; + struct appdata *ad; + double mem, mem_total; + double cpu; + Elm_Object_Item *it; + int category; + bundle *b; + unsigned int oldutime, oldstime; + struct timeval oldtimev; +}; + + /* MODE_KILL_INUSE = MODE_END_INUSE * 2 + * MODE_KILL_ALL_INUSE = MODE_END_ALL_INUSE * 2 + */ +enum task_mode { + MODE_NONE = 0, + MODE_END_INUSE, + MODE_KILL_INUSE, + MODE_END_ALL_INUSE, + MODE_DEL_HISTORY, + MODE_DEL_ALL_HISTORY, + MODE_KILL_ALL_INUSE, +}; + +enum task_status { + TS_INUSE = 0, + TS_HISTORY, + TS_MAX, +}; + +Evas_Object *load_edj(Evas_Object *parent, const char *file, const char *group); +int _unset_notification_level(Evas_Object *win); +int _set_notification_level(Evas_Object *win, Utilx_Notification_Level level); +void _key_grab(struct appdata *ad); +Eina_Bool _exit_cb(void *data); +void _check_show_state(void); + +#endif +/* __TASKMANAGER_H___ */ |