From 3d38b5220ac9da56944459c95fdc2d2c6928c853 Mon Sep 17 00:00:00 2001 From: "moon87.park" Date: Thu, 11 Jun 2015 14:25:11 +0900 Subject: [PATCH] [Task-mgr] Merge 3.0 into 2.4 Change-Id: Ic6f9b6935e1d6ff80e2e713a916fa633f2a6be0d --- CMakeLists.txt | 128 +- LICENSE | 204 +++ LICENSE.Flora | 206 --- NOTICE | 4 +- data/CMakeLists.txt | 20 - data/icons/00_button_01_normal.png | Bin 3264 -> 0 bytes data/icons/00_button_01_press.png | Bin 3318 -> 0 bytes data/icons/taskman_def_content.png | Bin 2856 -> 0 bytes data/icons/taskmgr_title_icon_info.png | Bin 3142 -> 0 bytes data/images/39_multitasking_btn_bg.png | Bin 2852 -> 0 bytes data/images/PUT_IMAGES_HERE | 0 data/org.tizen.task-mgr.efl | 55 + data/org.tizen.task-mgr.xml | 11 + data/taskmgr.edc | 188 --- data/themes/00_button_02_focus.png | Bin 3382 -> 0 bytes data/themes/00_button_02_press.png | Bin 3407 -> 0 bytes data/themes/00_button_03_focus.png | Bin 3288 -> 0 bytes data/themes/00_button_03_normal.png | Bin 3227 -> 0 bytes data/themes/00_button_03_press.png | Bin 3268 -> 0 bytes data/themes/00_button_delete.png | Bin 4128 -> 0 bytes data/themes/00_button_delete_text.png | Bin 4023 -> 0 bytes data/themes/00_list_bar_press_1x80.png | Bin 2872 -> 0 bytes data/themes/39_mini_controller_bg.png | Bin 3138 -> 0 bytes data/themes/39_mini_controller_button_nor.png | Bin 3112 -> 0 bytes data/themes/39_mini_controller_button_press.png | Bin 3158 -> 0 bytes data/themes/39_multitasking_btn_01.png | Bin 3362 -> 0 bytes data/themes/theme_taskmanager.edc | 1446 --------------------- debian/changelog | 20 - debian/compat | 1 - debian/control | 18 - debian/org.tizen.taskmgr.install.in | 3 - debian/org.tizen.taskmgr.postinst | 8 - debian/rules | 119 -- include/conf.h | 51 + include/item.h | 40 + include/list.h | 51 + include/log.h | 115 ++ include/main.h | 41 + include/scroller.h | 44 + include/util.h | 52 + org.tizen.task-mgr.manifest | 11 + org.tizen.taskmgr.png | Bin 5759 -> 0 bytes org.tizen.taskmgr.xml | 9 - packaging/org.tizen.task-mgr.spec | 67 + packaging/org.tizen.taskmgr.manifest | 8 - packaging/org.tizen.taskmgr.spec | 50 - po/ar.po | 36 - po/az.po | 36 - po/bg.po | 36 - po/ca.po | 36 - po/cs.po | 36 - po/da.po | 36 - po/el_GR.po | 36 - po/en.po | 36 - po/en_PH.po | 36 - po/en_US.po | 36 - po/es_ES.po | 36 - po/es_US.po | 36 - po/et.po | 36 - po/eu.po | 36 - po/fi.po | 36 - po/fr_CA.po | 36 - po/ga.po | 36 - po/gl.po | 36 - po/hi.po | 36 - po/hr.po | 36 - po/hu.po | 36 - po/hy.po | 36 - po/id.po | 18 - po/is.po | 36 - po/it_IT.po | 36 - po/ja_JP.po | 36 - po/ka.po | 36 - po/kk.po | 36 - po/ko_KR.po | 36 - po/lt.po | 36 - po/lv.po | 36 - po/mk.po | 36 - po/ms.po | 18 - po/nb.po | 36 - po/pl.po | 36 - po/pt_BR.po | 36 - po/pt_PT.po | 36 - po/ro.po | 36 - po/ru_RU.po | 36 - po/sk.po | 36 - po/sl.po | 36 - po/sr.po | 36 - po/sv.po | 36 - po/th.po | 18 - po/tr_TR.po | 36 - po/uk.po | 36 - po/uz.po | 36 - po/vi.po | 18 - po/zh_CN.po | 36 - po/zh_HK.po | 36 - po/zh_TW.po | 36 - res/CMakeLists.txt | 3 + res/edje/CMakeLists.txt | 25 + res/edje/box.edc | 56 + res/edje/conf.h | 1 + res/edje/images/clear_all_button_icon.png | Bin 0 -> 3234 bytes res/edje/images/clear_all_button_icon_disable.png | Bin 0 -> 2912 bytes res/edje/item.edc | 257 ++++ res/edje/layout.edc | 101 ++ res/images/default.png | Bin 0 -> 57662 bytes {po => res/po}/CMakeLists.txt | 5 +- {po => res/po}/POTFILES.in | 0 res/po/ar.po | 9 + res/po/as.po | 6 + res/po/az.po | 9 + res/po/bg.po | 9 + res/po/bn.po | 6 + res/po/ca.po | 9 + res/po/cs.po | 9 + res/po/da.po | 9 + res/po/de.po | 9 + {po => res/po}/de_DE.po | 2 +- res/po/el_GR.po | 9 + res/po/en.po | 9 + {po => res/po}/en_GB.po | 0 res/po/en_PH.po | 9 + res/po/en_US.po | 9 + res/po/es_ES.po | 9 + {po => res/po}/es_MX.po | 0 res/po/es_US.po | 9 + res/po/et.po | 9 + res/po/eu.po | 9 + res/po/fa.po | 36 + res/po/fi.po | 9 + res/po/fr.po | 9 + res/po/fr_CA.po | 9 + {po => res/po}/fr_FR.po | 0 res/po/ga.po | 9 + res/po/gl.po | 9 + res/po/gu.po | 6 + {po => res/po}/he.po | 0 res/po/hi.po | 9 + res/po/hr.po | 9 + res/po/hu.po | 9 + res/po/hy.po | 9 + res/po/id.po | 6 + res/po/is.po | 9 + res/po/it_IT.po | 9 + res/po/ja_JP.po | 9 + res/po/ka.po | 9 + res/po/kk.po | 9 + res/po/km.po | 6 + res/po/kn.po | 6 + res/po/ko_KR.po | 6 + res/po/lo.po | 6 + res/po/lt.po | 9 + res/po/lv.po | 9 + res/po/mk.po | 9 + res/po/ml.po | 6 + res/po/mr.po | 6 + res/po/ms.po | 6 + res/po/my.po | 6 + res/po/nb.po | 9 + res/po/ne.po | 6 + res/po/nl.po | 9 + {po => res/po}/nl_NL.po | 0 {po => res/po}/no.po | 0 res/po/or.po | 6 + res/po/pa.po | 6 + res/po/pl.po | 9 + res/po/pt_BR.po | 9 + res/po/pt_PT.po | 9 + res/po/ro.po | 9 + res/po/ru_RU.po | 9 + res/po/si.po | 6 + res/po/sk.po | 9 + res/po/sl.po | 9 + res/po/sr.po | 9 + res/po/sv.po | 9 + res/po/ta.po | 6 + {po => res/po}/taskmgr.pot | 0 res/po/te.po | 6 + res/po/th.po | 6 + res/po/tl.po | 6 + res/po/tr_TR.po | 9 + res/po/uk.po | 9 + {po => res/po}/update-po.sh | 0 res/po/ur.po | 6 + res/po/uz.po | 9 + res/po/vi.po | 6 + res/po/zh_CN.po | 9 + res/po/zh_HK.po | 9 + {po => res/po}/zh_SG.po | 0 res/po/zh_TW.po | 9 + src/_cpu.c | 111 -- src/_cpu.h | 28 - src/_eina.c | 311 ----- src/_eina.h | 36 - src/_genlist.c | 854 ------------ src/_genlist.h | 45 - src/_info.c | 134 -- src/_info.h | 28 - src/_logic.c | 392 ------ src/_logic.h | 33 - src/_progressbar.c | 51 - src/_progressbar.h | 28 - src/_util_efl.c | 290 ----- src/_util_efl.h | 43 - src/_util_log.h | 63 - src/item.c | 707 ++++++++++ src/list.c | 375 ++++++ src/main.c | 293 +++++ src/scroller.c | 437 +++++++ src/taskmanager.c | 301 ----- src/taskmanager.h | 133 -- src/util.c | 110 ++ 212 files changed, 3768 insertions(+), 6828 deletions(-) mode change 100755 => 100644 CMakeLists.txt create mode 100755 LICENSE delete mode 100755 LICENSE.Flora delete mode 100755 data/CMakeLists.txt delete mode 100644 data/icons/00_button_01_normal.png delete mode 100644 data/icons/00_button_01_press.png delete mode 100755 data/icons/taskman_def_content.png delete mode 100644 data/icons/taskmgr_title_icon_info.png delete mode 100755 data/images/39_multitasking_btn_bg.png delete mode 100755 data/images/PUT_IMAGES_HERE create mode 100644 data/org.tizen.task-mgr.efl create mode 100644 data/org.tizen.task-mgr.xml delete mode 100755 data/taskmgr.edc delete mode 100755 data/themes/00_button_02_focus.png delete mode 100755 data/themes/00_button_02_press.png delete mode 100644 data/themes/00_button_03_focus.png delete mode 100644 data/themes/00_button_03_normal.png delete mode 100644 data/themes/00_button_03_press.png delete mode 100644 data/themes/00_button_delete.png delete mode 100644 data/themes/00_button_delete_text.png delete mode 100755 data/themes/00_list_bar_press_1x80.png delete mode 100755 data/themes/39_mini_controller_bg.png delete mode 100755 data/themes/39_mini_controller_button_nor.png delete mode 100755 data/themes/39_mini_controller_button_press.png delete mode 100755 data/themes/39_multitasking_btn_01.png delete mode 100755 data/themes/theme_taskmanager.edc delete mode 100644 debian/changelog delete mode 100755 debian/compat delete mode 100644 debian/control delete mode 100644 debian/org.tizen.taskmgr.install.in delete mode 100755 debian/org.tizen.taskmgr.postinst delete mode 100755 debian/rules create mode 100644 include/conf.h create mode 100644 include/item.h create mode 100644 include/list.h create mode 100755 include/log.h create mode 100644 include/main.h create mode 100644 include/scroller.h create mode 100644 include/util.h create mode 100644 org.tizen.task-mgr.manifest delete mode 100755 org.tizen.taskmgr.png delete mode 100755 org.tizen.taskmgr.xml create mode 100644 packaging/org.tizen.task-mgr.spec delete mode 100644 packaging/org.tizen.taskmgr.manifest delete mode 100755 packaging/org.tizen.taskmgr.spec delete mode 100644 po/ar.po delete mode 100644 po/az.po delete mode 100644 po/bg.po delete mode 100644 po/ca.po delete mode 100644 po/cs.po delete mode 100644 po/da.po delete mode 100644 po/el_GR.po delete mode 100644 po/en.po delete mode 100644 po/en_PH.po delete mode 100644 po/en_US.po delete mode 100644 po/es_ES.po delete mode 100644 po/es_US.po delete mode 100644 po/et.po delete mode 100644 po/eu.po delete mode 100644 po/fi.po delete mode 100644 po/fr_CA.po delete mode 100644 po/ga.po delete mode 100644 po/gl.po delete mode 100644 po/hi.po delete mode 100644 po/hr.po delete mode 100644 po/hu.po delete mode 100644 po/hy.po delete mode 100644 po/id.po delete mode 100644 po/is.po delete mode 100644 po/it_IT.po delete mode 100644 po/ja_JP.po delete mode 100644 po/ka.po delete mode 100644 po/kk.po delete mode 100644 po/ko_KR.po delete mode 100644 po/lt.po delete mode 100644 po/lv.po delete mode 100644 po/mk.po delete mode 100644 po/ms.po delete mode 100644 po/nb.po delete mode 100644 po/pl.po delete mode 100644 po/pt_BR.po delete mode 100644 po/pt_PT.po delete mode 100644 po/ro.po delete mode 100644 po/ru_RU.po delete mode 100644 po/sk.po delete mode 100644 po/sl.po delete mode 100644 po/sr.po delete mode 100644 po/sv.po delete mode 100644 po/th.po delete mode 100644 po/tr_TR.po delete mode 100644 po/uk.po delete mode 100644 po/uz.po delete mode 100644 po/vi.po delete mode 100644 po/zh_CN.po delete mode 100644 po/zh_HK.po delete mode 100644 po/zh_TW.po create mode 100644 res/CMakeLists.txt create mode 100644 res/edje/CMakeLists.txt create mode 100644 res/edje/box.edc create mode 120000 res/edje/conf.h create mode 100644 res/edje/images/clear_all_button_icon.png create mode 100755 res/edje/images/clear_all_button_icon_disable.png create mode 100644 res/edje/item.edc create mode 100644 res/edje/layout.edc create mode 100644 res/images/default.png rename {po => res/po}/CMakeLists.txt (53%) rename {po => res/po}/POTFILES.in (100%) create mode 100755 res/po/ar.po create mode 100755 res/po/as.po create mode 100755 res/po/az.po create mode 100755 res/po/bg.po create mode 100755 res/po/bn.po create mode 100755 res/po/ca.po create mode 100755 res/po/cs.po create mode 100755 res/po/da.po create mode 100755 res/po/de.po rename {po => res/po}/de_DE.po (96%) create mode 100755 res/po/el_GR.po create mode 100755 res/po/en.po rename {po => res/po}/en_GB.po (100%) create mode 100755 res/po/en_PH.po create mode 100755 res/po/en_US.po create mode 100755 res/po/es_ES.po rename {po => res/po}/es_MX.po (100%) create mode 100755 res/po/es_US.po create mode 100755 res/po/et.po create mode 100755 res/po/eu.po create mode 100644 res/po/fa.po create mode 100755 res/po/fi.po create mode 100755 res/po/fr.po create mode 100755 res/po/fr_CA.po rename {po => res/po}/fr_FR.po (100%) create mode 100755 res/po/ga.po create mode 100755 res/po/gl.po create mode 100755 res/po/gu.po rename {po => res/po}/he.po (100%) create mode 100755 res/po/hi.po create mode 100755 res/po/hr.po create mode 100755 res/po/hu.po create mode 100755 res/po/hy.po create mode 100755 res/po/id.po create mode 100755 res/po/is.po create mode 100755 res/po/it_IT.po create mode 100755 res/po/ja_JP.po create mode 100755 res/po/ka.po create mode 100755 res/po/kk.po create mode 100755 res/po/km.po create mode 100755 res/po/kn.po create mode 100755 res/po/ko_KR.po create mode 100755 res/po/lo.po create mode 100755 res/po/lt.po create mode 100755 res/po/lv.po create mode 100755 res/po/mk.po create mode 100755 res/po/ml.po create mode 100755 res/po/mr.po create mode 100755 res/po/ms.po create mode 100755 res/po/my.po create mode 100755 res/po/nb.po create mode 100755 res/po/ne.po create mode 100755 res/po/nl.po rename {po => res/po}/nl_NL.po (100%) rename {po => res/po}/no.po (100%) create mode 100755 res/po/or.po create mode 100755 res/po/pa.po create mode 100755 res/po/pl.po create mode 100755 res/po/pt_BR.po create mode 100755 res/po/pt_PT.po create mode 100755 res/po/ro.po create mode 100755 res/po/ru_RU.po create mode 100755 res/po/si.po create mode 100755 res/po/sk.po create mode 100755 res/po/sl.po create mode 100755 res/po/sr.po create mode 100755 res/po/sv.po create mode 100755 res/po/ta.po rename {po => res/po}/taskmgr.pot (100%) create mode 100755 res/po/te.po create mode 100755 res/po/th.po create mode 100755 res/po/tl.po create mode 100755 res/po/tr_TR.po create mode 100755 res/po/uk.po rename {po => res/po}/update-po.sh (100%) create mode 100755 res/po/ur.po create mode 100755 res/po/uz.po create mode 100755 res/po/vi.po create mode 100755 res/po/zh_CN.po create mode 100755 res/po/zh_HK.po rename {po => res/po}/zh_SG.po (100%) create mode 100755 res/po/zh_TW.po delete mode 100755 src/_cpu.c delete mode 100755 src/_cpu.h delete mode 100755 src/_eina.c delete mode 100755 src/_eina.h delete mode 100755 src/_genlist.c delete mode 100755 src/_genlist.h delete mode 100755 src/_info.c delete mode 100755 src/_info.h delete mode 100755 src/_logic.c delete mode 100755 src/_logic.h delete mode 100755 src/_progressbar.c delete mode 100755 src/_progressbar.h delete mode 100755 src/_util_efl.c delete mode 100755 src/_util_efl.h delete mode 100755 src/_util_log.h create mode 100644 src/item.c create mode 100644 src/list.c create mode 100644 src/main.c create mode 100644 src/scroller.c delete mode 100755 src/taskmanager.c delete mode 100755 src/taskmanager.h create mode 100644 src/util.c diff --git a/CMakeLists.txt b/CMakeLists.txt old mode 100755 new mode 100644 index c8d3038..4352e27 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,104 +1,72 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.6) -PROJECT(taskmgr C) +PROJECT(task-mgr) +# FIND ALL SOURCE IN A SOURCE DIRECTORY +AUX_SOURCE_DIRECTORY(${CMAKE_SOURCE_DIR}/src SRCS) -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 FILE +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) +SET(PACKAGE "${PROJECT_NAME}") +SET(RESOURCE_DIR "${CMAKE_SOURCE_DIR}/res") +SET(EDJDIR "${RESOURCE_DIR}/edje/${PACKAGE}") INCLUDE(FindPkgConfig) pkg_check_modules(pkgs REQUIRED - ecore - ecore-file - ecore-input - ecore-x - edje - eina - evas appcore-efl + evas + edje elementary - aul - utilX - rua - vconf - sysman - ail + ecore + eina + capi-appfw-application + capi-system-info + capi-appfw-package-manager + capi-appfw-app-manager dlog + pkgmgr-info + rua + feedback ) +SET(PREFIX ${CMAKE_INSTALL_PREFIX}) +SET(RESDIR "${PREFIX}/res") +SET(EDJEDIR "${RESDIR}/edje") +SET(LOCALEDIR "${RESDIR}/locale") + 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") +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIE") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -fPIE") -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") +SET(CMAKE_C_FLAGS_PROFILING "-O0 -g -pg -fPIE") +SET(CMAKE_CXX_FLAGS_PROFILING "-O0 -std=c++0x -g -pg -fPIE") +SET(CMAKE_C_FLAGS_DEBUG "-O0 -g -fPIE") +SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -std=c++0x -g -fPIE") +SET(CMAKE_C_FLAGS_RELEASE "-O2 -g -fPIE") +SET(CMAKE_CXX_FLAGS_RELEASE "-O2 -std=c++0x -g -fPIE") +SET(CMAKE_C_FLAGS_CCOV "-O2 -g --coverage -fPIE") +SET(CMAKE_CXX_FLAGS_CCOV "-O2 -std=c++0x -g --coverage -fPIE") -ADD_DEFINITIONS("-fpie") +SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie") -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}\"") +MESSAGE(${CMAKE_C_FLAGS}) -SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed") +ADD_DEFINITIONS("-DEDJEDIR=\"${EDJEDIR}\"") +ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"") 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}) +TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS}) -#install application HOME directory -INSTALL(DIRECTORY DESTINATION ${DATADIR}) +# Install +INSTALL(TARGETS ${PROJECT_NAME} DESTINATION bin) -#install etc -ADD_SUBDIRECTORY(data) +#Install images +INSTALL(DIRECTORY res/images/ DESTINATION res/images) -# i18n -ADD_SUBDIRECTORY(po) +# Install Manifest File +INSTALL(FILES data/org.tizen.task-mgr.xml DESTINATION /usr/share/packages) +INSTALL(FILES data/org.tizen.task-mgr.efl DESTINATION /etc/smack/accesses.d) +# End of a file +ADD_SUBDIRECTORY(res) diff --git a/LICENSE b/LICENSE new file mode 100755 index 0000000..54b213e --- /dev/null +++ b/LICENSE @@ -0,0 +1,204 @@ +Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/LICENSE.Flora b/LICENSE.Flora deleted file mode 100755 index 571fe79..0000000 --- a/LICENSE.Flora +++ /dev/null @@ -1,206 +0,0 @@ -Flora License - -Version 1.1, April, 2013 - -http://floralicense.org/license/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, -and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by -the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and -all other entities that control, are controlled by, or are -under common control with that entity. For the purposes of -this definition, "control" means (i) the power, direct or indirect, -to cause the direction or management of such entity, -whether by contract or otherwise, or (ii) ownership of fifty percent (50%) -or more of the outstanding shares, or (iii) beneficial ownership of -such entity. - -"You" (or "Your") shall mean an individual or Legal Entity -exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, -including but not limited to software source code, documentation source, -and configuration files. - -"Object" form shall mean any form resulting from mechanical -transformation or translation of a Source form, including but -not limited to compiled object code, generated documentation, -and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, -made available under the License, as indicated by a copyright notice -that is included in or attached to the work (an example is provided -in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, -that is based on (or derived from) the Work and for which the editorial -revisions, annotations, elaborations, or other modifications represent, -as a whole, an original work of authorship. For the purposes of this License, -Derivative Works shall not include works that remain separable from, -or merely link (or bind by name) to the interfaces of, the Work and -Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original -version of the Work and any modifications or additions to that Work or -Derivative Works thereof, that is intentionally submitted to Licensor -for inclusion in the Work by the copyright owner or by an individual or -Legal Entity authorized to submit on behalf of the copyright owner. -For the purposes of this definition, "submitted" means any form of -electronic, verbal, or written communication sent to the Licensor or -its representatives, including but not limited to communication on -electronic mailing lists, source code control systems, and issue -tracking systems that are managed by, or on behalf of, the Licensor -for the purpose of discussing and improving the Work, but excluding -communication that is conspicuously marked or otherwise designated -in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity -on behalf of whom a Contribution has been received by Licensor and -subsequently incorporated within the Work. - -"Tizen Certified Platform" shall mean a software platform that complies -with the standards set forth in the Tizen Compliance Specification -and passes the Tizen Compliance Tests as defined from time to time -by the Tizen Technical Steering Group and certified by the Tizen -Association or its designated agent. - -2. Grant of Copyright License. Subject to the terms and conditions of -this License, each Contributor hereby grants to You a perpetual, -worldwide, non-exclusive, no-charge, royalty-free, irrevocable -copyright license to reproduce, prepare Derivative Works of, -publicly display, publicly perform, sublicense, and distribute the -Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of -this License, each Contributor hereby grants to You a perpetual, -worldwide, non-exclusive, no-charge, royalty-free, irrevocable -(except as stated in this section) patent license to make, have made, -use, offer to sell, sell, import, and otherwise transfer the Work -solely as incorporated into a Tizen Certified Platform, where such -license applies only to those patent claims licensable by such -Contributor that are necessarily infringed by their Contribution(s) -alone or by combination of their Contribution(s) with the Work solely -as incorporated into a Tizen Certified Platform to which such -Contribution(s) was submitted. If You institute patent litigation -against any entity (including a cross-claim or counterclaim -in a lawsuit) alleging that the Work or a Contribution incorporated -within the Work constitutes direct or contributory patent infringement, -then any patent licenses granted to You under this License for that -Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the -Work or Derivative Works thereof pursuant to the copyright license -above, in any medium, with or without modifications, and in Source or -Object form, provided that You meet the following conditions: - - 1. You must give any other recipients of the Work or Derivative Works - a copy of this License; and - 2. You must cause any modified files to carry prominent notices stating - that You changed the files; and - 3. You must retain, in the Source form of any Derivative Works that - You distribute, all copyright, patent, trademark, and attribution - notices from the Source form of the Work, excluding those notices - that do not pertain to any part of the Derivative Works; and - 4. If the Work includes a "NOTICE" text file as part of its distribution, - then any Derivative Works that You distribute must include a readable - copy of the attribution notices contained within such NOTICE file, - excluding those notices that do not pertain to any part of - the Derivative Works, in at least one of the following places: - within a NOTICE text file distributed as part of the Derivative Works; - within the Source form or documentation, if provided along with the - Derivative Works; or, within a display generated by the Derivative Works, - if and wherever such third-party notices normally appear. - The contents of the NOTICE file are for informational purposes only - and do not modify the License. You may add Your own attribution notices - within Derivative Works that You distribute, alongside or as an addendum - to the NOTICE text from the Work, provided that such additional attribution - notices cannot be construed as modifying the License. You may add Your own - copyright statement to Your modifications and may provide additional or - different license terms and conditions for use, reproduction, or - distribution of Your modifications, or for any such Derivative Works - as a whole, provided Your use, reproduction, and distribution of - the Work otherwise complies with the conditions stated in this License - and your own copyright statement or terms and conditions do not conflict - the conditions stated in the License including section 3. - -5. Submission of Contributions. Unless You explicitly state otherwise, -any Contribution intentionally submitted for inclusion in the Work -by You to the Licensor shall be under the terms and conditions of -this License, without any additional terms or conditions. -Notwithstanding the above, nothing herein shall supersede or modify -the terms of any separate license agreement you may have executed -with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade -names, trademarks, service marks, or product names of the Licensor, -except as required for reasonable and customary use in describing the -origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or -agreed to in writing, Licensor provides the Work (and each -Contributor provides its Contributions) on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -implied, including, without limitation, any warranties or conditions -of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A -PARTICULAR PURPOSE. You are solely responsible for determining the -appropriateness of using or redistributing the Work and assume any -risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, -whether in tort (including negligence), contract, or otherwise, -unless required by applicable law (such as deliberate and grossly -negligent acts) or agreed to in writing, shall any Contributor be -liable to You for damages, including any direct, indirect, special, -incidental, or consequential damages of any character arising as a -result of this License or out of the use or inability to use the -Work (including but not limited to damages for loss of goodwill, -work stoppage, computer failure or malfunction, or any and all -other commercial damages or losses), even if such Contributor -has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing -the Work or Derivative Works thereof, You may choose to offer, -and charge a fee for, acceptance of support, warranty, indemnity, -or other liability obligations and/or rights consistent with this -License. However, in accepting such obligations, You may act only -on Your own behalf and on Your sole responsibility, not on behalf -of any other Contributor, and only if You agree to indemnify, -defend, and hold each Contributor harmless for any liability -incurred by, or claims asserted against, such Contributor by reason -of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Flora License to your work - -To apply the Flora License to your work, attach the following -boilerplate notice, with the fields enclosed by brackets "[]" -replaced with your own identifying information. (Don't include -the brackets!) The text should be enclosed in the appropriate -comment syntax for the file format. We also recommend that a -file or class name and description of purpose be included on the -same "printed page" as the copyright notice for easier -identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Flora License, Version 1.1 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://floralicense.org/license/ - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - diff --git a/NOTICE b/NOTICE index db64ab0..b2e5019 100755 --- a/NOTICE +++ b/NOTICE @@ -1,3 +1 @@ -Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved. -Except as noted, this software is licensed under Flora License, Version 1.1 -Please, see the LICENSE file for Flora License, Version 1.1 terms and conditions. +Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt deleted file mode 100755 index cc8dcb1..0000000 --- a/data/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -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 deleted file mode 100644 index cf6db1577164f36b700e50ac42f043e819182554..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3264 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 yN8p9+xKG0IhXVkw6K2mNw~g!o0000 diff --git a/data/icons/00_button_01_press.png b/data/icons/00_button_01_press.png deleted file mode 100644 index 717924639d4f8d4d3baddc2006c682375e321f68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3318 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 At^fc4 diff --git a/data/icons/taskman_def_content.png b/data/icons/taskman_def_content.png deleted file mode 100755 index 22e995a28b49abb49b47f935f7c298a26f9c48a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2856 zcmeAS@N?(olHy`uVBq!ia0y~yV0^&9z^uT*1QaPbs1^^T7>k44ofy`glX(f`uqAoB zyDx`7I;J!Gcbq?fiPqG{7XPX7}!fZeO=javGZ`4Df&EAyTri2wZhZI zF{I+w+q=H`(xD;^4~y5Sb2=?BQBbk#>bfEtE%xWXY4<;tD_$HC4niENPm|KrE`^X#mCZTcP;$i|(JY_w@>S=Fb{FW>8LI=f6foGG^S z%ggln^mgY>ni(D$LD8|7Y{IdP_N zkIeDUueBT5Zfr?>UnQe&Y%D&XdE3!tFHO78Geido2F{e6m~H%Gs>k{((ha^l=iYy~ zPL@R~;d5)9Y56>pWTp+XS)?2mFbZTaG_nC{7AXk*FTc&)dd(?g>#|w59Us>6lpOtY zaY=bz_Hbcjt+z#y3Am?z{V4`|^i-URy)Ohdel z)%yrVK+Q;s!C{0RRtUvdOe9}1*jiNUNpdSmibp*L&jJG%V~u7k3{1QY4$K@TKw9Af z1A+z$g82{{p$Ly+up*!)9E!1+NWNl9-O6Dy>M>|cksk>tX@OAmQW|4Sxg7Y5Qj}~& zX<0^~ctR~D2`DC1NE34FsK<~S3W&;&q(~r1F`gK^XL$Jaqq~RKg~*>Lvz&$Qaxt1ZG^Q+8AeBxoBcZCW+$^NU2w^1hC1 zX@@t=pP0CmIbn0KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0004TNkl`tz&f=^CIDX*&;;NPK=!DSr0F$@$fRR% z2XaC?KKlsCf#gP4$Di00;GjBr1F&(^5G#lW0Q(b_>-<49eGUM2oy*0f zHbc=$;6>~Sz*a#;t(g4`~ZTGk+SYGn~A?m$QmP5;Q2 zGqzf2HB9wk4YHU%tU>CERgU)EqeU5e`l#G*@vtJ@{y}oA?2C)kYK6Wg`KUHNnN%>6 z7RL+w@vW;e`#UX7BRW27Dxp9~pI1RRFy9O0SErDE|@hTOmLKBtQZr gKmsH{&MKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0000_NklYzcC>F|#g_M(XZ{~M`)pa&%hZ>)WgYtVZ=bny-vI#W^-AAZj9y0o0000 + + + Kamil Maslanka + Michal Skorupinski + TASK MANAGER APPLICATION + + + + + diff --git a/data/taskmgr.edc b/data/taskmgr.edc deleted file mode 100755 index ec95eea..0000000 --- a/data/taskmgr.edc +++ /dev/null @@ -1,188 +0,0 @@ -/* - * org.tizen.taskmgr - * Copyright (c) 2012 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#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 deleted file mode 100755 index 933a96af7e3c999319bd1c019f4b5aa91dab6044..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3382 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 M07*qoM6N<$g0s0p@&Et; diff --git a/data/themes/00_button_02_press.png b/data/themes/00_button_02_press.png deleted file mode 100755 index df6c4d0d7eff8bfa855eeb95c8bc5dbaef926e66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3407 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 diff --git a/data/themes/00_button_03_focus.png b/data/themes/00_button_03_focus.png deleted file mode 100644 index 72d99ec065f21083419aae1618e7aff9239a744e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3288 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 N002ovPDHLkV1gtk05kvq diff --git a/data/themes/00_button_03_press.png b/data/themes/00_button_03_press.png deleted file mode 100644 index b973210a6034ec6f0cdd74d529647bd2af679373..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3268 zcmV;#3_J6QP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0005+Nkl2?0BZ@a~6O_U^Z8sT^^;!(Rd?XvRn?SwR zi2G)`{(5cWZdBgdMwudR)FJ=*8SgAAFnDJPN+E@{G8^}w(m(tVr9Zwp;HBDoRe51d z;Z0cCA}EE}VH-O-Lh>ivlDYlILUO*9h3LV)qij$T)1=wtnR@w7BtY8Y2LI*_X5C31D__DpcD)BG!uXW4K!OF zi(g=Sub|bj08L$M#BYbG?6%q#^_Q*Hwv1BQtu^9zvuu4Q?%E(3OH{pOxPDDjF!O=U zttS}^@psEGktVQnQZJlSa6AF3X96ArduI!d-va&_`_xk;`70000KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000F`NklH365=wAk4W5D!UnMH*Vet0~rjw8Mbv;n~OSg(&nQ{PU1N^$;nC1dv>Ae zG-hp+wP{~?NFd3{@BE+l`FNj09LK?0UL4l=5-M-boH%IQTlPCWLtOIHXfFOW3y1Kf&ot>R9h6h&y7w%xXE zXqvV&old_UjYcn0N^b$U5DtfbXh^{&fISc3n9Jol(cj;X-rinFl2r4%ZEbA;0FTE5 zN-2hihmlUFcTZ1G?*?$%4DSfSB zKuYO1Jv}|6`}glhYilbU$5}S(>+8dwJ$oPs!Zk|iyLAInO3!WDv?(|;G6F#mRwRXV zb#-Cy-o4;B?lPtH#U%q$Ne_rA32;QaUI}(y3j$ zc7YIrW>gwVDO6Q`D;y3d0erZag28Ruwqf16bxo}p0|NtSX=yoL?P{*-PIk(&9Hf-4 zxNECT5CjAQ0WijnE~H>E5D3iYxMmsv`2Bu}qWC7I^topMDW$DE&mZ>rd`*X|7|-+Y z`FyZ#`$#PXU)i{E1-kYO0By7wH%foFP1YP%IV^f0Sc?tW}F00N*N#vMSw7u~*0Vy-6O+}xaL+xBQE6sjc4rnokr&qGyJBoYZ|ns$1@mS0hn zvvYHEm!i>VC1I}UGEEbjrs3Ybd*C>3)UqsXu`>w+aA9g{3fXKH<#Kt&)T^YFyLa!x zvaIvTWb)jSj-8Q62`9~&D(BoaZXRDx~W%aV)@!$2mJ!NkM_lF8(ibUJ+$K(XG@hch!XbBPf0QYaMq zX>xKBx~{{rtcHTewr%9|c|3gh5YcE9FN0_nM}SDkH=r-d45C?1h`x-5JEr*nJ-(VQVE4ZAw>xJjpzAa z4a2x*nr2-sQzK_gCmM~00elYNl;7{~WQ=Xrb^Qg#m<&JyU^$L6&2d~TlgW$&C^Z`K eWUW7j_-6nM3f5SQbhn}a0000KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000EyNkl7fvbM$$?v7KHZJQ!nkM z0YTat5IhwM#Wret3fO~GD0u5dFSVyyXiI6U7-9=G$+~}VH?wYbmkhhJ^JaQUtcuaZ z#AGA>;4zmsZ|2MQ_x=5Qn(zBO4<>j{?70DAoIZVe$(yB=I`HQF8UR{>J@e0%m;$Z= z4)68jS|GZ{OzT z&70I}wJ(7)sZ{FDV*B+&hYl?U;$0!cZ@YHw+P`=2-g^wJnRtaD7K_o-(}S+-`-{cm z@kk_+DwoUGmMnHD<%wW0cyVxWkiNb?48vGI5gP`(ckgCsXoz4icwS0*Vo8ihDM#Ac z+D;ufaDYf8(lk-YG))qT1cgH34bwE;a=CnUQAVVc?*;;aF9rq%FijKR_nT^&rpdm2 z`)F-#{Y*;v-XnoXDI-FNi~armghHXF%@?L=(%;{YrfC^u9!@a$|>l&S&#>JA! zBuc5H076P>>biccv$JzUuyH>tot>R%nl>z@3>(0~_V#uR!(gM8^oC*3-rkO7S??IY z;f{_DHez2QgdiG?lF#Q~Gk`teaCpN4*|cdBN~u>2pnD&rSMkW8XSqfhTz z^A*I3+DfHx90#Ck08_SYcLjsNWgYU;*|Y2JR!S*s+Xk36fE(3nbto2#Z8&|nu1mFA zMboqi0bD5-iyKntjYfk~sRZz|p_Ka3vMd^n2D+}JY1)PX;W!SKW#Kr^_ac+Y*q-No zoy+Am3tfqB)oPWgsVOEWC($(R*v!n#sfR&4ZW`}rGMV#_%@wR zADy0_em@)z6OBgMym>RgstofMgzWo1l}d%#*;%U9D!_L_h_SnO@BX?FoffU8m-3x# zHv1Rw!ImvsKCIX4Z{>2i!>;QNdY&hMmsctG{4IoVfj@;1mu=g=T&vaQmin^x;xhCF dkY{864FJ;A`l*>l>3jeH002ovPDHLkV1lfpnt%WR diff --git a/data/themes/00_list_bar_press_1x80.png b/data/themes/00_list_bar_press_1x80.png deleted file mode 100755 index 1dc6e15871bddaff608b602833a513c299ea27e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2872 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

Uc4vESyYpYKErbyEYun$`hW`~@lS(;& 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 diff --git a/data/themes/39_multitasking_btn_01.png b/data/themes/39_multitasking_btn_01.png deleted file mode 100755 index 13a3f74f2c8282dbf3aa4df2c42dc3769ad09c0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3362 zcmV+-4c+pIP)00009a7bBm000XU z000XU0RWnu7ytkYPiaF#P*7-ZbZ>KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0006_NklA#k-6oBV$=VjJw8bi=tscAxLOs=6LGXK|_ZIA3kp?`P zk0E#x1dkDfo&*u;K}}mrvFSGHCY#O9ydDzUQpGmWLxlX`cY5KO_unw1-rT&(Nxj{! z4Ffq~5x5H^+Mx(o2VMh(`SGD0M7aN98vykaq#TE0sk*GSTALgjX2eUANvF_C0boU_ z1|j8xfX#1vG>y&Qo6M{%y#ES-+k&_hOO@wddN4OPb%g{LTRSAGmJwr)4jLR7U^07w ziIHo3{Ia`TELGAAumqq*DT<}a+Q`LJ?)KDWoO(dh-zN_1SYr@C0BZ~;42k@GO!a`d z@k@+mQn@Fdw+5gdXS3r8S8v{#8b#R{8-|=mI+;YA0oFf%CyMQa26AJWB+430qj8kM zSvFAwHfAi71jxC-!)(&QnkFKab4vsKfUNX;^#7G+`&Xnt{(g^sEA{U(()=U!Y_od^)T_;I z|E2#H6bULpm#o$!Ep->zh^@ZmxZQzFEP!li;6)S)qE%Op8UVc1Kp{F5L^+^4vnYq? zPyh 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 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 Mon, 13 Aug 2012 19:47:16 +0900 - diff --git a/debian/compat b/debian/compat deleted file mode 100755 index 7ed6ff8..0000000 --- a/debian/compat +++ /dev/null @@ -1 +0,0 @@ -5 diff --git a/debian/control b/debian/control deleted file mode 100644 index 86b9915..0000000 --- a/debian/control +++ /dev/null @@ -1,18 +0,0 @@ -Source: taskmanager -Section: devel -Priority: extra -Maintainer: Junghyun Kim , hhh.kwon -Uploaders: Noha Park -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 deleted file mode 100644 index b3f2e22..0000000 --- a/debian/org.tizen.taskmgr.install.in +++ /dev/null @@ -1,3 +0,0 @@ -@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 deleted file mode 100755 index ab566dd..0000000 --- a/debian/org.tizen.taskmgr.postinst +++ /dev/null @@ -1,8 +0,0 @@ -#!/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 deleted file mode 100755 index 1df424f..0000000 --- a/debian/rules +++ /dev/null @@ -1,119 +0,0 @@ -#!/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/include/conf.h b/include/conf.h new file mode 100644 index 0000000..ad6bb97 --- /dev/null +++ b/include/conf.h @@ -0,0 +1,51 @@ +/* + * Task Manager + * + * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef __TASK_MGR_CONF_H__ +#define __TASK_MGR_CONF_H__ + +//size +#define BASE_WIDTH 540 +#define BASE_HEIGHT 960 + +#define CLEAR_ICON_WIDTH 60 +#define CLEAR_ICON_HEIGHT 60 +#define CLEAR_LINE_WIDTH 2 +#define CLEAR_LINE_HEIGHT 120 +#define CLEAR_ITEM_WIDTH CLEAR_ICON_WIDTH +#define CLEAR_ITEM_HEIGHT CLEAR_LINE_HEIGHT + +#define ITEM_ICON_WIDTH 88 +#define ITEM_ICON_HEIGHT 88 +#define ITEM_LINE_WIDTH 2 +#define ITEM_LINE_HEIGHT 148 +#define ITEM_WIDTH ITEM_ICON_WIDTH +#define ITEM_HEIGHT ITEM_LINE_HEIGHT + +//color +#define BG_COLOR (255*0.5) + +//edc +#define LAYOUT EDJEDIR"/layout.edj" +#define BOX_LAYOUT EDJEDIR"/box.edj" +#define ITEM_LAYOUT EDJEDIR"/item.edj" + +#define BOX_GROUP_NAME "box" + +#endif //__TASK_MGR_CONF_H__ diff --git a/include/item.h b/include/item.h new file mode 100644 index 0000000..3d1e7a8 --- /dev/null +++ b/include/item.h @@ -0,0 +1,40 @@ +/* + * Task Manager + * + * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef __TASK_MGR_ITEM_H__ +#define __TASK_MGR_ITEM_H__ + +#include "list.h" +#include "util.h" + + + +extern list_type_default_s *item_get_info(Evas_Object *item); + +extern void item_clear_set_disable(Evas_Object *scroller); +extern Evas_Object *item_clear_all_create(Evas_Object *scroller); +extern void item_clear_all_destroy(Evas_Object *scroller); + +extern Evas_Object *item_create(Evas_Object *scroller, list_type_default_s *info); +extern void item_destroy(Evas_Object *item); +extern void item_terminate(Evas_Object *item); + + + +#endif //__TASK_MGR_ITEM_H__ diff --git a/include/list.h b/include/list.h new file mode 100644 index 0000000..2d5361e --- /dev/null +++ b/include/list.h @@ -0,0 +1,51 @@ +/* + * Task Manager + * + * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef __TASK_MGR_LIST_H__ +#define __TASK_MGR_LIST_H__ + +#include "util.h" + +typedef struct { + + char *pkgid; + char *appid; + char *name; + char *icon; + char *arg; + + int pid; + Eina_Bool nodisplay; + Eina_Bool taskmanage; + Eina_Bool unmounted; + Eina_Bool multi_launch; + Eina_Bool isAlreadySet; + + time_t launch_time; + +} list_type_default_s; + + + +extern task_mgr_error_e list_create(Eina_List **pkg_list); +extern void list_destroy(Eina_List *pkg_list); + +extern task_mgr_error_e list_sort(Eina_List *pkg_list, int (*_sort_cb)(const void *d1, const void *d2)); + +#endif //__TASK_MGR_LIST_H__ diff --git a/include/log.h b/include/log.h new file mode 100755 index 0000000..3831fad --- /dev/null +++ b/include/log.h @@ -0,0 +1,115 @@ +/* + * Task Manager + * + * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef __TASK_MGR_LOG_H__ +#define __TASK_MGR_LOG_H__ + +#include +#include + +#undef LOG_TAG +#define LOG_TAG "TASK_MGR" + +#if !defined(_D) +#define _D(fmt, arg...) LOGD(fmt"\n", ##arg) +#endif + +#if !defined(_W) +#define _W(fmt, arg...) LOGW(fmt"\n", ##arg) +#endif + +#if !defined(_E) +#define _E(fmt, arg...) LOGE(fmt"\n", ##arg) +#endif + +#if !defined(_SD) +#define _SD(fmt, arg...) SECURE_LOGD(fmt"\n", ##arg) +#endif + +#if !defined(_SW) +#define _SW(fmt, arg...) SECURE_LOGW(fmt"\n", ##arg) +#endif + +#if !defined(_SE) +#define _SE(fmt, arg...) SECURE_LOGE(fmt"\n", ##arg) +#endif + +#define retvm_if_timer(timer, expr, val, fmt, arg...) do { \ + if (expr) { \ + _E(fmt, ##arg); \ + _E("(%s) -> %s() return", #expr, __FUNCTION__); \ + timer = NULL; \ + return (val); \ + } \ +} while (0) + +#define retvm_if(expr, val, fmt, arg...) do { \ + if(expr) { \ + _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) + +#define goto_if(expr, val) do { \ + if(expr) { \ + _E("(%s) -> goto", #expr); \ + goto val; \ + } \ +} while (0) + +#define break_if(expr) { \ + if(expr) { \ + _E("(%s) -> break", #expr); \ + break; \ + } \ +} + +#define continue_if(expr) { \ + if(expr) { \ + _E("(%s) -> continue", #expr); \ + continue; \ + } \ +} + + + +#endif //__TASK_MGR_LOG_H__ diff --git a/include/main.h b/include/main.h new file mode 100644 index 0000000..62c9bdd --- /dev/null +++ b/include/main.h @@ -0,0 +1,41 @@ +/* + * Task Manager + * + * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef __TASK_MGR_H__ +#define __TASK_MGR_H__ + +typedef struct { + Evas *e; + Evas_Object *win; + Evas_Object *bg; + Evas_Object *layout; + Evas_Object *scroller; + Evas_Object *box; + + Eina_List *pkg_list; + + int root_w; + int root_h; +} main_s; +typedef main_s *main_h; + + +extern main_h main_get_info(void); + +#endif //__TASK_MGR_H__ diff --git a/include/scroller.h b/include/scroller.h new file mode 100644 index 0000000..bf67ac9 --- /dev/null +++ b/include/scroller.h @@ -0,0 +1,44 @@ +/* + * Task Manager + * + * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef __TASK_MGR_SCROLLER_H__ +#define __TASK_MGR_SCROLLER_H__ + +#include "util.h" + + + +extern task_mgr_error_e scroller_push_item(Evas_Object *scroller, Evas_Object *item); +extern void scroller_pop_item(Evas_Object *scroller, Evas_Object *item, int terminate); + +extern task_mgr_error_e scroller_push_all_item(Evas_Object *scroller, Eina_List *list); +extern void scroller_pop_all_item(Evas_Object *scroller, int terminate); + +extern int scroller_count(Evas_Object *scroller); +extern Eina_Bool scroller_is_scrolling(Evas_Object *scroller); + +extern void scroller_freeze(Evas_Object *scroller); +extern void scroller_unfreeze(Evas_Object *scroller); + +extern Evas_Object *scroller_create(Evas_Object *layout); +extern void scroller_destroy(Evas_Object *scroller); + + + +#endif //__TASK_MGR_SCROLLER_H__ diff --git a/include/util.h b/include/util.h new file mode 100644 index 0000000..af2c727 --- /dev/null +++ b/include/util.h @@ -0,0 +1,52 @@ +/* + * Task Manager + * + * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + + #ifndef __TASK_MGR_UTIL_H__ + #define __TASK_MGR_UTIL_H__ + + + +/* data key */ +#define DATA_KEY_RUNNING_LIST "rn_list" +#define DATA_KEY_IS_SCROLLING "is_scing" +#define DATA_KEY_ITEM_INFO "it_if" + +/* Multi-language */ +#if !defined(_) +#define _(str) gettext(str) +#endif + + + +/* Enum */ +typedef enum { + TASK_MGR_ERROR_NONE = 0, + TASK_MGR_ERROR_FAIL = -1, + TASK_MGR_ERROR_DB_FAILED = -2, + TASK_MGR_ERROR_OUT_OF_MEMORY = -3, + TASK_MGR_ERROR_INVALID_PARAMETER = -4, + TASK_MGR_ERROR_NO_DATA = -5, +} task_mgr_error_e; + +extern Eina_Bool util_kill_app(const char *appid); +extern Eina_Bool util_launch_app(const char *appid); + + + +#endif //__TASK_MGR_UTIL_H__ diff --git a/org.tizen.task-mgr.manifest b/org.tizen.task-mgr.manifest new file mode 100644 index 0000000..9a6888c --- /dev/null +++ b/org.tizen.task-mgr.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/org.tizen.taskmgr.png b/org.tizen.taskmgr.png deleted file mode 100755 index ef74fd1f771bfaa00f098b1014b903cd3f8f1797..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5759 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 x7 - - - Hong Kwon - Task Manager - - - - diff --git a/packaging/org.tizen.task-mgr.spec b/packaging/org.tizen.task-mgr.spec new file mode 100644 index 0000000..ed5119b --- /dev/null +++ b/packaging/org.tizen.task-mgr.spec @@ -0,0 +1,67 @@ +%define Exec task-mgr +%define AppInstallPath /usr/apps/%{name} + +Name: org.tizen.task-mgr +Summary: Taskmanager application +Version: 0.0.1 +Release: 1 +License: Apache-2.0 +Source0: %{name}-%{version}.tar.gz + +%if "%{?tizen_profile_name}" == "wearable" +ExcludeArch: %{arm} %ix86 x86_64 +%endif + +%if "%{?tizen_profile_name}" == "tv" +ExcludeArch: %{arm} %ix86 x86_64 +%endif + +BuildRequires: pkgconfig(appcore-efl) +BuildRequires: pkgconfig(capi-appfw-application) +BuildRequires: pkgconfig(ecore) +BuildRequires: pkgconfig(eina) +BuildRequires: pkgconfig(evas) +BuildRequires: pkgconfig(edje) +BuildRequires: edje-tools +BuildRequires: gettext-tools +BuildRequires: pkgconfig(dlog) +BuildRequires: pkgconfig(elementary) +BuildRequires: pkgconfig(capi-system-info) +BuildRequires: pkgconfig(capi-appfw-package-manager) +BuildRequires: pkgconfig(capi-appfw-app-manager) +BuildRequires: cmake +BuildRequires: pkgconfig(pkgmgr-info) +BuildRequires: pkgconfig(rua) +BuildRequires: pkgconfig(feedback) + +%description +Taskmanager application. + +%prep +%setup -q + +%build +export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE" +export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE" +export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE" + +cmake . -DCMAKE_INSTALL_PREFIX="%{AppInstallPath}" -DCMAKE_TARGET="%{Exec}" -DCMAKE_PACKAGE="%{name}" +make %{?jobs:-j%jobs} + +%install +rm -rf %{buildroot} +%make_install + +%post +/sbin/ldconfig + +%postun -p /sbin/ldconfig + +%files +%manifest %{name}.manifest +%defattr(-,root,root,-) +%{AppInstallPath}/bin/task-mgr +%{AppInstallPath}/res/* +%{_datarootdir}/packages/%{name}.xml +/etc/smack/accesses.d/%{name}.efl +%{AppInstallPath}/res/locale/*/LC_MESSAGES/* diff --git a/packaging/org.tizen.taskmgr.manifest b/packaging/org.tizen.taskmgr.manifest deleted file mode 100644 index 97161af..0000000 --- a/packaging/org.tizen.taskmgr.manifest +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/packaging/org.tizen.taskmgr.spec b/packaging/org.tizen.taskmgr.spec deleted file mode 100755 index f456d76..0000000 --- a/packaging/org.tizen.taskmgr.spec +++ /dev/null @@ -1,50 +0,0 @@ -Name: org.tizen.taskmgr -Summary: Task Manager -Version: 0.14.5 -Release: 1 -Group: devel -License: Flora Software License -Source0: %{name}-%{version}.tar.gz -Source1001: org.tizen.taskmgr.manifest -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 -cp %{SOURCE1001} . - -%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 %{name}.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/ar.po b/po/ar.po deleted file mode 100644 index 707e16f..0000000 --- a/po/ar.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 0e19b31..0000000 --- a/po/az.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 5f23713..0000000 --- a/po/bg.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 0fc9c8f..0000000 --- a/po/ca.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 2b292d5..0000000 --- a/po/cs.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 589fc55..0000000 --- a/po/da.po +++ /dev/null @@ -1,36 +0,0 @@ -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/el_GR.po b/po/el_GR.po deleted file mode 100644 index c05eafe..0000000 --- a/po/el_GR.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 8937791..0000000 --- a/po/en.po +++ /dev/null @@ -1,36 +0,0 @@ -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 apps 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_PH.po b/po/en_PH.po deleted file mode 100644 index 8937791..0000000 --- a/po/en_PH.po +++ /dev/null @@ -1,36 +0,0 @@ -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 apps 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 deleted file mode 100644 index 8937791..0000000 --- a/po/en_US.po +++ /dev/null @@ -1,36 +0,0 @@ -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 apps 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 deleted file mode 100644 index 093c114..0000000 --- a/po/es_ES.po +++ /dev/null @@ -1,36 +0,0 @@ -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_US.po b/po/es_US.po deleted file mode 100644 index 75c339b..0000000 --- a/po/es_US.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index c75bf12..0000000 --- a/po/et.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 8678cd0..0000000 --- a/po/eu.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 0fad832..0000000 --- a/po/fi.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 8b2bc6c..0000000 --- a/po/fr_CA.po +++ /dev/null @@ -1,36 +0,0 @@ -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/ga.po b/po/ga.po deleted file mode 100644 index ebb8c17..0000000 --- a/po/ga.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index d2af007..0000000 --- a/po/gl.po +++ /dev/null @@ -1,36 +0,0 @@ -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/hi.po b/po/hi.po deleted file mode 100644 index 79f4ada..0000000 --- a/po/hi.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 6907f81..0000000 --- a/po/hr.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index a4d3775..0000000 --- a/po/hu.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 36c3e25..0000000 --- a/po/hy.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index fb7537c..0000000 --- a/po/id.po +++ /dev/null @@ -1,18 +0,0 @@ -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 deleted file mode 100644 index 727282c..0000000 --- a/po/is.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index b7b4a8a..0000000 --- a/po/it_IT.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index cb06967..0000000 --- a/po/ja_JP.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 898b29d..0000000 --- a/po/ka.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 643fbde..0000000 --- a/po/kk.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 4b72422..0000000 --- a/po/ko_KR.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 897d8ad..0000000 --- a/po/lt.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 2f75264..0000000 --- a/po/lv.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 398a2bd..0000000 --- a/po/mk.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 6955d87..0000000 --- a/po/ms.po +++ /dev/null @@ -1,18 +0,0 @@ -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 deleted file mode 100644 index 32acb7a..0000000 --- a/po/nb.po +++ /dev/null @@ -1,36 +0,0 @@ -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/pl.po b/po/pl.po deleted file mode 100644 index 97ba671..0000000 --- a/po/pl.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 7f755a4..0000000 --- a/po/pt_BR.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index dd7c192..0000000 --- a/po/pt_PT.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 18fad11..0000000 --- a/po/ro.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 5f9a476..0000000 --- a/po/ru_RU.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 6d57d73..0000000 --- a/po/sk.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 1acbdbc..0000000 --- a/po/sl.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 0d3ff15..0000000 --- a/po/sr.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 61babd1..0000000 --- a/po/sv.po +++ /dev/null @@ -1,36 +0,0 @@ -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/th.po b/po/th.po deleted file mode 100644 index c69ee38..0000000 --- a/po/th.po +++ /dev/null @@ -1,18 +0,0 @@ -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 deleted file mode 100644 index 848c355..0000000 --- a/po/tr_TR.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 83807af..0000000 --- a/po/uk.po +++ /dev/null @@ -1,36 +0,0 @@ -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/uz.po b/po/uz.po deleted file mode 100644 index 6583e92..0000000 --- a/po/uz.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index aa6c018..0000000 --- a/po/vi.po +++ /dev/null @@ -1,18 +0,0 @@ -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 deleted file mode 100644 index 19088c5..0000000 --- a/po/zh_CN.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 916d9c1..0000000 --- a/po/zh_HK.po +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 89c754b..0000000 --- a/po/zh_TW.po +++ /dev/null @@ -1,36 +0,0 @@ -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/res/CMakeLists.txt b/res/CMakeLists.txt new file mode 100644 index 0000000..5cc2056 --- /dev/null +++ b/res/CMakeLists.txt @@ -0,0 +1,3 @@ +ADD_SUBDIRECTORY(edje) +#ADD_SUBDIRECTORY(images) +ADD_SUBDIRECTORY(po) diff --git a/res/edje/CMakeLists.txt b/res/edje/CMakeLists.txt new file mode 100644 index 0000000..26955b0 --- /dev/null +++ b/res/edje/CMakeLists.txt @@ -0,0 +1,25 @@ +#install edj +ADD_CUSTOM_TARGET(layout.edj + COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/images + ${CMAKE_CURRENT_SOURCE_DIR}/layout.edc layout.edj + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/layout.edc +) +ADD_DEPENDENCIES(${PROJECT_NAME} layout.edj) +INSTALL(FILES layout.edj DESTINATION ${EDJEDIR}) + +ADD_CUSTOM_TARGET(box.edj + COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/images + ${CMAKE_CURRENT_SOURCE_DIR}/box.edc box.edj + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/box.edc +) +ADD_DEPENDENCIES(${PROJECT_NAME} box.edj) +INSTALL(FILES box.edj DESTINATION ${EDJEDIR}) + +ADD_CUSTOM_TARGET(item.edj + COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/images + ${CMAKE_CURRENT_SOURCE_DIR}/item.edc item.edj + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/item.edc +) +ADD_DEPENDENCIES(${PROJECT_NAME} item.edj) +INSTALL(FILES item.edj DESTINATION ${EDJEDIR}) + diff --git a/res/edje/box.edc b/res/edje/box.edc new file mode 100644 index 0000000..a2796f9 --- /dev/null +++ b/res/edje/box.edc @@ -0,0 +1,56 @@ +/* + * Task Manager + * + * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + + + +#include "conf.h" + +collections { + base_scale: 2.1; + group { + name: "box"; + parts { + part { + name: "bg"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + min: BASE_WIDTH BASE_HEIGHT; + color: 0 0 0 0; + visible: 1; + } + } + part { + name: "box"; + type: SWALLOW; + description { + state: "default" 0.0; + rel1 { relative: 0.0 1.0; } + rel2 { relative: 1.0 1.0; } + align: 0.5 1.0; + fixed: 0 1; + visible: 1; + } + } + } //parts + } //group +} //collections diff --git a/res/edje/conf.h b/res/edje/conf.h new file mode 120000 index 0000000..de97229 --- /dev/null +++ b/res/edje/conf.h @@ -0,0 +1 @@ +../../include/conf.h \ No newline at end of file diff --git a/res/edje/images/clear_all_button_icon.png b/res/edje/images/clear_all_button_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4ba500c65cf6a655cfa5b55edfe65710f4ecd086 GIT binary patch literal 3234 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 kZ}gYfNaCF}xV$|1>H6z0+kD -#include -#include - -#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 deleted file mode 100755 index 2a95bf7..0000000 --- a/src/_cpu.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * org.tizen.taskmgr - * Copyright (c) 2012 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef __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 deleted file mode 100755 index 5831fae..0000000 --- a/src/_eina.c +++ /dev/null @@ -1,311 +0,0 @@ -/* - * org.tizen.taskmgr - * Copyright (c) 2012 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - - -#include -#include -#include - -#include -#include -#include -#include - -#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) { - _D("ail_appinfo_get_bool(handle, AIL_PROP_X_SLP_TASKMANAGE_BOOL, &valb) => valb is 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)); - if(info == NULL) { - _E("Failed to calloc _task_info\n"); - if(handle) { - ret = ail_package_destroy_appinfo(handle); - } - return -1; - } - - 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); - _D("%s\n", info->app_name); - - 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 deleted file mode 100755 index 98bf76f..0000000 --- a/src/_eina.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * org.tizen.taskmgr - * Copyright (c) 2012 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - - -#ifndef __TASKMANAGER_EINA_H__ -#define __TASKMANAGER_EINA_H__ - -#include - -#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 deleted file mode 100755 index a0012ee..0000000 --- a/src/_genlist.c +++ /dev/null @@ -1,854 +0,0 @@ -/* - * org.tizen.taskmgr - * Copyright (c) 2012 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#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_open_app(info->pkg_name); - selected = 0; - } else { - ret = aul_open_app(info->pkg_name); - 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 deleted file mode 100755 index ee47515..0000000 --- a/src/_genlist.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * org.tizen.taskmgr - * Copyright (c) 2012 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - - -#ifndef __TASKMANAGER_GENLIST_H__ -#define __TASKMANAGER_GENLIST_H__ - -#include -#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 deleted file mode 100755 index 1940a7e..0000000 --- a/src/_info.c +++ /dev/null @@ -1,134 +0,0 @@ -/* - * org.tizen.taskmgr - * Copyright (c) 2012 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - - -#include - -#include - -#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), - "%s", _("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 deleted file mode 100755 index e555f82..0000000 --- a/src/_info.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * org.tizen.taskmgr - * Copyright (c) 2012 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - - -#ifndef __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 deleted file mode 100755 index 8d9febe..0000000 --- a/src/_logic.c +++ /dev/null @@ -1,392 +0,0 @@ -/* - * org.tizen.taskmgr - * Copyright (c) 2012 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - - -#include -#include -#include -#include -#include - -#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); - if (ad->popup_ask) { - evas_object_del(ad->popup_ask); - ad->popup_ask = NULL; - } - 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; - Evas_Object *conform = NULL; - int w, h; - - ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h); - - retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n"); - ad->ending = EINA_FALSE; - - conform = elm_conformant_add(ad->win); - retvm_if(conform == NULL, -1, "Failed to add conformant \n"); - evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_win_resize_object_add(ad->win, conform); - evas_object_show(conform); - - ly = _add_layout_main(conform, EINA_TRUE, EINA_FALSE); - retvm_if(ly == NULL, -1, "Failed to add layout main\n"); - elm_object_content_set(conform, ly); - evas_object_resize(ly, w, h); - - 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"); - _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) { - _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); - if (ad->popup_ask) { - evas_object_del(ad->popup_ask); - ad->popup_ask = NULL; - } - 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"); - - switch (ad->mode) { - case MODE_END_INUSE: - if (ad->popup_ask) { - evas_object_del(ad->popup_ask); - ad->popup_ask = NULL; - } - _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); - _diable_popup(ad->popup_ask); - response_end_all_inuse(ad); - ad->killall_timer = ecore_timer_add(2.0, _kill_all_timer_cb, ad); - break; - - case MODE_DEL_HISTORY: - if (ad->popup_ask) { - evas_object_del(ad->popup_ask); - ad->popup_ask = NULL; - } - _D("del inuse\n"); - _del_popup_timer(ad); - response_del_history(ad); - break; - - case MODE_DEL_ALL_HISTORY: - if (ad->popup_ask) { - evas_object_del(ad->popup_ask); - ad->popup_ask = NULL; - } - _D("del all inuse\n"); - _del_popup_timer(ad); - response_del_all_history(ad); - break; - - case MODE_KILL_INUSE: - if (ad->popup_ask) { - evas_object_del(ad->popup_ask); - ad->popup_ask = NULL; - } - _D("kill all inuse\n"); - response_kill_inuse(ad); - break; - - case MODE_KILL_ALL_INUSE: - if (ad->popup_ask) { - evas_object_del(ad->popup_ask); - ad->popup_ask = NULL; - } - _D("kill all inuse\n"); - response_kill_all_inuse(ad); - break; - - default: - if (ad->popup_ask) { - evas_object_del(ad->popup_ask); - ad->popup_ask = NULL; - } - 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 deleted file mode 100755 index a99dfab..0000000 --- a/src/_logic.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * org.tizen.taskmgr - * Copyright (c) 2012 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - - -#ifndef __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 deleted file mode 100755 index ac33092..0000000 --- a/src/_progressbar.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * org.tizen.taskmgr - * Copyright (c) 2012 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - - -#include "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 deleted file mode 100755 index 56b5891..0000000 --- a/src/_progressbar.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * org.tizen.taskmgr - * Copyright (c) 2012 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - - -#ifndef __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 deleted file mode 100755 index 0686931..0000000 --- a/src/_util_efl.c +++ /dev/null @@ -1,290 +0,0 @@ -/* - * org.tizen.taskmgr - * Copyright (c) 2012 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - - -#include - -#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; -} - -void _diable_popup(void *data) -{ - Evas_Object *btn = NULL; - Evas_Object *eo = (Evas_Object *)data; - if(eo == NULL) { - printf("[Error] Invalid argument: popup is NULL\n"); - return; - } - - btn = elm_object_part_content_get(eo, "button1"); - if(btn) { - elm_object_disabled_set(btn, EINA_TRUE); - } - - btn = elm_object_part_content_get(eo, "button2"); - if(btn) { - elm_object_disabled_set(btn, EINA_TRUE); - } -} - -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 deleted file mode 100755 index 1c41009..0000000 --- a/src/_util_efl.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * org.tizen.taskmgr - * Copyright (c) 2012 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - - -#ifndef __TASKMANAGER_UTIL_EFL_H__ -#define __TASKMANAGER_UTIL_EFL_H__ - -#include - -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); -void _diable_popup(void *data); -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 deleted file mode 100755 index efd24e1..0000000 --- a/src/_util_log.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * org.tizen.taskmgr - * Copyright (c) 2012 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - - -#ifndef __TASKMANAGER_UTIL_LOG_H__ -#define __TASKMANAGER_UTIL_LOG_H__ - -#include -#include - -#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/item.c b/src/item.c new file mode 100644 index 0000000..b6ef2c2 --- /dev/null +++ b/src/item.c @@ -0,0 +1,707 @@ +/* + * Task Manager + * + * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include +#include +#include +#include + +#include "conf.h" +#include "item.h" +#include "list.h" +#include "log.h" +#include "main.h" +#include "scroller.h" +#include "util.h" + +#define PRIVATE_DATA_KEY_CLEAR "p_clr" +#define PRIVATE_DATA_KEY_NEXT_ITEM "p_n_it" +#define PRIVATE_DATA_KEY_ITEM_INNER_FOR_MOVING "p_in_mv" +#define PRIVATE_DATA_KEY_ITEM_ANIM_FOR_MOVING "p_an_mv" +#define PRIVATE_DATA_KEY_ITEM_X "p_it_x" +#define PRIVATE_DATA_KEY_ITEM_Y "p_it_y" +#define PRIVATE_DATA_KEY_ITEM_W "p_it_w" +#define PRIVATE_DATA_KEY_ITEM_H "p_it_h" +#define PRIVATE_DATA_KEY_DOWN_X "p_dw_x" +#define PRIVATE_DATA_KEY_DOWN_Y "p_dw_y" +#define PRIVATE_DATA_KEY_DOWN_TIME "p_dw_t" +#define PRIVATE_DATA_KEY_SCROLLED "p_sc" +#define PRIVATE_DATA_KEY_PRESSED "p_pre" +#define PRIVATE_DATA_KEY_ITEM_MOVED "p_it_mv" + +#define PRIVATE_MOVE_THRESHOLD 30 +#define PRIVATE_FLICK_TIME 100 +#define PRIVATE_ITEM_TERMINATE_THRESHOLD 2.0 +#define PRIVATE_ITEM_ALPHA 0.8 +#define PRIVATE_ITEM_ALPHA_MAX 100 + + + +extern list_type_default_s *item_get_info(Evas_Object *item) +{ + retv_if(!item, NULL); + list_type_default_s *info = NULL; + + info = evas_object_data_get(item, DATA_KEY_ITEM_INFO); + + return info; +} + + + +extern void item_clear_set_disable(Evas_Object *scroller) +{ + Evas_Object *clear_item = NULL; + ret_if(!scroller); + + clear_item = evas_object_data_get(scroller, PRIVATE_DATA_KEY_CLEAR); + ret_if(!clear_item); + elm_layout_signal_emit(main_get_info()->layout, "no,apps,txt,show", "no,apps,txt"); + elm_layout_signal_emit(clear_item, "no,apps", "clear"); + +} + + + +static void _clear_all_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + Evas_Object *scroller = data; + ret_if(!scroller); + _D(""); + scroller_pop_all_item(scroller, 1); +} + + + +extern Evas_Object *item_clear_all_create(Evas_Object *scroller) +{ + retv_if(!scroller, NULL); + + Evas_Object *clear_item = NULL; + + clear_item = elm_layout_add(scroller); + retv_if(!clear_item, NULL); + + if (!elm_layout_file_set(clear_item, ITEM_LAYOUT, "clear_item")) { + _E("Failed to set the layout"); + evas_object_del(clear_item); + return NULL; + } + + elm_object_part_text_set(clear_item, "name", _("IDS_TASKMGR_BUTTON_CLEAR_ALL")); + + elm_object_signal_callback_add(clear_item, "click", "clear_item", _clear_all_clicked_cb, scroller); + evas_object_data_set(scroller, PRIVATE_DATA_KEY_CLEAR, clear_item); + + evas_object_size_hint_weight_set(clear_item, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(clear_item); + + return clear_item; + +} + + + +extern void item_clear_all_destroy(Evas_Object *scroller) +{ + ret_if(!scroller); + + Evas_Object *clear_item = NULL; + + clear_item = evas_object_data_del(scroller, PRIVATE_DATA_KEY_CLEAR); + if (clear_item) evas_object_del(clear_item); +} + + + +static Evas_Object *_content_set_item_inner(Evas_Object *item_outer) +{ + Evas_Object *box = NULL; + Evas_Object *item_inner = NULL; + Evas_Object *next_item = NULL; + + box = main_get_info()->box; + retv_if(!box, NULL); + + item_inner = evas_object_data_get(item_outer, PRIVATE_DATA_KEY_ITEM_INNER_FOR_MOVING); + retv_if(!item_inner, NULL); + + next_item = evas_object_data_del(item_outer, PRIVATE_DATA_KEY_NEXT_ITEM); + + elm_box_unpack(box, item_outer); + elm_object_part_content_set(item_outer, "inner", item_inner); + + if (!next_item) { + elm_box_pack_end(box, item_outer); + } else { + elm_box_pack_before(box, item_outer, next_item); + } + return item_outer; +} + + + +static Evas_Object *_content_unset_item_inner(Evas_Object *item_outer) +{ + Evas_Object *box = NULL; + Evas_Object *item_inner = NULL; + Evas_Object *tmp_item = NULL; + Eina_List *list = NULL; + const Eina_List *l = NULL; + const Eina_List *ln = NULL; + + + box = main_get_info()->box; + retv_if(!box, NULL); + + item_inner = elm_object_part_content_unset(item_outer, "inner"); + retv_if(!item_inner, NULL); + evas_object_data_set(item_outer, PRIVATE_DATA_KEY_ITEM_INNER_FOR_MOVING, item_inner); + + list = elm_box_children_get(box); + retv_if(!list, NULL); + + EINA_LIST_FOREACH_SAFE(list, l, ln, tmp_item) { + if (item_outer != tmp_item) continue; + Evas_Object *next_item = eina_list_data_get(ln); + evas_object_data_set(item_outer, PRIVATE_DATA_KEY_NEXT_ITEM, next_item); + break; + } + eina_list_free(list); + + return item_outer; +} + + + +#define ANIM_RATE 5 +#define ANIM_RATE_SPARE ANIM_RATE - 1 +static Eina_Bool _anim_move_item(void *data) +{ + Evas_Object *scroller = NULL; + Evas_Object *item_inner = NULL; + Evas_Object *item_outer = NULL; + + int cur_x, cur_y; + int end_x, end_y; + int end_pos, cur_pos; + int vec_pos; + + item_outer = data; + goto_if(!data, ERROR); + + scroller = main_get_info()->scroller; + goto_if(!scroller, ERROR); + + item_inner = evas_object_data_get(item_outer, PRIVATE_DATA_KEY_ITEM_INNER_FOR_MOVING); + goto_if(!item_inner, ERROR); + + evas_object_geometry_get(item_inner, &cur_x, &cur_y, NULL, NULL); + evas_object_geometry_get(item_outer, &end_x, &end_y, NULL, NULL); + + end_pos = end_x; + vec_pos = (end_x - cur_x)/ANIM_RATE; + cur_x += vec_pos; + cur_pos = cur_x; + + if ((end_pos - cur_pos) < 0) { // Move : Right -> Left + evas_object_move(item_inner, cur_x, cur_y); + int alp = 255 - ((cur_pos - end_pos) * PRIVATE_ITEM_ALPHA) - 1; + if (alp < PRIVATE_ITEM_ALPHA_MAX) alp = PRIVATE_ITEM_ALPHA_MAX; + evas_object_color_set(item_inner, alp, alp, alp, alp); + + if (cur_pos - ANIM_RATE_SPARE <= end_pos) { + evas_object_move(item_inner, end_x, end_y); + goto_if (! _content_set_item_inner(item_outer), ERROR); + /* unfreeze the scroller after setting the content */ + scroller_unfreeze(scroller); + evas_object_data_del(item_outer, PRIVATE_DATA_KEY_ITEM_INNER_FOR_MOVING); + evas_object_data_del(item_outer, PRIVATE_DATA_KEY_ITEM_ANIM_FOR_MOVING); + return ECORE_CALLBACK_CANCEL; + } + } + else { // Move : Left -> Right + evas_object_move(item_inner, cur_x, cur_y); + int alp = 255 - ((end_pos - cur_pos) * PRIVATE_ITEM_ALPHA) - 1; + if (alp < PRIVATE_ITEM_ALPHA_MAX) alp = PRIVATE_ITEM_ALPHA_MAX; + evas_object_color_set(item_inner, alp, alp, alp, alp); + + if (cur_pos + ANIM_RATE_SPARE >= end_pos) { + evas_object_move(item_inner, end_x, end_y); + goto_if (NULL == _content_set_item_inner(item_outer), ERROR); + /* unfreeze the scroller after setting the content */ + scroller_unfreeze(scroller); + evas_object_data_del(item_outer, PRIVATE_DATA_KEY_ITEM_INNER_FOR_MOVING); + evas_object_data_del(item_outer, PRIVATE_DATA_KEY_ITEM_ANIM_FOR_MOVING); + return ECORE_CALLBACK_CANCEL; + } + } + return ECORE_CALLBACK_RENEW; + +ERROR: + if (item_outer) { + scroller_unfreeze(scroller); + evas_object_data_del(item_outer, PRIVATE_DATA_KEY_ITEM_INNER_FOR_MOVING); + evas_object_data_del(item_outer, PRIVATE_DATA_KEY_ITEM_ANIM_FOR_MOVING); + } + return ECORE_CALLBACK_CANCEL; +} + + + +#define SLIPPED_LENGTH 40 +static Eina_Bool _anim_slipped_item(void *data) +{ + Evas_Object *scroller = NULL; + Evas_Object *item_outer = data; + + int item_outer_w, item_outer_h; + + goto_if(!item_outer, ERROR); + + scroller = main_get_info()->scroller; + goto_if(!scroller, ERROR); + + item_outer_w = (int)evas_object_data_get(item_outer, PRIVATE_DATA_KEY_ITEM_W); + item_outer_h = (int)evas_object_data_get(item_outer, PRIVATE_DATA_KEY_ITEM_H); + + item_outer_h -= SLIPPED_LENGTH; + evas_object_size_hint_min_set(item_outer, item_outer_w, item_outer_h); + evas_object_data_set(item_outer, PRIVATE_DATA_KEY_ITEM_H, (void *)item_outer_h); + + if (item_outer_h <= 0) { + scroller_pop_item(scroller, item_outer, 1); + + if (scroller_count(scroller) < 2) { + item_clear_set_disable(scroller); + } + goto ERROR; + } + + return ECORE_CALLBACK_RENEW; + +ERROR: + if (item_outer) { + evas_object_data_del(item_outer, PRIVATE_DATA_KEY_ITEM_W); + evas_object_data_del(item_outer, PRIVATE_DATA_KEY_ITEM_H); + evas_object_data_del(item_outer, PRIVATE_DATA_KEY_ITEM_ANIM_FOR_MOVING); + } + return ECORE_CALLBACK_CANCEL; +} + + + +#define TERMINATE_LENGTH 60 +static Eina_Bool _anim_terminate_item(void *data) +{ + Evas_Object *item_outer = data; + Evas_Object *item_inner = NULL; + + int item_x, item_y, item_w, item_h, is_boundary = 0; + int outer_x, outer_y; + + goto_if(!item_outer, ERROR); + + item_inner = evas_object_data_get(item_outer, PRIVATE_DATA_KEY_ITEM_INNER_FOR_MOVING); + if(!item_inner) { + item_inner = elm_object_part_content_unset(item_outer, "inner"); + retv_if(!item_inner, ECORE_CALLBACK_CANCEL); + evas_object_data_set(item_outer, PRIVATE_DATA_KEY_ITEM_INNER_FOR_MOVING, item_inner); + } + + evas_object_geometry_get(item_inner, &item_x, &item_y, &item_w, &item_h); + evas_object_geometry_get(item_outer, &outer_x, &outer_y, NULL, NULL); + + if (item_x >= outer_x) { + item_x += TERMINATE_LENGTH; + } else { + item_x -= TERMINATE_LENGTH; + } + + if (item_x >= main_get_info()->root_w || (item_x + item_w) <= 0) { + is_boundary = 1; + } + + evas_object_move(item_inner, item_x, item_y); + + if (is_boundary) { + Evas_Object *scroller = NULL; + Ecore_Animator *anim = NULL; + + scroller = main_get_info()->scroller; + goto_if(!scroller, ERROR); + + /* unfreeze the scroller after setting the content */ + scroller_unfreeze(scroller); + evas_object_data_del(item_outer, PRIVATE_DATA_KEY_ITEM_INNER_FOR_MOVING); + evas_object_data_del(item_outer, PRIVATE_DATA_KEY_ITEM_ANIM_FOR_MOVING); + evas_object_color_set(item_inner, 255, 255, 255, 0); + elm_object_part_content_set(item_outer, "inner", item_inner); + + anim = evas_object_data_get(item_outer, PRIVATE_DATA_KEY_ITEM_ANIM_FOR_MOVING); + if (anim) { + ecore_animator_del(anim); + anim = NULL; + evas_object_data_del(item_outer, PRIVATE_DATA_KEY_ITEM_ANIM_FOR_MOVING); + } + anim = ecore_animator_add(_anim_slipped_item, item_outer); + goto_if(!anim, ERROR); + evas_object_data_set(item_outer, PRIVATE_DATA_KEY_ITEM_ANIM_FOR_MOVING, anim); + return ECORE_CALLBACK_CANCEL; + } + return ECORE_CALLBACK_RENEW; + +ERROR: + if (item_outer) { + evas_object_data_del(item_outer, PRIVATE_DATA_KEY_ITEM_INNER_FOR_MOVING); + evas_object_data_del(item_outer, PRIVATE_DATA_KEY_ITEM_ANIM_FOR_MOVING); + } + return ECORE_CALLBACK_CANCEL; +} + + + +static void _down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Evas_Event_Mouse_Down *ei = event_info; + Evas_Object *item_outer = data; + Evas_Object *item_inner = NULL; + + int x = ei->output.x; + int y = ei->output.y; + int down_time = ei->timestamp; + int rect_x, rect_y, rect_w, rect_h; + + ret_if(!item_outer); + + _D("Down (%d, %d)", x, y); + + item_inner = elm_object_part_content_get(item_outer, "inner"); + if (!item_inner) { + item_inner = evas_object_data_del(item_outer, PRIVATE_DATA_KEY_ITEM_INNER_FOR_MOVING); + ret_if(!item_inner); + elm_object_part_content_set(item_outer, "inner", item_inner); + } + + evas_object_data_set(item_outer, PRIVATE_DATA_KEY_PRESSED, (void *) 1); + evas_object_data_set(item_outer, PRIVATE_DATA_KEY_DOWN_X, (void *) x); + evas_object_data_set(item_outer, PRIVATE_DATA_KEY_DOWN_Y, (void *) y); + evas_object_data_set(item_outer, PRIVATE_DATA_KEY_DOWN_TIME, (void *)down_time); + + evas_object_geometry_get(item_outer, &rect_x, &rect_y, &rect_w, &rect_h); + evas_object_data_set(item_outer, PRIVATE_DATA_KEY_ITEM_X, (void *) rect_x); + evas_object_data_set(item_outer, PRIVATE_DATA_KEY_ITEM_Y, (void *) rect_y); + evas_object_data_set(item_outer, PRIVATE_DATA_KEY_ITEM_W, (void *) rect_w); + evas_object_data_set(item_outer, PRIVATE_DATA_KEY_ITEM_H, (void *) rect_h); +} + + + +#define LAUNCHING_LENGTH 60 +#define SCROLLER_THRESHOLD 15 +static void _move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Evas_Event_Mouse_Move *ei = event_info; + Evas_Object *item_outer = data; + + Evas_Object *layout = NULL; + Evas_Object *item_inner = NULL; + Evas_Object *scroller = NULL; + Ecore_Animator *anim = NULL; + + int down_x, down_y; + int outer_x, outer_y; + int cur_x, cur_y, vec_x, vec_y; + int alpha = 0; + + if (!item_outer) return; + if (!evas_object_data_get(item_outer, PRIVATE_DATA_KEY_PRESSED)) return; + + scroller = main_get_info()->scroller; + ret_if(!scroller); + if (scroller_is_scrolling(scroller)) { + evas_object_data_set(item_outer, PRIVATE_DATA_KEY_SCROLLED, (void *)1); + evas_object_data_del(item_outer, PRIVATE_DATA_KEY_PRESSED); + + return; + } + + layout = main_get_info()->layout; + ret_if(!layout); + + anim = evas_object_data_get(item_outer, PRIVATE_DATA_KEY_ITEM_ANIM_FOR_MOVING); + if (anim) return; + + down_x = (int) evas_object_data_get(item_outer, PRIVATE_DATA_KEY_DOWN_X); + down_y = (int) evas_object_data_get(item_outer, PRIVATE_DATA_KEY_DOWN_Y); + + outer_x = (int)evas_object_data_get(item_outer, PRIVATE_DATA_KEY_ITEM_X); + outer_y = (int)evas_object_data_get(item_outer, PRIVATE_DATA_KEY_ITEM_Y); + + cur_x = ei->cur.output.x; + cur_y = ei->cur.output.y; + + vec_x = cur_x - down_x; + vec_y = cur_y - down_y; + + outer_x += vec_x; + + if (!evas_object_data_get(item_outer, PRIVATE_DATA_KEY_ITEM_MOVED)) { + if (abs(vec_y) > abs(vec_x) + SCROLLER_THRESHOLD) { + evas_object_data_set(item_outer, PRIVATE_DATA_KEY_SCROLLED, (void *)1); + return; + } + if (abs(vec_x) <= PRIVATE_MOVE_THRESHOLD) return; + if (abs(vec_y) >= SCROLLER_THRESHOLD) return; + } + + evas_object_data_set(item_outer, PRIVATE_DATA_KEY_ITEM_MOVED, (void *) 1); + item_inner = evas_object_data_get(item_outer, PRIVATE_DATA_KEY_ITEM_INNER_FOR_MOVING); + if (!item_inner) { + /* freeze the scroller before unsetting the content */ + scroller_freeze(scroller); + ret_if(!_content_unset_item_inner(item_outer)); + } + + alpha = 255 -(abs(vec_x) * PRIVATE_ITEM_ALPHA); + if (alpha < PRIVATE_ITEM_ALPHA_MAX) { + alpha = PRIVATE_ITEM_ALPHA_MAX; + } + + evas_object_color_set(item_inner, alpha, alpha, alpha, alpha); + evas_object_move(item_inner, outer_x, outer_y); +} + + + +static void _item_terminate_anim(Evas_Object *item_outer) +{ + Ecore_Animator *anim = NULL; + + anim = evas_object_data_get(item_outer, PRIVATE_DATA_KEY_ITEM_ANIM_FOR_MOVING); + if (anim) { + ecore_animator_del(anim); + anim = NULL; + evas_object_data_del(item_outer, PRIVATE_DATA_KEY_ITEM_ANIM_FOR_MOVING); + } + + anim = ecore_animator_add(_anim_terminate_item, item_outer); + ret_if(!anim); + evas_object_data_set(item_outer, PRIVATE_DATA_KEY_ITEM_ANIM_FOR_MOVING, anim); +} + + + +static void _up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Evas_Event_Mouse_Up *ei = event_info; + Evas_Object *item_outer = data; + + Evas_Object *scroller = NULL; + + int x = ei->output.x; + int y = ei->output.y; + int up_time = ei->timestamp; + int down_time = 0; + int init_pos, item_pos, item_size, tm_threshold; + + _D("Up (%d, %d)", x, y); + + ret_if (!item_outer); + + scroller = main_get_info()->scroller; + ret_if(!scroller); + + evas_object_data_del(item_outer, PRIVATE_DATA_KEY_PRESSED); + evas_object_data_del(item_outer, PRIVATE_DATA_KEY_DOWN_Y); + evas_object_data_del(item_outer, PRIVATE_DATA_KEY_DOWN_X); + evas_object_data_del(item_outer, PRIVATE_DATA_KEY_ITEM_MOVED); + evas_object_data_del(item_outer, PRIVATE_DATA_KEY_SCROLLED); + + down_time = (int) evas_object_data_del(item_outer, PRIVATE_DATA_KEY_DOWN_TIME); + + /* This means the inner item has not been moved */ + Evas_Object *item_inner = evas_object_data_get(item_outer, PRIVATE_DATA_KEY_ITEM_INNER_FOR_MOVING); + if (!item_inner) return; + + init_pos = (int) evas_object_data_del(item_outer, PRIVATE_DATA_KEY_ITEM_X); + evas_object_data_del(item_outer, PRIVATE_DATA_KEY_ITEM_Y); + evas_object_geometry_get(item_inner, &item_pos, NULL, &item_size, NULL); + tm_threshold = item_size * PRIVATE_ITEM_TERMINATE_THRESHOLD; + + if (abs(item_pos - init_pos) > tm_threshold || (up_time - down_time < PRIVATE_FLICK_TIME && abs(item_pos - init_pos) > 0)) { + _item_terminate_anim(item_outer); + + } else if (item_pos != init_pos) { + Ecore_Animator *anim = NULL; + anim = evas_object_data_get(item_outer, PRIVATE_DATA_KEY_ITEM_ANIM_FOR_MOVING); + if (anim) { + ecore_animator_del(anim); + anim = NULL; + evas_object_data_del(item_outer, PRIVATE_DATA_KEY_ITEM_ANIM_FOR_MOVING); + } + + anim = ecore_animator_add(_anim_move_item, item_outer); + ret_if(NULL == anim); + evas_object_data_set(item_outer, PRIVATE_DATA_KEY_ITEM_ANIM_FOR_MOVING, anim); + } +} + + + +static void _clicked_cb(void *data, Evas_Object *obj, void *event_info) +{ + _D("Clicked"); + + ret_if(!data); + Evas_Object *item = data; + Evas_Object *item_inner = NULL; + + const char *appid = NULL; + + list_type_default_s *info = NULL; + + item_inner = elm_object_part_content_get(item, "inner"); + if (!item_inner) return; + + info = item_get_info(item); + ret_if(!info); + + appid = info->appid; + ret_if(!appid); + + util_launch_app(appid); + //layout_hide_with_timer(); +} + + + +extern Evas_Object *item_create(Evas_Object *scroller, list_type_default_s *info) +{ + retv_if(NULL == scroller, NULL); + retv_if(NULL == info, NULL); + + Evas_Object *focus = NULL; + Evas_Object *icon = NULL; + Evas_Object *item = NULL; + Evas_Object *item_inner = NULL; + + item = elm_layout_add(scroller); + retv_if(NULL == item, NULL); + elm_layout_file_set(item, ITEM_LAYOUT, "item"); + evas_object_size_hint_weight_set(item, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(item); + + item_inner = elm_layout_add(scroller); + goto_if(NULL == item_inner, ERROR); + elm_layout_file_set(item_inner, ITEM_LAYOUT, "item_inner"); + evas_object_size_hint_weight_set(item_inner, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(item_inner); + elm_object_part_content_set(item, "inner", item_inner); + evas_object_event_callback_add(item_inner, EVAS_CALLBACK_MOUSE_DOWN, _down_cb, item); + evas_object_event_callback_add(item_inner, EVAS_CALLBACK_MOUSE_MOVE, _move_cb, item); + evas_object_event_callback_add(item_inner, EVAS_CALLBACK_MOUSE_UP, _up_cb, item); + + icon = evas_object_image_add(main_get_info()->e); + goto_if(NULL == icon, ERROR); + evas_object_image_file_set(icon, info->icon, NULL); + evas_object_image_filled_set(icon, EINA_TRUE); + evas_object_show(icon); + elm_object_part_content_set(item_inner, "icon", icon); + elm_object_part_text_set(item_inner, "name", info->name); + + focus = elm_button_add(scroller); + goto_if(NULL == focus, ERROR); + elm_object_style_set(focus, "focus"); + elm_object_part_content_set(item, "focus", focus); + evas_object_smart_callback_add(focus, "clicked", _clicked_cb, item); + + evas_object_data_set(item, DATA_KEY_ITEM_INFO, info); + + return item; + +ERROR: + item_destroy(item); + return NULL; +} + + + +extern void item_destroy(Evas_Object *item) +{ + ret_if(!item); + + Evas_Object *focus = NULL; + Evas_Object *icon = NULL; + Evas_Object *item_inner = NULL; + + focus = elm_object_part_content_unset(item, "focus"); + if (focus) { + evas_object_del(focus); + } + + item_inner = elm_object_part_content_unset(item, "inner"); + if (!item_inner) { + _E("cannot get the object"); + evas_object_del(item); + return; + } + + icon = elm_object_part_content_unset(item_inner, "icon"); + if (icon) { + evas_object_del(icon); + } else { + _E("cannot get the object"); + } + + evas_object_data_del(item, DATA_KEY_ITEM_INFO); + + evas_object_del(item_inner); + evas_object_del(item); +} + + + +extern void item_terminate(Evas_Object *item) +{ + char *appid = NULL; + int ret; + bool running = false; + + ret_if(!item); + ret_if(!item_get_info(item)); + appid = item_get_info(item)->appid; + ret_if(!appid); + + ret = app_manager_is_running(appid, &running); + ret_if(APP_MANAGER_ERROR_NONE != ret); + + _D("Terminate: %s(%d)", appid, running); + if (running) { + util_kill_app(appid); + } + + if (0 != rua_delete_history_with_pkgname(appid)) { + _E("Cannot delete history for package(%s)", appid); + } +} + + + +//End of a file diff --git a/src/list.c b/src/list.c new file mode 100644 index 0000000..43bc501 --- /dev/null +++ b/src/list.c @@ -0,0 +1,375 @@ +/* + * Task Manager + * + * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include +#include +#include + +#include "list.h" +#include "log.h" +#include "main.h" +#include "util.h" + +typedef struct pkginfo { + char *appid; + bool taskmanage; + char *pkgid; + char *icon; + char *name; + bool nodisplay; +} private_pkginfo_s; + +typedef struct { + char *appid; + int pid; +} private_pid_s; + +static struct { + Eina_Hash *pkginfo_table; +} private_table_s = { + .pkginfo_table = NULL, +}; + + + +static void _pkglist_unretrieve_item(list_type_default_s *default_info) +{ + if (!default_info) { + return; + } + + if (default_info->name) { + free(default_info->name); + default_info->name = NULL; + } + if (default_info->icon) { + free(default_info->icon); + default_info->icon = NULL; + } + if (default_info->pkgid) { + free(default_info->pkgid); + default_info->pkgid = NULL; + } + if (default_info->arg) { + free(default_info->arg); + default_info->arg = NULL; + } + if (default_info->appid) { + free(default_info->appid); + default_info->appid = NULL; + } + if (default_info) { + free(default_info); + default_info = NULL; + } +} + + + +static list_type_default_s *_pkglist_retrieve_item(const char *appid, const char *arg, time_t launch_time) +{ + retv_if(!appid, NULL); + + private_pkginfo_s *pkg_info = NULL; + list_type_default_s *default_info = NULL; + + pkg_info = eina_hash_find(private_table_s.pkginfo_table, appid); + if (!pkg_info) { + _D("app(%s) is not taskmanage app", appid); + return NULL; + } + + if (!pkg_info->taskmanage) { + _D("app(%s) is not taskmanage app", appid); + return NULL; + } + + default_info = calloc(1, sizeof(*default_info)); + retv_if(!default_info, NULL); + + default_info->taskmanage = pkg_info->taskmanage; + default_info->launch_time = launch_time; + default_info->nodisplay = pkg_info->nodisplay; + + default_info->appid = strdup(appid); + goto_if(!default_info->appid, ERROR); + + if (arg) { + default_info->arg = strdup(arg); + goto_if(!default_info->arg, ERROR); + } + + if (pkg_info->pkgid) { + default_info->pkgid = strdup(pkg_info->pkgid); + goto_if(!default_info->pkgid, ERROR); + } else { + _E("Fail to get pkgid from pkg info table"); + goto ERROR; + } + + if (pkg_info->icon) { + default_info->icon = strdup(pkg_info->icon); + goto_if(!default_info->icon, ERROR); + } else { + _E("Fail to get icon from pkg info table"); + goto ERROR; + } + + if (pkg_info->name) { + default_info->name = strdup(pkg_info->name); + goto_if(!default_info->name, ERROR); + } else { + _E("Fail to get name from pkg info table"); + goto ERROR; + } + + _D("list add id : [%s], icon : [%s], name : [%s]", pkg_info->pkgid, pkg_info->icon, pkg_info->name); + + return default_info; + +ERROR: + + _pkglist_unretrieve_item(default_info); + return NULL; +} + + + +int _get_pkginfo_cb(pkgmgrinfo_appinfo_h app_handle, void *user_data) +{ + char *appid = NULL; + char *pkgid = NULL; + char *name = NULL; + char *icon = NULL; + private_pkginfo_s *pkg_info = NULL; + + pkg_info = calloc(1, sizeof(*pkg_info)); + retv_if(!pkg_info, PMINFO_R_ERROR); + + memset(pkg_info, 0, sizeof(private_pkginfo_s)); + + pkgmgrinfo_appinfo_get_appid(app_handle, &appid); + goto_if(!appid, ERROR); + + pkg_info->appid = strdup(appid); + goto_if(!pkg_info->appid, ERROR); + + if (PMINFO_R_OK != pkgmgrinfo_appinfo_is_taskmanage(app_handle, &pkg_info->taskmanage)) { + goto ERROR; + } + + if (PMINFO_R_OK != pkgmgrinfo_appinfo_get_pkgid(app_handle, &pkgid)) { + goto ERROR; + } + pkg_info->pkgid = strdup(pkgid); + goto_if(!pkg_info->pkgid, ERROR); + + if (PMINFO_R_OK != pkgmgrinfo_appinfo_get_icon(app_handle, &icon)) { + goto ERROR; + } + if (icon) { + pkg_info->icon= strdup(icon); + goto_if(!pkg_info->icon, ERROR); + } + + if (PMINFO_R_OK != pkgmgrinfo_appinfo_get_label(app_handle, &name)) { + goto ERROR; + } + if (name) { + pkg_info->name= strdup(name); + goto_if(!pkg_info->name, ERROR); + } + + if (PMINFO_R_OK != pkgmgrinfo_appinfo_is_nodisplay(app_handle, &pkg_info->nodisplay)) { + goto ERROR; + } + + eina_hash_add(private_table_s.pkginfo_table, pkg_info->appid, pkg_info); + + return PMINFO_R_OK; + +ERROR: + if (pkg_info->name) free(pkg_info->name); + if (pkg_info->icon) free(pkg_info->icon); + if (pkg_info->pkgid) free(pkg_info->pkgid); + if (pkg_info->appid) free(pkg_info->appid); + free(pkg_info); + + return PMINFO_R_ERROR; +} + + + +static task_mgr_error_e _create_pkginfo_table(void) +{ + _D(""); + pkgmgrinfo_appinfo_filter_h handle; + + int ret = 0; + + private_table_s.pkginfo_table = eina_hash_string_superfast_new(NULL); + + ret = pkgmgrinfo_appinfo_filter_create(&handle); + if (PMINFO_R_OK != ret) { + return TASK_MGR_ERROR_FAIL; + } + + ret = pkgmgrinfo_appinfo_filter_add_bool(handle, PMINFO_APPINFO_PROP_APP_TASKMANAGE, 1); + if (PMINFO_R_OK != ret) { + pkgmgrinfo_appinfo_filter_destroy(handle); + return TASK_MGR_ERROR_FAIL; + } + + ret = pkgmgrinfo_appinfo_filter_foreach_appinfo(handle, _get_pkginfo_cb, NULL); + if (ret != PMINFO_R_OK) { + pkgmgrinfo_appinfo_filter_destroy(handle); + return TASK_MGR_ERROR_FAIL; + } + + pkgmgrinfo_appinfo_filter_destroy(handle); + + return TASK_MGR_ERROR_NONE; +} + + + +static Eina_Bool _remove_pkginfo(const Eina_Hash *hash, const void *key, void *data, void *fdata) +{ + retv_if(!data, EINA_FALSE); + + private_pkginfo_s *pkg_info = data; + + if (pkg_info->name) free(pkg_info->name); + if (pkg_info->icon) free(pkg_info->icon); + if (pkg_info->pkgid) free(pkg_info->pkgid); + if (pkg_info->appid) free(pkg_info->appid); + + return EINA_TRUE; +} + + + +static void _destroy_pkginfo_table(void) +{ + _D(""); + + eina_hash_foreach(private_table_s.pkginfo_table, _remove_pkginfo, NULL); + eina_hash_free(private_table_s.pkginfo_table); + private_table_s.pkginfo_table = NULL; +} + + + +static int _launch_time_sort_cb(const void *d1, const void *d2) +{ + list_type_default_s *tmp1 = (list_type_default_s *) d1; + list_type_default_s *tmp2 = (list_type_default_s *) d2; + + if (!tmp1) return -1; + if (!tmp2) return 1; + + if (!tmp1->appid) return 1; + else if (!tmp2->appid) return -1; + + return tmp1->launch_time >= tmp2->launch_time ? -1 : 1; +} + + + +extern task_mgr_error_e list_sort(Eina_List *list, int (*_sort_cb)(const void *d1, const void *d2)) +{ + retv_if(!list, TASK_MGR_ERROR_INVALID_PARAMETER); + + list = eina_list_sort(list, eina_list_count(list), _sort_cb); + retv_if(!list, TASK_MGR_ERROR_FAIL); + + return TASK_MGR_ERROR_NONE; +} + + + +extern task_mgr_error_e list_create(Eina_List **pkg_list) +{ + _D(""); + + rua_init(); + char **table = NULL; + list_type_default_s *default_info = NULL; + + int nrows = 0, ncols = 0; + int row = 0; + + retv_if (TASK_MGR_ERROR_NONE != _create_pkginfo_table(), TASK_MGR_ERROR_FAIL); + + if (-1 == rua_history_load_db(&table, &nrows, &ncols)) { + if (table) { + rua_history_unload_db(&table); + } + return TASK_MGR_ERROR_FAIL; + } + + _D("Apps in rua history is %d", nrows); + + for (; row < nrows; row++) { + struct rua_rec rec_result = {0, }; + rua_history_get_rec(&rec_result, table, nrows, ncols, row); + default_info = _pkglist_retrieve_item(rec_result.pkg_name, rec_result.arg, rec_result.launch_time); + if (default_info) { + *pkg_list = eina_list_append(*pkg_list, default_info); + } + } + + if (*pkg_list && TASK_MGR_ERROR_NONE != list_sort(*pkg_list, _launch_time_sort_cb)) { + _E("Cannot sort pkg_list"); + } + + if (!eina_list_count(*pkg_list)) { + _D("list is empty."); + _pkglist_unretrieve_item(default_info); + return TASK_MGR_ERROR_NO_DATA; + + } + + return TASK_MGR_ERROR_NONE; +} + + + +extern void list_destroy(Eina_List *pkg_list) +{ + _D(""); + list_type_default_s *default_info = NULL; + + _destroy_pkginfo_table(); + + if (!pkg_list) { + _D("pkg_list is null"); + return; + } + + EINA_LIST_FREE(pkg_list, default_info) { + if (!default_info) { + continue; + } + _pkglist_unretrieve_item(default_info); + } + + pkg_list = NULL; + rua_fini(); +} diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..e7b7096 --- /dev/null +++ b/src/main.c @@ -0,0 +1,293 @@ +/* + * Task Manager + * + * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include +#include +#include +#include +#include + +#include "conf.h" +#include "item.h" +#include "list.h" +#include "log.h" +#include "main.h" +#include "scroller.h" +#include "util.h" + +#define KEY_BACK "XF86Back" +#define PRIVATE_DATA_KEY_LIST_TIMER "pri_list_tm" + +static main_s main_info = { + .e = NULL, + .win = NULL, + .layout = NULL, + .scroller = NULL, + .box = NULL, + .pkg_list = NULL, + + .root_w = 0, + .root_h = 0, +}; +//main_h main_info_h = &main_info; + + + +extern main_h main_get_info(void) +{ + return &main_info; +} + + + +static Eina_Bool _back_key_pressed(void *data, Evas_Object *obj, Evas_Object *src, Evas_Callback_Type type, void *event_info) +{ + _D(""); + Evas_Event_Key_Down *ev = event_info; + + if (type == EVAS_CALLBACK_KEY_DOWN && strncmp(KEY_BACK, ev->key, strlen(KEY_BACK)) == 0) { + _D("KEY PRESSED: %s", ev->key); + + elm_exit(); + return EINA_TRUE; + } else { + return EINA_FALSE; + } +} + + + +static task_mgr_error_e _create_layout(Evas_Object *parent) +{ + _D(""); + Evas_Object *layout = NULL; + Eina_Bool ret = EINA_FALSE; + + // create bg + main_info.bg = elm_bg_add(main_info.win); + if (!main_info.bg) { + _E("cannot create bg"); + evas_object_del(main_info.win); + } + + elm_win_resize_object_add(main_info.win, main_info.bg); + evas_object_color_set(main_info.bg, 0, 0, 0, BG_COLOR); + evas_object_show(main_info.bg); + + // create layout + layout = elm_layout_add(parent); + goto_if (!layout, ERROR); + + ret = elm_layout_file_set(layout, LAYOUT, "layout"); + goto_if(EINA_FALSE == ret, ERROR); + + evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_move(layout, 0, 0); + evas_object_resize(layout, main_info.root_w, main_info.root_h); + evas_object_show(layout); + + main_info.layout = layout; + + // create scroller + main_info.scroller = scroller_create(layout); + goto_if(!main_info.scroller, ERROR); + + return TASK_MGR_ERROR_NONE; + +ERROR: + if (layout) evas_object_del(layout); + if (main_info.bg) evas_object_del(main_info.bg); + evas_object_del(main_info.win); + return TASK_MGR_ERROR_FAIL; +} + + + +static void _destroy_layout(void) +{ + if (main_info.layout) { + evas_object_del(main_info.layout); + main_info.layout = NULL; + } +} + + + +static Eina_Bool _list_timer_cb(void *data) +{ + _D(""); + Evas_Object *clear_item = NULL; + task_mgr_error_e ret = TASK_MGR_ERROR_NONE; + + if (main_info.pkg_list) { + _D("Already loaded"); + goto END; + } + + clear_item = item_clear_all_create(main_info.scroller); + if (!clear_item) { + _E("Fail to create clear all button"); + return ECORE_CALLBACK_CANCEL; + } + scroller_push_item(main_info.scroller, clear_item); + + ret = list_create(&main_info.pkg_list); + elm_object_part_text_set(main_info.layout, "no,apps,txt", _("IDS_TASKMGR_NPBODY_NO_APPLICATIONS_ABB2")); + if (TASK_MGR_ERROR_NO_DATA == ret) { + _D("There is no application"); + item_clear_set_disable(main_info.scroller); + } else if (TASK_MGR_ERROR_NONE != ret) { + _E("Fail to create pkglist"); + goto END; + } + + goto_if(TASK_MGR_ERROR_NONE != scroller_push_all_item(main_info.scroller, main_info.pkg_list), END); + +END: + evas_object_data_del(main_info.win, PRIVATE_DATA_KEY_LIST_TIMER); + return ECORE_CALLBACK_CANCEL; +} + + + +static bool _create_cb(void *data) +{ + _D(""); + + Ecore_Timer *timer = NULL; + + main_info.win = elm_win_add(NULL, "Task-mgr", ELM_WIN_BASIC); + retv_if(!main_info.win, false); + + //elm_app_base_scale_set(2.2); + elm_win_screen_size_get(main_info.win, NULL, NULL, &main_info.root_w, &main_info.root_h); + _D("screen size is (%d, %d)", main_info.root_w, main_info.root_h); + + elm_object_event_callback_add(main_info.win, _back_key_pressed, NULL); + + elm_win_indicator_mode_set(main_info.win, ELM_WIN_INDICATOR_SHOW); + elm_win_indicator_opacity_set(main_info.win, ELM_WIN_INDICATOR_TRANSPARENT); + + elm_win_borderless_set(main_info.win, EINA_TRUE); + elm_win_alpha_set(main_info.win, EINA_TRUE); + evas_object_show(main_info.win); + + main_info.e = evas_object_evas_get(main_info.win); + + if (_create_layout(main_info.win) != TASK_MGR_ERROR_NONE) { + _E("Failed to create a layout"); + return false; + } + + //create the list + timer = evas_object_data_get(main_info.win, PRIVATE_DATA_KEY_LIST_TIMER); + if (timer) { + ecore_timer_del(timer); + } + + timer = ecore_timer_add(0.001f, _list_timer_cb, NULL); + if (timer) { + evas_object_data_set(main_info.win, PRIVATE_DATA_KEY_LIST_TIMER, timer); + } else { + _E("Cannot add a create list timer"); + } + + return true; +} + + + +static void _terminate_cb(void *data) +{ + _D(""); + + /* list destroy */ + list_destroy(main_info.pkg_list); + evas_object_data_del(main_info.win, PRIVATE_DATA_KEY_LIST_TIMER); + + elm_cache_all_flush(); + malloc_trim(0); + appcore_flush_memory(); + + scroller_destroy(main_info.layout); + _destroy_layout(); + + /** + * Even though the window is deleted automatically, + * It is good habit to delete window explicitly by your hands. + */ + + if (main_info.win) { + evas_object_del(main_info.win); + main_info.win = NULL; + } +} + + + +static void _app_control(app_control_h service, void *data) +{ + _D(""); + + return; +} + + + +static void _pause_cb(void *data) +{ + _D(""); + + elm_exit(); + return; +} + + + +static void _language_changed(app_event_info_h event_info, void *data) +{ + _D(""); +} + + + +int main(int argc, char **argv) +{ + int ret; + ui_app_lifecycle_callback_s lifecycle_callback = {0, }; + app_event_handler_h event_handlers[5] = {NULL, }; + + lifecycle_callback.create = _create_cb; + lifecycle_callback.terminate = _terminate_cb; + lifecycle_callback.pause = _pause_cb; + lifecycle_callback.resume = NULL; + lifecycle_callback.app_control = _app_control; + + ui_app_add_event_handler(&event_handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY, NULL, NULL); + ui_app_add_event_handler(&event_handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, NULL, NULL); + ui_app_add_event_handler(&event_handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED], APP_EVENT_DEVICE_ORIENTATION_CHANGED, NULL, NULL); + ui_app_add_event_handler(&event_handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, _language_changed, NULL); + ui_app_add_event_handler(&event_handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, NULL, NULL); + + ret = ui_app_main(argc, argv, &lifecycle_callback, &main_info); + + return ret; +} + +/* End of a file */ diff --git a/src/scroller.c b/src/scroller.c new file mode 100644 index 0000000..c6fbb64 --- /dev/null +++ b/src/scroller.c @@ -0,0 +1,437 @@ +/* + * Task Manager + * + * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + + #include + + #include "conf.h" + #include "item.h" + #include "list.h" + #include "log.h" + #include "main.h" + #include "scroller.h" + #include "util.h" + +#define PRIVATE_DATA_KEY_DRAG "pri_drag" +#define PRIVATE_DATA_KEY_MOUSE_DOWN "pri_m_dw" +#define PRIVATE_DATA_KEY_POP_ALL_TIMER "pri_pop_tm" +#define PRIVATE_DATA_KEY_REVERSE_LIST "pri_re_li" +#define PRIVATE_DATA_KEY_TERMINATE "pri_tm" + + + +extern task_mgr_error_e scroller_push_item(Evas_Object *scroller, Evas_Object *item) +{ + _D(""); + retv_if(!scroller, TASK_MGR_ERROR_INVALID_PARAMETER); + retv_if(!item, TASK_MGR_ERROR_INVALID_PARAMETER); + + Evas_Object *box_layout = NULL; + Evas_Object *box = NULL; + + box_layout = elm_object_content_get(scroller); + retv_if(!box_layout, TASK_MGR_ERROR_FAIL); + + box = elm_object_part_content_get(box_layout, BOX_GROUP_NAME); + retv_if(!box, TASK_MGR_ERROR_FAIL); + + elm_box_pack_end(box, item); + + return TASK_MGR_ERROR_NONE; +} + + + +extern void scroller_pop_item(Evas_Object *scroller, Evas_Object *item, int terminate) +{ + ret_if(!scroller); + ret_if(!item); + + Evas_Object *box_layout = NULL; + Evas_Object *box = NULL; + Evas_Object *tmp_item = NULL; + + Eina_List *list = NULL; + const Eina_List *l = NULL; + const Eina_List *ln = NULL; + + box_layout = elm_object_content_get(scroller); + ret_if(!box_layout); + + box = elm_object_part_content_get(box_layout, BOX_GROUP_NAME); + ret_if(!box); + + list = elm_box_children_get(box); + ret_if(!list); + + EINA_LIST_FOREACH_SAFE(list, l, ln, tmp_item) { + if (item != tmp_item) continue; + if (terminate) item_terminate(item); + + elm_box_unpack(box, item); + item_destroy(item); + break; + } + eina_list_free(list); +} + + + +extern task_mgr_error_e scroller_push_all_item(Evas_Object *scroller, Eina_List *list) +{ + const Eina_List *l = NULL; + const Eina_List *ln = NULL; + list_type_default_s *info = NULL; + Evas_Object *item = NULL; + + if (!list) { + _D("No app in the history list"); + return TASK_MGR_ERROR_NONE; + } + + EINA_LIST_FOREACH_SAFE(list, l, ln, info) { + if (!info) continue; + item = item_create(scroller, info); + continue_if(!item); + scroller_push_item(scroller, item); + } + + return TASK_MGR_ERROR_NONE; +} + + + +static Eina_Bool _pop_all_item_cb(void *data) +{ + Evas_Object *scroller = data; + Evas_Object *item = NULL; + Eina_List *list = NULL; + static int i = 0; + int count = 0; + int terminate = (int) evas_object_data_get(scroller, PRIVATE_DATA_KEY_TERMINATE); + + list = evas_object_data_get(scroller, PRIVATE_DATA_KEY_REVERSE_LIST); + goto_if(!list, END); + + count = eina_list_count(list); + _D("remove list count(include clear button) : %d", count); + if (i >= count-1) goto END; + + item = eina_list_nth(list, i); + i++; + goto_if(!item, END); + + scroller_pop_item(scroller, item, terminate); + return ECORE_CALLBACK_RENEW; + +END: + i = 0; + eina_list_free(list); + evas_object_data_del(scroller, PRIVATE_DATA_KEY_REVERSE_LIST); + evas_object_data_del(scroller, PRIVATE_DATA_KEY_TERMINATE); + evas_object_data_del(scroller, PRIVATE_DATA_KEY_POP_ALL_TIMER); + item_clear_set_disable(scroller); + + return ECORE_CALLBACK_CANCEL; +} + + + +extern void scroller_pop_all_item(Evas_Object *scroller, int terminate) +{ + Evas_Object *box_layout = NULL; + Evas_Object *box = NULL; + Eina_List *list = NULL; + Eina_List *reverse_list = NULL; + Ecore_Timer *timer = NULL; + + ret_if(!scroller); + + timer = evas_object_data_del(scroller, PRIVATE_DATA_KEY_POP_ALL_TIMER); + if (timer) { + _D("There is already a timer for popping all items."); + ecore_timer_del(timer); + } + + /* An user tap the end all button, all items have to be terminated even if paused. */ + if (!evas_object_data_get(scroller, PRIVATE_DATA_KEY_TERMINATE)) { + evas_object_data_set(scroller, PRIVATE_DATA_KEY_TERMINATE, (void *) terminate); + } + + box_layout = elm_object_content_get(scroller); + ret_if(!box_layout); + + box = elm_object_part_content_get(box_layout, BOX_GROUP_NAME); + ret_if(!box); + + list = elm_box_children_get(box); + if (!list) return; + + /* This reverse list should be freed in the timer */ + reverse_list = eina_list_reverse_clone(list); + eina_list_free(list); + ret_if(!reverse_list); + evas_object_data_set(scroller, PRIVATE_DATA_KEY_REVERSE_LIST, reverse_list); + + timer = ecore_timer_add(0.01f, _pop_all_item_cb, scroller); + if (!timer) { + _E("Cannot add a timer"); + evas_object_data_del(scroller, PRIVATE_DATA_KEY_REVERSE_LIST); + evas_object_data_del(scroller, PRIVATE_DATA_KEY_TERMINATE); + eina_list_free(reverse_list); + return; + } + + evas_object_data_set(scroller, PRIVATE_DATA_KEY_POP_ALL_TIMER, timer); +} + + + +extern int scroller_count(Evas_Object *scroller) +{ + Evas_Object *box_layout = NULL; + Evas_Object *box = NULL; + Eina_List *list = NULL; + + retv_if(!scroller, 0); + + box_layout = elm_object_content_get(scroller); + retv_if(!box_layout, 0); + + box = elm_object_part_content_get(box_layout, BOX_GROUP_NAME); + retv_if(!box, 0); + + list = elm_box_children_get(box); + if (!list) { + _D("list is null"); + return 0; + } + + return eina_list_count(list); +} + + + +extern Eina_Bool scroller_is_scrolling(Evas_Object *scroller) +{ + return evas_object_data_get(scroller, DATA_KEY_IS_SCROLLING)? EINA_TRUE:EINA_FALSE; +} + + + +extern void scroller_freeze(Evas_Object *scroller) +{ + Evas_Object *box_layout = NULL; + Evas_Object *box = NULL; + + ret_if(!scroller); + + box_layout = elm_object_content_get(scroller); + ret_if(!box_layout); + + box = elm_object_part_content_get(box_layout, BOX_GROUP_NAME); + ret_if(!box); + + elm_object_scroll_freeze_push(box); +} + + + +extern void scroller_unfreeze(Evas_Object *scroller) +{ + Evas_Object *box_layout = NULL; + Evas_Object *box = NULL; + + ret_if(!scroller); + + box_layout = elm_object_content_get(scroller); + ret_if(!box_layout); + + box = elm_object_part_content_get(box_layout, BOX_GROUP_NAME); + ret_if(!box); + + while (elm_object_scroll_freeze_get(box)) { + elm_object_scroll_freeze_pop(box); + } +} + + + +static void _mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + _D("Mouse is down"); + evas_object_data_set(obj, PRIVATE_DATA_KEY_MOUSE_DOWN, (void *) 1); +} + + + +static void _mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + _D("Mouse is up"); + evas_object_data_del(obj, PRIVATE_DATA_KEY_MOUSE_DOWN); + if (evas_object_data_get(obj, PRIVATE_DATA_KEY_DRAG)) return; + evas_object_data_del(obj, DATA_KEY_IS_SCROLLING); +} + + + +static void _anim_start_cb(void *data, Evas_Object *scroller, void *event_info) +{ + _D("start the scroller animation"); + evas_object_data_set(scroller, DATA_KEY_IS_SCROLLING, (void *) 1); +} + + + +static void _anim_stop_cb(void *data, Evas_Object *scroller, void *event_info) +{ + _D("stop the scroller animation"); + if (evas_object_data_get(scroller, PRIVATE_DATA_KEY_MOUSE_DOWN)) return; + evas_object_data_del(scroller, DATA_KEY_IS_SCROLLING); +} + + + +static void _drag_start_cb(void *data, Evas_Object *scroller, void *event_info) +{ + _D("start to drag the scroller animation"); + evas_object_data_set(scroller, PRIVATE_DATA_KEY_DRAG, (void *) 1); +} + + + +static void _drag_stop_cb(void *data, Evas_Object *scroller, void *event_info) +{ + _D("stop to drag the scroller animation"); + evas_object_data_del(scroller, PRIVATE_DATA_KEY_DRAG); +} + + + +static void _scroll_cb(void *data, Evas_Object *scroller, void *event_info) +{ + evas_object_data_set(scroller, DATA_KEY_IS_SCROLLING, (void *) 1); +} + + + +extern Evas_Object *scroller_create(Evas_Object *layout) +{ + retv_if(!layout, NULL); + + Evas_Object *box = NULL; + Evas_Object *box_layout = NULL; + Evas_Object *scroller = NULL; + + scroller = elm_scroller_add(layout); + retv_if(!scroller, NULL); + + elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_FALSE); + elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF); + //elm_object_style_set(scroller, "list_effect"); + elm_object_focus_allow_set(scroller, EINA_FALSE); + elm_object_part_content_set(layout, "scroller", scroller); + evas_object_show(scroller); + + evas_object_event_callback_add(scroller, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb, NULL); + evas_object_event_callback_add(scroller, EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb, NULL); + evas_object_smart_callback_add(scroller, "scroll,anim,start", _anim_start_cb, NULL); + evas_object_smart_callback_add(scroller, "scroll,anim,stop", _anim_stop_cb, NULL); + evas_object_smart_callback_add(scroller, "scroll,drag,start", _drag_start_cb, NULL); + evas_object_smart_callback_add(scroller, "scroll,drag,stop", _drag_stop_cb, NULL); + evas_object_smart_callback_add(scroller, "scroll", _scroll_cb, NULL); + /* Because change an align in box, use the layout betweein box and scroller. */ + + box_layout = elm_layout_add(scroller); + if (!box_layout) { + _E("Fail to create box layout"); + evas_object_del(scroller); + return NULL; + } + elm_layout_file_set(box_layout, BOX_LAYOUT, BOX_GROUP_NAME); + evas_object_size_hint_align_set(box_layout, 0.5, 1.0); + evas_object_size_hint_weight_set(box_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(box_layout); + elm_object_content_set(scroller, box_layout); + + box = elm_box_add(scroller); + if (!box) { + _E("Fail to create box"); + evas_object_del(box_layout); + evas_object_del(scroller); + return NULL; + } + elm_box_horizontal_set(box, EINA_FALSE); + evas_object_size_hint_align_set(box, 0.5, 1.0); + evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_part_content_set(box_layout, BOX_GROUP_NAME, box); + evas_object_show(box); + main_get_info()->box = box; + + return scroller; +} + + + +void scroller_destroy(Evas_Object *scroller) +{ + ret_if(!scroller); + + Evas_Object *item = NULL; + Evas_Object *box_layout = NULL; + Evas_Object *box = NULL; + Eina_List *list = NULL; + + ret_if(!scroller); + scroller_pop_all_item(scroller, 0); + + box_layout = elm_object_content_unset(scroller); + ret_if(!box_layout); + + box = elm_object_part_content_unset(box_layout, BOX_GROUP_NAME); + ret_if(!box); + + list = elm_box_children_get(box); + if (!list) { + _D("list is empty"); + return; + } + + EINA_LIST_FREE(list, item) { + if (!item) break; + item_destroy(item); + } + free(list); + + evas_object_del(box); + evas_object_del(box_layout); + + evas_object_event_callback_del(scroller, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb); + evas_object_event_callback_del(scroller, EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb); + evas_object_smart_callback_del(scroller, "scroll,anim,start", _anim_start_cb); + evas_object_smart_callback_del(scroller, "scroll,anim,stop", _anim_stop_cb); + evas_object_smart_callback_del(scroller, "scroll,drag,start", _drag_start_cb); + evas_object_smart_callback_del(scroller, "scroll,drag,stop", _drag_stop_cb); + evas_object_smart_callback_del(scroller, "scroll", _scroll_cb); + + evas_object_del(scroller); +} + + + +/* End of the file */ diff --git a/src/taskmanager.c b/src/taskmanager.c deleted file mode 100755 index eea7997..0000000 --- a/src/taskmanager.c +++ /dev/null @@ -1,301 +0,0 @@ -/* - * org.tizen.taskmgr - * Copyright (c) 2012 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#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 deleted file mode 100755 index 21082bc..0000000 --- a/src/taskmanager.h +++ /dev/null @@ -1,133 +0,0 @@ -/* - * org.tizen.taskmgr - * Copyright (c) 2012 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - - -#ifndef __TASKMANAGER_H__ -#define __TASKMANAGER_H__ - -#include -#include -#include -#include - -#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___ */ diff --git a/src/util.c b/src/util.c new file mode 100644 index 0000000..3dba7a6 --- /dev/null +++ b/src/util.c @@ -0,0 +1,110 @@ +/* + * Task Manager + * + * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include +#include +//#include +#include +#include + +#include "log.h" +#include "util.h" + + + +extern Eina_Bool util_kill_app(const char *appid) +{ + app_context_h context = NULL; + Eina_Bool ret = EINA_TRUE; + + retv_if(!appid, EINA_FALSE); + + ret = app_manager_get_app_context(appid, &context); + if (ret != APP_MANAGER_ERROR_NONE) { + _E("fail to app_manager_get_app_context(%d)", ret); + return EINA_FALSE; + } + + ret = app_manager_terminate_app(context); + app_context_destroy(context); + + if (ret != APP_MANAGER_ERROR_NONE) { + _E("fail to terminate_app (%d)", ret); + return EINA_FALSE; + } + + _D("terminate app = %s", appid); + + return ret; +} + + + +extern Eina_Bool util_launch_app(const char *appid) +{ + int ret; + bool running = false; + + if (!appid || strlen(appid) == 0) { + _E("Fail to launch, due to Null appid."); + return EINA_FALSE; + } + _D("Launching: %s", appid); + ret = app_manager_is_running(appid, &running); + retv_if(APP_MANAGER_ERROR_NONE != ret, EINA_FALSE); + + if (running) { + _D("THE APP IS RUNNING"); + + app_context_h context = NULL; + ret = app_manager_get_app_context(appid, &context); + if (ret != APP_MANAGER_ERROR_NONE) { + _E("fail to app_manager_get_app_context(%d)", ret); + return EINA_FALSE; + } + + ret = app_manager_resume_app(context); + app_context_destroy(context); + + if (ret != APP_MANAGER_ERROR_NONE) { + _E("fail to app_manager_resume_app(%d)", ret); + return EINA_FALSE; + } + + } else { + _D("THE APP IS NOT RUNNING"); + + app_control_h service = NULL; + retv_if(APP_CONTROL_ERROR_NONE != app_control_create(&service), EINA_FALSE); + retv_if(!service, EINA_FALSE); + + app_control_set_operation(service, APP_CONTROL_OPERATION_MAIN); + app_control_set_app_id(service, appid); + + ret = app_control_send_launch_request(service, NULL, NULL); + (void)app_control_destroy(service); + retv_if(APP_CONTROL_ERROR_NONE != ret, EINA_FALSE); + } + + return EINA_TRUE; +} + + + +//End of file -- 2.7.4