summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHyungKyu Song <hk76.song@samsung.com>2013-02-16 00:01:02 +0900
committerHyungKyu Song <hk76.song@samsung.com>2013-02-16 00:01:02 +0900
commit3163ca42d02787c46aa2f63945fa0565b34ecaa1 (patch)
tree1635b28637573607a66009a127083a11cd1e383c
parent4113731f43c52c82e17b0376a45c0f9a361bc21b (diff)
downloadtaskmanager-3163ca42d02787c46aa2f63945fa0565b34ecaa1.tar.gz
taskmanager-3163ca42d02787c46aa2f63945fa0565b34ecaa1.tar.bz2
taskmanager-3163ca42d02787c46aa2f63945fa0565b34ecaa1.zip
-rw-r--r--AUTHORS2
-rwxr-xr-xCMakeLists.txt104
-rwxr-xr-xLICENSE.Flora206
-rwxr-xr-xNOTICE4
-rwxr-xr-xdata/CMakeLists.txt20
-rw-r--r--data/icons/00_button_01_normal.pngbin0 -> 3264 bytes
-rw-r--r--data/icons/00_button_01_press.pngbin0 -> 3318 bytes
-rwxr-xr-xdata/icons/taskman_def_content.pngbin0 -> 2856 bytes
-rw-r--r--data/icons/taskmgr_title_icon_info.pngbin0 -> 3142 bytes
-rwxr-xr-xdata/images/39_multitasking_btn_bg.pngbin0 -> 2852 bytes
-rwxr-xr-xdata/images/PUT_IMAGES_HERE0
-rwxr-xr-xdata/taskmgr.edc188
-rwxr-xr-xdata/themes/00_button_02_focus.pngbin0 -> 3382 bytes
-rwxr-xr-xdata/themes/00_button_02_press.pngbin0 -> 3407 bytes
-rw-r--r--data/themes/00_button_03_focus.pngbin0 -> 3288 bytes
-rw-r--r--data/themes/00_button_03_normal.pngbin0 -> 3227 bytes
-rw-r--r--data/themes/00_button_03_press.pngbin0 -> 3268 bytes
-rw-r--r--data/themes/00_button_delete.pngbin0 -> 4128 bytes
-rw-r--r--data/themes/00_button_delete_text.pngbin0 -> 4023 bytes
-rwxr-xr-xdata/themes/00_list_bar_press_1x80.pngbin0 -> 2872 bytes
-rwxr-xr-xdata/themes/39_mini_controller_bg.pngbin0 -> 3138 bytes
-rwxr-xr-xdata/themes/39_mini_controller_button_nor.pngbin0 -> 3112 bytes
-rwxr-xr-xdata/themes/39_mini_controller_button_press.pngbin0 -> 3158 bytes
-rwxr-xr-xdata/themes/39_multitasking_btn_01.pngbin0 -> 3362 bytes
-rwxr-xr-xdata/themes/theme_taskmanager.edc1446
-rw-r--r--debian/changelog20
-rwxr-xr-xdebian/compat1
-rw-r--r--debian/control18
-rw-r--r--debian/org.tizen.taskmgr.install.in3
-rwxr-xr-xdebian/org.tizen.taskmgr.postinst8
-rwxr-xr-xdebian/rules119
-rwxr-xr-xorg.tizen.taskmgr.manifest17
-rwxr-xr-xorg.tizen.taskmgr.pngbin0 -> 5759 bytes
-rwxr-xr-xorg.tizen.taskmgr.xml9
-rwxr-xr-xpackaging/org.tizen.taskmgr.spec48
-rw-r--r--po/CMakeLists.txt24
-rw-r--r--po/POTFILES.in10
-rw-r--r--po/ar.po36
-rw-r--r--po/az.po36
-rw-r--r--po/bg.po36
-rw-r--r--po/ca.po36
-rw-r--r--po/cs.po36
-rw-r--r--po/da.po36
-rw-r--r--po/de_DE.po36
-rw-r--r--po/el_GR.po36
-rw-r--r--po/en.po36
-rw-r--r--po/en_GB.po18
-rw-r--r--po/en_PH.po36
-rw-r--r--po/en_US.po36
-rw-r--r--po/es_ES.po36
-rw-r--r--po/es_MX.po36
-rw-r--r--po/es_US.po36
-rw-r--r--po/et.po36
-rw-r--r--po/eu.po36
-rw-r--r--po/fi.po36
-rw-r--r--po/fr_CA.po36
-rw-r--r--po/fr_FR.po36
-rw-r--r--po/ga.po36
-rw-r--r--po/gl.po36
-rw-r--r--po/he.po18
-rw-r--r--po/hi.po36
-rw-r--r--po/hr.po36
-rw-r--r--po/hu.po36
-rw-r--r--po/hy.po36
-rw-r--r--po/id.po18
-rw-r--r--po/is.po36
-rw-r--r--po/it_IT.po36
-rw-r--r--po/ja_JP.po36
-rw-r--r--po/ka.po36
-rw-r--r--po/kk.po36
-rw-r--r--po/ko_KR.po36
-rw-r--r--po/lt.po36
-rw-r--r--po/lv.po36
-rw-r--r--po/mk.po36
-rw-r--r--po/ms.po18
-rw-r--r--po/nb.po36
-rw-r--r--po/nl_NL.po36
-rw-r--r--po/no.po18
-rw-r--r--po/pl.po36
-rw-r--r--po/pt_BR.po36
-rw-r--r--po/pt_PT.po36
-rw-r--r--po/ro.po36
-rw-r--r--po/ru_RU.po36
-rw-r--r--po/sk.po36
-rw-r--r--po/sl.po36
-rw-r--r--po/sr.po36
-rw-r--r--po/sv.po36
-rw-r--r--po/taskmgr.pot58
-rw-r--r--po/th.po18
-rw-r--r--po/tr_TR.po36
-rw-r--r--po/uk.po36
-rwxr-xr-xpo/update-po.sh57
-rw-r--r--po/uz.po36
-rw-r--r--po/vi.po18
-rw-r--r--po/zh_CN.po36
-rw-r--r--po/zh_HK.po36
-rw-r--r--po/zh_SG.po36
-rw-r--r--po/zh_TW.po36
-rwxr-xr-xsrc/_cpu.c111
-rwxr-xr-xsrc/_cpu.h28
-rwxr-xr-xsrc/_eina.c303
-rwxr-xr-xsrc/_eina.h36
-rwxr-xr-xsrc/_genlist.c854
-rwxr-xr-xsrc/_genlist.h45
-rwxr-xr-xsrc/_info.c134
-rwxr-xr-xsrc/_info.h28
-rwxr-xr-xsrc/_logic.c352
-rwxr-xr-xsrc/_logic.h33
-rwxr-xr-xsrc/_progressbar.c51
-rwxr-xr-xsrc/_progressbar.h28
-rwxr-xr-xsrc/_util_efl.c270
-rwxr-xr-xsrc/_util_efl.h42
-rwxr-xr-xsrc/_util_log.h63
-rwxr-xr-xsrc/taskmanager.c301
-rwxr-xr-xsrc/taskmanager.h133
115 files changed, 7172 insertions, 0 deletions
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..566bee7
--- /dev/null
+++ b/AUTHORS
@@ -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.
+
diff --git a/NOTICE b/NOTICE
new file mode 100755
index 0000000..3997999
--- /dev/null
+++ b/NOTICE
@@ -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
new file mode 100644
index 0000000..cf6db15
--- /dev/null
+++ b/data/icons/00_button_01_normal.png
Binary files differ
diff --git a/data/icons/00_button_01_press.png b/data/icons/00_button_01_press.png
new file mode 100644
index 0000000..7179246
--- /dev/null
+++ b/data/icons/00_button_01_press.png
Binary files differ
diff --git a/data/icons/taskman_def_content.png b/data/icons/taskman_def_content.png
new file mode 100755
index 0000000..22e995a
--- /dev/null
+++ b/data/icons/taskman_def_content.png
Binary files differ
diff --git a/data/icons/taskmgr_title_icon_info.png b/data/icons/taskmgr_title_icon_info.png
new file mode 100644
index 0000000..9f4350b
--- /dev/null
+++ b/data/icons/taskmgr_title_icon_info.png
Binary files differ
diff --git a/data/images/39_multitasking_btn_bg.png b/data/images/39_multitasking_btn_bg.png
new file mode 100755
index 0000000..2e16deb
--- /dev/null
+++ b/data/images/39_multitasking_btn_bg.png
Binary files differ
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
new file mode 100755
index 0000000..933a96a
--- /dev/null
+++ b/data/themes/00_button_02_focus.png
Binary files differ
diff --git a/data/themes/00_button_02_press.png b/data/themes/00_button_02_press.png
new file mode 100755
index 0000000..df6c4d0
--- /dev/null
+++ b/data/themes/00_button_02_press.png
Binary files differ
diff --git a/data/themes/00_button_03_focus.png b/data/themes/00_button_03_focus.png
new file mode 100644
index 0000000..72d99ec
--- /dev/null
+++ b/data/themes/00_button_03_focus.png
Binary files differ
diff --git a/data/themes/00_button_03_normal.png b/data/themes/00_button_03_normal.png
new file mode 100644
index 0000000..df4433e
--- /dev/null
+++ b/data/themes/00_button_03_normal.png
Binary files differ
diff --git a/data/themes/00_button_03_press.png b/data/themes/00_button_03_press.png
new file mode 100644
index 0000000..b973210
--- /dev/null
+++ b/data/themes/00_button_03_press.png
Binary files differ
diff --git a/data/themes/00_button_delete.png b/data/themes/00_button_delete.png
new file mode 100644
index 0000000..96f514b
--- /dev/null
+++ b/data/themes/00_button_delete.png
Binary files differ
diff --git a/data/themes/00_button_delete_text.png b/data/themes/00_button_delete_text.png
new file mode 100644
index 0000000..d8df523
--- /dev/null
+++ b/data/themes/00_button_delete_text.png
Binary files differ
diff --git a/data/themes/00_list_bar_press_1x80.png b/data/themes/00_list_bar_press_1x80.png
new file mode 100755
index 0000000..1dc6e15
--- /dev/null
+++ b/data/themes/00_list_bar_press_1x80.png
Binary files differ
diff --git a/data/themes/39_mini_controller_bg.png b/data/themes/39_mini_controller_bg.png
new file mode 100755
index 0000000..2428ca6
--- /dev/null
+++ b/data/themes/39_mini_controller_bg.png
Binary files differ
diff --git a/data/themes/39_mini_controller_button_nor.png b/data/themes/39_mini_controller_button_nor.png
new file mode 100755
index 0000000..4d7404e
--- /dev/null
+++ b/data/themes/39_mini_controller_button_nor.png
Binary files differ
diff --git a/data/themes/39_mini_controller_button_press.png b/data/themes/39_mini_controller_button_press.png
new file mode 100755
index 0000000..1df33fd
--- /dev/null
+++ b/data/themes/39_mini_controller_button_press.png
Binary files differ
diff --git a/data/themes/39_multitasking_btn_01.png b/data/themes/39_multitasking_btn_01.png
new file mode 100755
index 0000000..13a3f74
--- /dev/null
+++ b/data/themes/39_multitasking_btn_01.png
Binary files differ
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
new file mode 100755
index 0000000..ef74fd1
--- /dev/null
+++ b/org.tizen.taskmgr.png
Binary files differ
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___ */