From: “vijay.tiwari” Date: Fri, 2 Sep 2016 07:47:31 +0000 (+0530) Subject: Recents (TaskManager) App for tizen wearable 3.0 X-Git-Tag: submit/tizen/20160908.064755^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=11ecf583dd62509f6c231f0790ceffca3e3c1a5b;p=profile%2Fwearable%2Fapps%2Fnative%2Ftaskmanager.git Recents (TaskManager) App for tizen wearable 3.0 Change-Id: Ibf1a7080fcbb62286b595d6c44e49b924ef01d3c --- diff --git a/.cproject b/.cproject new file mode 100644 index 0000000..70f107d --- /dev/null +++ b/.cproject @@ -0,0 +1,561 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.exportMap b/.exportMap new file mode 100644 index 0000000..43e310e --- /dev/null +++ b/.exportMap @@ -0,0 +1,4 @@ +{ + global: main; + local: *; +}; diff --git a/.package-stamp b/.package-stamp new file mode 100644 index 0000000..40cbe59 --- /dev/null +++ b/.package-stamp @@ -0,0 +1 @@ +TPK \ No newline at end of file diff --git a/.project b/.project new file mode 100644 index 0000000..21fd70c --- /dev/null +++ b/.project @@ -0,0 +1,46 @@ + + + taskmanager + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + + + 0 + + 26 + + org.eclipse.ui.ide.multiFilter + 1.0-projectRelativePath-matches-false-false-*/.tpk + + + + 0 + + 6 + + org.eclipse.ui.ide.multiFilter + 1.0-name-matches-false-false-project_def.prop + + + + diff --git a/.rds_delta b/.rds_delta new file mode 100644 index 0000000..7987727 --- /dev/null +++ b/.rds_delta @@ -0,0 +1,6 @@ +#delete +#add +#modify +author-signature.xml +signature1.xml +bin/task-mgr diff --git a/.sdk_delta.info b/.sdk_delta.info new file mode 100644 index 0000000..fb0e4f2 Binary files /dev/null and b/.sdk_delta.info differ diff --git a/.tproject b/.tproject new file mode 100644 index 0000000..de5a150 --- /dev/null +++ b/.tproject @@ -0,0 +1,12 @@ + + + + + wearable-3.0 + + + + + + + diff --git a/AUTHORS b/AUTHORS index 566bee7..15bcfc4 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,2 +1 @@ -Hong Kwon -Minho Kim +Vijay Tiwari \ No newline at end of file diff --git a/Build/appendix.mk b/Build/appendix.mk new file mode 100644 index 0000000..2e06c34 --- /dev/null +++ b/Build/appendix.mk @@ -0,0 +1 @@ +# Appendix diff --git a/Build/basedef.mk b/Build/basedef.mk new file mode 100644 index 0000000..7cacafc --- /dev/null +++ b/Build/basedef.mk @@ -0,0 +1,14 @@ +# Add inputs and outputs from these tool invocations to the build variables + +C_DEPS += + +SYSROOT := $(SBI_SYSROOT) + +ROOTSTRAP_INCS := $(addprefix -I $(SYSROOT)/,$(PLATFORM_INCS_EX)) +EFL_INCS := + +RS_LIBRARIES := $(addprefix -l,$(RS_LIBRARIES_EX)) + +PLATFORM_INCS := $(ROOTSTRAP_INCS) $(EFL_INCS) \ + -I"$(SDK_PATH)/library" + diff --git a/Build/flags.mk b/Build/flags.mk new file mode 100644 index 0000000..0ee8efb --- /dev/null +++ b/Build/flags.mk @@ -0,0 +1,16 @@ + +DEBUG_OP = -g3 +CPP_DEBUG_OP = + +OPTIMIZATION_OP = -O0 +CPP_OPTIMIZATION_OP = + +COMPILE_FLAGS = $(DEBUG_OP) $(OPTIMIZATION_OP) -Wall -c -fmessage-length=0 + +CPP_COMPILE_FLAGS = $(CPP_DEBUG_OP) $(CPP_OPTIMIZATION_OP) + +LINK_FLAGS = + +AR_FLAGS = + +EDC_COMPILE_FLAGS = \ No newline at end of file diff --git a/Build/makefile b/Build/makefile new file mode 100644 index 0000000..4e2d6c5 --- /dev/null +++ b/Build/makefile @@ -0,0 +1,275 @@ +BUILD_SCRIPT_VERSION := 1.0.7 + +all : app_build + +clean : app_clean + +version : make_version + + +BSLASH := \\# +BSLASH2SLASH = $(subst $(BSLASH),/,$(1)) +REMOVE_TAIL = $(patsubst %/,%,$(1)) + +PROJ_ROOT := $(call BSLASH2SLASH,$(PROJPATH)) + +-include $(PROJ_ROOT)/project_def.prop +-include basedef.mk +-include tooldef.mk +-include flags.mk +-include prepost.mk + +APPTYPE := $(type) + +OBJ_OUTPUT := $(call BSLASH2SLASH,$(OUTPUT_DIR)/objs) + +OS_NAME = $(shell $(UNAME)) + +#LOWER_APPNAME := $(shell echo translit($(APPNAME),[A-Z],[a-z])|$(M4)) +LOWER_APPNAME := $(shell echo $(APPNAME)|$(TR) [A-Z] [a-z]) + +ifeq ($(strip $(APPTYPE)),app) +APPFILE := $(OUTPUT_DIR)/$(LOWER_APPNAME) +endif +ifeq ($(strip $(APPTYPE)),staticLib) +APPFILE := $(OUTPUT_DIR)/lib$(LOWER_APPNAME).a +endif +ifeq ($(strip $(APPTYPE)),sharedLib) +APPFILE := $(OUTPUT_DIR)/lib$(LOWER_APPNAME).so +endif + +ifneq ($(strip $(PLATFORM_INCS)),) +PLATFORM_INCS_FILE := $(OBJ_OUTPUT)/platform_incs_file.inc +endif + +FIND_FILES = $(shell $(FIND) $(PROJ_ROOT)/$(dir $(1)) -type f -name $(notdir $(1)) -printf '$(dir $(1))%P ') + +NORMAL_SRCS := $(filter-out %*.c %*.cpp,$(USER_SRCS)) +WIDLCARD_SRCS := $(filter %*.c %*.cpp,$(USER_SRCS)) +ALL_SRCS := $(NORMAL_SRCS) $(foreach var,$(WIDLCARD_SRCS),$(call FIND_FILES,$(var))) + +C_SRCS := $(filter %.c,$(ALL_SRCS)) +CPP_SRCS := $(filter %.cpp,$(ALL_SRCS)) + +USER_EDCS := $(subst $(BSLASH),/,$(USER_EDCS)) +NORMAL_EDCS := $(filter-out %*.edc,$(USER_EDCS)) +WIDLCARD_EDCS := $(filter %*.edc,$(USER_EDCS)) +EDCS := $(NORMAL_EDCS) $(foreach var,$(WIDLCARD_EDCS),$(call FIND_FILES,$(var))) + +NORMAL_POS := $(filter-out %*.po,$(USER_POS)) +WIDLCARD_POS := $(filter %*.po,$(USER_POS)) +POS := $(NORMAL_POS) $(foreach var,$(WIDLCARD_POS),$(call FIND_FILES,$(var))) + +LIBPATHS := $(addprefix -L$(PROJ_ROOT)/,$(USER_LIB_DIRS)) \ + $(addprefix -L,$(USER_LIB_DIRS_ABS)) +LIBS += $(addprefix -l,$(USER_LIBS)) +UOBJS := $(addprefix $(PROJ_ROOT)/,$(USER_OBJS)) \ + $(USER_OBJS_ABS) + +M_OPT = -MMD -MP -MF"$(@:%.o=%.d)" + +FUNC_C2O = $(patsubst %.c,$(OBJ_OUTPUT)/%.o,$(1)) +FUNC_CPP2O = $(patsubst %.cpp,$(OBJ_OUTPUT)/%.o,$(1)) +FUNC_EDC2EDJ = $(patsubst %.edc,$(OUTPUT_DIR)/%.edj,$(1)) +FUNC_PO2MO = $(patsubst %.po,$(OUTPUT_DIR)/res/locale/%/LC_MESSAGES/$(LOWER_APPNAME).mo,$(notdir $(1))) + + +C_OBJS := $(call FUNC_C2O,$(C_SRCS)) +CPP_OBJS := $(call FUNC_CPP2O,$(CPP_SRCS)) +OBJS := $(C_OBJS) $(CPP_OBJS) +EDJ_FILES := $(call FUNC_EDC2EDJ,$(EDCS)) +MO_FILES := $(call FUNC_PO2MO,$(POS)) +DEPS := $(OBJS:.o=.d) + + +ifneq ($(strip $(DEPS)),) +-include $(DEPS) +endif + +ifeq ($(strip $(APPTYPE)),app) +$(APPFILE) : $(OBJS) $(UOBJS) + @echo ' Building target: $@' + @echo ' Invoking: C/C++ Linker' + @$(MKDIR) $(MKDIR_OP) $(subst $(BSLASH),/,$(@D)) + $(CXX) -o "$(APPFILE)" $(OBJS) $(UOBJS) $(LIBPATHS) -Xlinker --as-needed $(LIBS) $(LINK_FLAGS) $(TC_LINKER_MISC) $(RS_LINKER_MISC) -pie -lpthread -Xlinker -rpath="/home/developer/sdk_tools/lib" --sysroot="$(SYSROOT)" -Xlinker --version-script="$(PROJ_PATH)/.exportMap" -L"$(SBI_SYSROOT)/usr/lib" $(RS_LIBRARIES) -Xlinker -rpath="/opt/usr/apps/$(APPID)/lib" -Werror-implicit-function-declaration + @echo ' Finished building target: $@' +endif +ifeq ($(strip $(APPTYPE)),staticLib) +$(APPFILE) : $(OBJS) $(UOBJS) + @echo ' Building target: $@' + @echo ' Invoking: Archive utility' + @$(MKDIR) $(MKDIR_OP) $(subst $(BSLASH),/,$(@D)) + $(AR) -r "$(APPFILE)" $(OBJS) $(UOBJS) $(AR_FLAGS) + @echo ' Finished building target: $@' +endif +ifeq ($(strip $(APPTYPE)),sharedLib) +$(APPFILE) : $(OBJS) $(UOBJS) + @echo ' Building target: $@' + @echo ' Invoking: C/C++ Linker' + @$(MKDIR) $(MKDIR_OP) $(subst $(BSLASH),/,$(@D)) + $(CXX) -o "$(APPFILE)" $(OBJS) $(UOBJS) $(LIBPATHS) -Xlinker --as-needed $(LIBS) $(LINK_FLAGS) $(TC_LINKER_MISC) $(RS_LINKER_MISC) -shared -lpthread --sysroot="$(SYSROOT)" -L"$(SYSROOT)/usr/lib" $(RS_LIBRARIES) + @echo ' Finished building target: $@' +endif + + +ifneq ($(strip $(C_SRCS)),) +CDEFS += $(addprefix -D,$(USER_DEFS)) +CDEFS += $(addprefix -U,$(USER_UNDEFS)) + +INCS := $(addprefix -I$(PROJ_ROOT)/,$(USER_INC_DIRS)) \ + $(addprefix -I,$(USER_INC_DIRS_ABS)) \ + $(addprefix -include$(PROJ_ROOT)/,$(USER_INC_FILES)) \ + $(addprefix -include,$(USER_INC_FILES_ABS)) + +$(C_OBJS) : $(OBJ_OUTPUT)/%.o : $(PROJ_ROOT)/%.c $(PLATFORM_INCS_FILE) + @echo ' Building file: $<' + @echo ' Invoking: C Compiler' + @$(MKDIR) $(MKDIR_OP) $(subst $(BSLASH),/,$(@D)) +ifeq ($(strip $(APPTYPE)),sharedLib) + $(CC) -c $< -o $@ $(CDEFS) $(INCS) -I"pch" $(COMPILE_FLAGS) $(TC_COMPILER_MISC) $(RS_COMPILER_MISC) -fPIC --sysroot="$(SYSROOT)" -Werror-implicit-function-declaration $(M_OPT) @$(PLATFORM_INCS_FILE) +else + $(CC) -c $< -o $@ $(CDEFS) $(INCS) -I"pch" $(COMPILE_FLAGS) $(TC_COMPILER_MISC) $(RS_COMPILER_MISC) -fPIE --sysroot="$(SYSROOT)" -Werror-implicit-function-declaration $(M_OPT) @$(PLATFORM_INCS_FILE) +endif + @echo ' Finished building: $<' +endif + +ifneq ($(strip $(CPP_SRCS)),) +CPPDEFS += $(addprefix -D,$(USER_CPP_DEFS)) +CPPDEFS += $(addprefix -U,$(USER_CPP_UNDEFS)) + +CPP_INCS := $(addprefix -I$(PROJ_ROOT)/,$(USER_CPP_INC_DIRS)) \ + $(addprefix -I,$(USER_CPP_INC_DIRS_ABS)) \ + $(addprefix -include$(PROJ_ROOT)/,$(USER_CPP_INC_FILES)) \ + $(addprefix -include,$(USER_CPP_INC_FILES_ABS)) + +$(CPP_OBJS) : $(OBJ_OUTPUT)/%.o : $(PROJ_ROOT)/%.cpp $(PLATFORM_INCS_FILE) + @echo ' Building file: $<' + @echo ' Invoking: C++ Compiler' + @$(MKDIR) $(MKDIR_OP) $(subst $(BSLASH),/,$(@D)) +ifeq ($(strip $(APPTYPE)),sharedLib) + $(CXX) -c $< -o $@ $(CPPDEFS) $(CPP_INCS) -I"pch" $(CPP_COMPILE_FLAGS) $(TC_COMPILER_MISC) $(RS_COMPILER_MISC) -fPIC --sysroot="$(SYSROOT)" -Werror-implicit-function-declaration $(M_OPT) @$(PLATFORM_INCS_FILE) +else + $(CXX) -c $< -o $@ $(CPPDEFS) $(CPP_INCS) -I"pch" $(CPP_COMPILE_FLAGS) $(TC_COMPILER_MISC) $(RS_COMPILER_MISC) -fPIE --sysroot="$(SYSROOT)" -Werror-implicit-function-declaration $(M_OPT) @$(PLATFORM_INCS_FILE) +endif + @echo ' Finished building: $<' +endif + + +$(OBJ_OUTPUT) : + @echo ' Building directory: $@' + @$(MKDIR) $(MKDIR_OP) $(OBJ_OUTPUT) + +preproc : $(OBJ_OUTPUT) +ifneq ($(strip $(PREBUILD_COMMAND)),) +ifneq ($(strip $(PREBUILD_DESC)),) + @echo $(PREBUILD_DESC) +endif + @echo $(shell $(PREBUILD_COMMAND)) +endif + + +postproc : +ifneq ($(strip $(POSTBUILD_COMMAND)),) +ifneq ($(strip $(POSTBUILD_DESC)),) + @echo $(POSTBUILD_DESC) +endif + @echo $(shell $(POSTBUILD_COMMAND)) +endif + +ifneq ($(strip $(PLATFORM_INCS)),) +$(PLATFORM_INCS_FILE) : $(OBJ_OUTPUT) + @echo ' Building inc file: $@' +ifneq ($(findstring Linux,$(OS_NAME)),) + @echo $(PLATFORM_INCS) > $@ +else +ifneq ($(findstring 3.82,$(MAKE_VERSION)),) + $(file > $@,$(PLATFORM_INCS)) +else + @echo $(PLATFORM_INCS) > $@ +endif +endif +endif + +ALL_EDJ_FILES := + +define EDJ_PROC +ALL_EDCS := $$(subst $(BSLASH),/,$$($(2))) +NORMAL_EDCS := $$(filter-out %*.edc,$$(ALL_EDCS)) +WIDLCARD_EDCS := $$(filter %*.edc,$$(ALL_EDCS)) +EDCS := $$(NORMAL_EDCS) $$(foreach var_edc,$$(WIDLCARD_EDCS),$$(call FIND_FILES,$$(var_edc))) + +ifneq ($$(strip $$(EDCS)),) +EDJ_FILES := $$(call FUNC_EDC2EDJ,$$(EDCS)) + +ALL_EDJ_FILES += $$(EDJ_FILES) + +EDC_$(1)_COMPILER_FLAGS := -id "$$(SDK_TOOLPATH)/enventor/share/enventor/images" +EDC_$(1)_COMPILER_FLAGS += -sd "$$(SDK_TOOLPATH)/enventor/share/enventor/sounds" +EDC_$(1)_COMPILER_FLAGS += -fd "$$(SDK_TOOLPATH)/enventor/share/enventor/fonts" + +ifneq ($$(strip $(3)),) +EDC_$(1)_COMPILER_FLAGS += $$(addprefix -id $$(PROJ_PATH)/,$$($(3))) +endif +ifneq ($$(strip $(4)),) +EDC_$(1)_COMPILER_FLAGS += $$(addprefix -id ,$$($(4))) +endif +ifneq ($$(strip $(5)),) +EDC_$(1)_COMPILER_FLAGS += $$(addprefix -sd $$(PROJ_PATH)/,$$($(5))) +endif +ifneq ($$(strip $(6)),) +EDC_$(1)_COMPILER_FLAGS += $$(addprefix -sd ,$$($(6))) +endif +ifneq ($$(strip $(7)),) +EDC_$(1)_COMPILER_FLAGS += $$(addprefix -fd $$(PROJ_PATH)/,$$($(7))) +endif +ifneq ($$(strip $(8)),) +EDC_$(1)_COMPILER_FLAGS += $$(addprefix -fd ,$$($(8))) +endif + +$$(EDJ_FILES) : $$(OUTPUT_DIR)/%.edj : $$(PROJ_ROOT)/%.edc + @echo ' Building file: $$<' + @echo ' Invoking: EDC Resource Compiler' + @$$(MKDIR) $$(MKDIR_OP) $$(subst $$(BSLASH),/,$$(@D)) + $$(EDJE_CC) $$(EDC_$(1)_COMPILER_FLAGS) $$(CDEFS) "$$<" "$$@" + @echo ' Finished building: $$<' +endif +endef + +# Global EDCs +ifneq ($(strip $(USER_EDCS)),) +$(eval $(call EDJ_PROC,,USER_EDCS,USER_EDCS_IMAGE_DIRS,USER_EDCS_IMAGE_DIRS_ABS,USER_EDCS_SOUND_DIRS,USER_EDCS_SOUND_DIRS_ABS,USER_EDCS_FONT_DIRS,USER_EDCS_FONT_DIRS_ABS)) +endif + +# Individual EDCs +ifneq ($(strip $(USER_EXT_EDC_KEYS)),) +$(foreach var,$(USER_EXT_EDC_KEYS),$(eval $(call EDJ_PROC,$(var),USER_EXT_$(var)_EDCS,USER_EXT_$(var)_EDCS_IMAGE_DIRS,USER_EXT_$(var)_EDCS_IMAGE_DIRS_ABS,USER_EXT_$(var)_EDCS_SOUND_DIRS,USER_EXT_$(var)_EDCS_SOUND_DIRS_ABS,USER_EXT_$(var)_EDCS_FONT_DIRS,USER_EXT_$(var)_EDCS_FONT_DIRS_ABS))) +endif + + +ifneq ($(strip $(POS)),) +define MO_RULE +$(call FUNC_PO2MO,$(1)) : $(PROJ_ROOT)/$(1) + @echo ' Building file: $$<' + @echo ' Invoking: msgfmt String Formatter' + @$$(MKDIR) $$(MKDIR_OP) $$(subst $$(BSLASH),/,$$(@D)) + $$(MSGFMT) -o $$@ $$< + @echo ' Finished building: $$<' +endef + +$(foreach var,$(POS),$(eval $(call MO_RULE,$(var)))) +endif + + +secondary-outputs : $(ALL_EDJ_FILES) $(MO_FILES) + +-include appendix.mk + + +app_build : preproc $(APPFILE) secondary-outputs postproc + +app_clean : + rm -f "$(APPFILE)" + rm -rf "$(OUTPUT_DIR)" + +make_version : + @echo $(BUILD_SCRIPT_VERSION) diff --git a/Build/prepost.mk b/Build/prepost.mk new file mode 100644 index 0000000..a8a4d87 --- /dev/null +++ b/Build/prepost.mk @@ -0,0 +1,7 @@ +# Add pre/post build process + +PREBUILD_COMMAND = +PREBUILD_DESC = + +POSTBUILD_COMMAND = +POSTBUILD_DESC = diff --git a/Build/tooldef.mk b/Build/tooldef.mk new file mode 100644 index 0000000..4244fb3 --- /dev/null +++ b/Build/tooldef.mk @@ -0,0 +1,61 @@ +# Add inputs and outputs from these tool invocations to the build variables + +ifeq ($(strip $(BUILD_CONFIG)),) +BUILD_CONFIG = Debug +endif + +ifeq ($(strip $(OUTPUT_DIR)),) +OUTPUT_DIR := $(PROJPATH)/$(BUILD_CONFIG) +endif + + +ifneq ($(strip $(MKDIR_BIN)),) +MKDIR = $(MKDIR_BIN) +MKDIR_OP = -p +else +MKDIR = mkdir +MKDIR_OP = -p +endif + +ifneq ($(strip $(UNAME_BIN)),) +UNAME = $(UNAME_BIN) +else +UNAME = uname +endif + +ifneq ($(strip $(M4_BIN)),) +M4 = $(M4_BIN) +else +M4 = m4 +endif + +ifneq ($(strip $(TR_BIN)),) +TR = $(TR_BIN) +else +TR = tr +endif + +ifneq ($(strip $(FIND_BIN)),) +FIND = $(FIND_BIN) +else +FIND = find +endif + +ifneq ($(strip $(GREP_BIN)),) +GREP = $(GREP_BIN) +else +GREP = grep +endif + +ifneq ($(strip $(EDJE_CC_BIN)),) +EDJE_CC = $(EDJE_CC_BIN) +else +EDJE_CC = edje_cc +endif + +ifneq ($(strip $(MSGFMT_BIN)),) +MSGFMT = $(MSGFMT_BIN) +else +MSGFMT = msgfmt +endif + diff --git a/CMakeLists.txt b/CMakeLists.txt deleted file mode 100644 index 4909f53..0000000 --- a/CMakeLists.txt +++ /dev/null @@ -1,77 +0,0 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) -PROJECT(task-mgr) -# FIND ALL SOURCE IN A SOURCE DIRECTORY -AUX_SOURCE_DIRECTORY(${CMAKE_SOURCE_DIR}/src SRCS) - -#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}") -SET(ICONDIR "/usr/share/icons/") - -INCLUDE(FindPkgConfig) -pkg_check_modules(pkgs REQUIRED - appcore-efl - evas - edje - elementary - 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} -fPIE") -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -fPIE") - -SET(CMAKE_C_FLAGS_PROFILING "-O0 -g -pg -fPIE") -SET(CMAKE_CXX_FLAGS_PROFILING "-O0 -std=c++0x -g -pg -fPIE") -SET(CMAKE_C_FLAGS_DEBUG "-O0 -g -fPIE") -SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -std=c++0x -g -fPIE") -SET(CMAKE_C_FLAGS_RELEASE "-O2 -g -fPIE") -SET(CMAKE_CXX_FLAGS_RELEASE "-O2 -std=c++0x -g -fPIE") -SET(CMAKE_C_FLAGS_CCOV "-O2 -g --coverage -fPIE") -SET(CMAKE_CXX_FLAGS_CCOV "-O2 -std=c++0x -g --coverage -fPIE") - -SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie") - -MESSAGE(${CMAKE_C_FLAGS}) - -ADD_DEFINITIONS("-DEDJEDIR=\"${EDJEDIR}\"") -ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"") - -ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS}) - -TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS}) - -# Install -INSTALL(TARGETS ${PROJECT_NAME} DESTINATION bin) - -#Install images -INSTALL(DIRECTORY res/images/ DESTINATION res/images) - -# install manifest file & icon -#INSTALL(FILES ${CMAKE_BINARY_DIR}/org.tizen.task-mgr.xml DESTINATION /usr/share/packages) -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) -INSTALL(FILES ${RESOURCE_DIR}/icon/org.tizen.task-mgr.png DESTINATION ${ICONDIR}) - - -# End of a file -ADD_SUBDIRECTORY(res) diff --git a/LICENSE b/LICENSE deleted file mode 100755 index 54b213e..0000000 --- a/LICENSE +++ /dev/null @@ -1,204 +0,0 @@ -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 new file mode 100644 index 0000000..571fe79 --- /dev/null +++ b/LICENSE.Flora @@ -0,0 +1,206 @@ +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/WORKSPACE b/WORKSPACE new file mode 100644 index 0000000..80e52ce --- /dev/null +++ b/WORKSPACE @@ -0,0 +1 @@ +./ diff --git a/build_def.prop b/build_def.prop new file mode 100644 index 0000000..6bb5e2f --- /dev/null +++ b/build_def.prop @@ -0,0 +1,6 @@ + +# Add pre/post build process +PREBUILD_DESC = +PREBUILD_COMMAND = +POSTBUILD_DESC = +POSTBUILD_COMMAND = diff --git a/data/org.tizen.task-mgr.efl b/data/org.tizen.task-mgr.efl deleted file mode 100644 index 26ed423..0000000 --- a/data/org.tizen.task-mgr.efl +++ /dev/null @@ -1,47 +0,0 @@ -org.tizen.task-mgr system::homedir rwxat- ------ -org.tizen.task-mgr system::media rwxat- ------ -org.tizen.task-mgr system::share rwxat- ------ -org.tizen.task-mgr system::use_internet r----- ------ -org.tizen.task-mgr system::ext_storage rwxat- ------ -org.tizen.task-mgr secure-storage-client rw---- ------ -org.tizen.task-mgr pulseaudio rwxat- ------ -org.tizen.task-mgr system r-x--- ------ -org.tizen.task-mgr xorg rw---- ------ -org.tizen.task-mgr device::bklight rw---- ------ -org.tizen.task-mgr org.tizen.indicator rwx--- ------ -org.tizen.task-mgr org.tizen.quickpanel rwx--- ------ -org.tizen.task-mgr crash-popup r-x--- ------ -org.tizen.task-mgr system-server rwx--- ------ -org.tizen.task-mgr immvibed rw---- ------ -org.tizen.task-mgr display_wd r-x--- ------ -org.tizen.task-mgr sound_server rwxa-- ------ -org.tizen.task-mgr dbus rwx--- ------ -org.tizen.task-mgr e17 rw---- ------ -org.tizen.task-mgr aul rwx--- ------ -org.tizen.task-mgr aul::launch rwx--- ------ -org.tizen.task-mgr aul::terminate --x--- ------ -org.tizen.task-mgr app-svc rwx--- ------ -org.tizen.task-mgr aul_amd rwx--- ------ -org.tizen.task-mgr pkgmgr::db rwx--- ------ -org.tizen.task-mgr trm -w---- ------ -org.tizen.task-mgr svi-data r-x--- ------ -org.tizen.task-mgr org.tizen.oma-dm r-x--- ------ -org.tizen.task-mgr sys-assert::core rwxat- ------ -org.tizen.task-mgr isf rwx--- ------ -org.tizen.task-mgr media-server r-x--- ------ -org.tizen.task-mgr deviced rwx--- ------ -org.tizen.task-mgr notification::db rw---- ------ -org.tizen.task-mgr data-provider-master rw---- ------ -org.tizen.task-mgr data-provider-master::notification rw---- ------ -org.tizen.task-mgr data-provider-master::notification.client rw---- ------ -org.tizen.task-mgr org.tizen.setting::default-resources r-x--- ------ -org.tizen.task-mgr device::app_logging -w---- ------ -org.tizen.task-mgr device::sys_logging -w---- ------ -org.tizen.task-mgr oma-ds-agent::cfg r----- ------ -org.tizen.task-mgr oma-ds-agent::svc rw---- ------ -org.tizen.task-mgr rua::db rwx--- ------ -org.tizen.indicator org.tizen.task-mgr rwx--- ------ -e17 org.tizen.task-mgr rw---- ------ -system org.tizen.task-mgr -w---- ------ -display_wd org.tizen.task-mgr -w---- ------ -dbus org.tizen.task-mgr rwx--- ------ diff --git a/data/org.tizen.task-mgr.xml b/data/org.tizen.task-mgr.xml index 311b118..967946f 100644 --- a/data/org.tizen.task-mgr.xml +++ b/data/org.tizen.task-mgr.xml @@ -1,6 +1,6 @@ - - + + org.tizen.task-mgr.png diff --git a/include/conf.h b/inc/conf.h similarity index 72% rename from include/conf.h rename to inc/conf.h index f876075..736ab7e 100644 --- a/include/conf.h +++ b/inc/conf.h @@ -1,20 +1,18 @@ /* - * Task Manager + * Samsung API + * Copyright (c) 2013 Samsung Electronics Co., Ltd. * - * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); + * 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://www.apache.org/licenses/LICENSE-2.0 + * 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, + * 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__ @@ -43,9 +41,8 @@ #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 LAYOUT "edje/layout.edj" +#define ITEM_LAYOUT "edje/item.edj" #define BOX_GROUP_NAME "box" #define BG_PART_NAME "bg" diff --git a/inc/item.h b/inc/item.h new file mode 100644 index 0000000..f5020ed --- /dev/null +++ b/inc/item.h @@ -0,0 +1,30 @@ +/* + * Samsung API + * Copyright (c) 2013 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 __TASK_MGR_ITEM_H__ +#define __TASK_MGR_ITEM_H__ + +#include "list.h" +#include "util.h" + +Evas_Object *item_create(void *data, list_type_default_s *info); +void item_destroy(Evas_Object *item); +void item_terminate(Evas_Object *item); +void taskmanager_remove_all_task_info(void *data); +list_type_default_s *item_get_info(Evas_Object *item); + +#endif //__TASK_MGR_ITEM_H__ diff --git a/include/list.h b/inc/list.h similarity index 59% rename from include/list.h rename to inc/list.h index 2d5361e..4f32808 100644 --- a/include/list.h +++ b/inc/list.h @@ -1,20 +1,18 @@ /* - * Task Manager + * Samsung API + * Copyright (c) 2013 Samsung Electronics Co., Ltd. * - * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); + * 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://www.apache.org/licenses/LICENSE-2.0 + * 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, + * 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__ @@ -36,16 +34,13 @@ typedef struct { 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)); +task_mgr_error_e list_create(); +void list_destroy(Eina_List *pkg_list); +Eina_List *list_pkg_list_get(void); +void _pkglist_unretrieve_item(list_type_default_s *default_info); #endif //__TASK_MGR_LIST_H__ diff --git a/include/log.h b/inc/log.h similarity index 54% rename from include/log.h rename to inc/log.h index 3831fad..2606768 100755 --- a/include/log.h +++ b/inc/log.h @@ -1,20 +1,18 @@ /* - * Task Manager + * Samsung API + * Copyright (c) 2013 Samsung Electronics Co., Ltd. * - * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); + * 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://www.apache.org/licenses/LICENSE-2.0 + * 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, + * 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__ @@ -23,31 +21,56 @@ #include #include +#define FONT_COLOR_RESET "\033[0m" +#define FONT_COLOR_RED "\033[31m" +#define FONT_COLOR_GREEN "\033[32m" +#define FONT_COLOR_YELLOW "\033[33m" +#define FONT_COLOR_BLUE "\033[34m" +#define FONT_COLOR_PURPLE "\033[35m" +#define FONT_COLOR_CYAN "\033[36m" +#define FONT_COLOR_GRAY "\033[37m" + +#define WCOLOR_RED "\033[0;31m" +#define WCOLOR_GREEN "\033[0;32m" +#define WCOLOR_BROWN "\033[0;33m" +#define WCOLOR_BLUE "\033[0;34m" +#define WCOLOR_PURPLE "\033[0;35m" +#define WCOLOR_CYAN "\033[0;36m" +#define WCOLOR_LIGHTBLUE "\033[0;37m" +#define WCOLOR_END "\033[0;m" +#define MODULE_INFO (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) + #undef LOG_TAG #define LOG_TAG "TASK_MGR" #if !defined(_D) -#define _D(fmt, arg...) LOGD(fmt"\n", ##arg) +#define _D(fmt, arg...) dlog_print(DLOG_DEBUG, \ + LOG_TAG, "%s: %s(%d) > " WCOLOR_GREEN fmt WCOLOR_END, MODULE_INFO, \ + __func__, __LINE__, ##arg) #endif #if !defined(_W) -#define _W(fmt, arg...) LOGW(fmt"\n", ##arg) +#define _W(fmt, arg...) (dlog_print(DLOG_WARN, \ + LOG_TAG, "%s: %s(%d) > " WCOLOR_GREEN fmt WCOLOR_END, MODULE_INFO, \ + __func__, __LINE__, ##arg)) #endif #if !defined(_E) -#define _E(fmt, arg...) LOGE(fmt"\n", ##arg) +#define _E(fmt, arg...) (dlog_print(DLOG_ERROR, \ + LOG_TAG, "%s: %s(%d) > " WCOLOR_RED fmt WCOLOR_END, MODULE_INFO, \ + __func__, __LINE__, ##arg)) #endif #if !defined(_SD) -#define _SD(fmt, arg...) SECURE_LOGD(fmt"\n", ##arg) +#define _SD(fmt, arg...) _D(fmt, arg...) #endif #if !defined(_SW) -#define _SW(fmt, arg...) SECURE_LOGW(fmt"\n", ##arg) +#define _SW(fmt, arg...) _W(fmt, arg...) #endif #if !defined(_SE) -#define _SE(fmt, arg...) SECURE_LOGE(fmt"\n", ##arg) +#define _SE(fmt, arg...) _E(fmt, arg...) #endif #define retvm_if_timer(timer, expr, val, fmt, arg...) do { \ diff --git a/inc/main.h b/inc/main.h new file mode 100644 index 0000000..24f3eea --- /dev/null +++ b/inc/main.h @@ -0,0 +1,62 @@ +/* + * Samsung API + * Copyright (c) 2013 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 __TASK_MGR_H__ +#define __TASK_MGR_H__ + +#include +enum { + POS_DOWN = 0, + POS_MOVE, + POS_UP, + POS_MAX +}; + +typedef struct { + Evas *e; + Evas_Object *win; + Evas_Object *bg; + Evas_Object *layout; + Evas_Object *scroller; + Evas_Object *box; + Eina_Bool is_scrolled; + Eina_List *pkg_list; + Eina_Bool is_widget_swipe; // widget moved :=> block scroll + Eina_Bool is_widget_history; // widget moved :=> block scroll + int deleteX, deleteY; + Eina_Bool is_launched; + Eina_Bool is_ignoring_svoice; + Evas_Object *moving_widget; + Evas_Object *deleting_widget; + Evas_Coord posx[POS_MAX]; + Evas_Coord posy[POS_MAX]; + struct timeval postime[POS_MAX]; + + Ecore_Animator *reverse_animator; + Ecore_Animator *delete_animator; + Eext_Circle_Surface *circle_surface; + Evas_Object *index; + Eina_Bool icon_move; + int root_w; + int root_h; + int cur_page; +} main_s; +typedef main_s *main_h; + +main_h main_get_info(void); + +#endif //__TASK_MGR_H__ diff --git a/inc/scroller.h b/inc/scroller.h new file mode 100644 index 0000000..5cc8e1b --- /dev/null +++ b/inc/scroller.h @@ -0,0 +1,42 @@ +/* + * Samsung API + * Copyright (c) 2013 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 __TASK_MGR_SCROLLER_H__ +#define __TASK_MGR_SCROLLER_H__ + +#include "util.h" + +task_mgr_error_e scroller_push_all_item(void *data); +Evas_Object *scroller_create(void *data); +void scroller_destroy(Evas_Object *scroller); +void _index_sync(void *data); +void index_refresh(void *data); +Eina_Bool __check_velocity(void *data); +int taskmanager_get_count(void *data); +int end_taskmanager(void *data, Eina_Bool is_direct); +void __set_reverse_animation(void *data, Evas_Object *obj); +void unset_freeze_scroller(void *data); +void __set_remove_animation(void *data, Evas_Object *obj); +void close_button_disabled_set( Eina_Bool is_disabled ); +Eina_Bool _deleting_animator_cb(void *data, double pos); +void __set_layout_color(Evas_Object *obj, int color); +void set_freeze_scroller(); + +#define FACTOR_A -1.59375 +#define FACTOR_B 255 + +#endif //__TASK_MGR_SCROLLER_H__ diff --git a/inc/util.h b/inc/util.h new file mode 100644 index 0000000..a252319 --- /dev/null +++ b/inc/util.h @@ -0,0 +1,94 @@ +/* + * Samsung API + * Copyright (c) 2013 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 __TASK_MGR_UTIL_H__ + #define __TASK_MGR_UTIL_H__ + + + +/* data key */ +#define DATA_KEY_ITEM_INFO "it_if" +#define PATH_MAX 4096 /* # chars in a path name including nul */ +/* Multi-language */ +#if !defined(_) +#define _(str) gettext(str) +#endif + +#define STYLE_EVEN_MAX 20 +#define STYLE_ODD_MAX 19 + +static char *style_even[STYLE_EVEN_MAX] = { + "item/even_1", + "item/even_2", + "item/even_3", + "item/even_4", + "item/even_5", + "item/even_6", + "item/even_7", + "item/even_8", + "item/even_9", + "item/even_10", + "item/even_11", + "item/even_12", + "item/even_13", + "item/even_14", + "item/even_15", + "item/even_16", + "item/even_17", + "item/even_18", + "item/even_19", + "item/even_20", +}; + +static char *style_odd[STYLE_ODD_MAX] = { + "item/odd_1", + "item/odd_2", + "item/odd_3", + "item/odd_4", + "item/odd_5", + "item/odd_6", + "item/odd_7", + "item/odd_8", + "item/odd_9", + "item/odd_10", + "item/odd_11", + "item/odd_12", + "item/odd_13", + "item/odd_14", + "item/odd_15", + "item/odd_16", + "item/odd_17", + "item/odd_18", + "item/odd_19", +}; + +/* 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; + +Eina_Bool util_kill_app(const char *appid); +Eina_Bool util_launch_app(const char *appid); +int getEdjepath(const char *file_in, char *file_path_out, int file_path_max); + + +#endif //__TASK_MGR_UTIL_H__ diff --git a/include/item.h b/include/item.h deleted file mode 100644 index 3d1e7a8..0000000 --- a/include/item.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * 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/main.h b/include/main.h deleted file mode 100644 index 62c9bdd..0000000 --- a/include/main.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * 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 deleted file mode 100644 index bf67ac9..0000000 --- a/include/scroller.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * 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 deleted file mode 100644 index af2c727..0000000 --- a/include/util.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * 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 deleted file mode 100644 index 9a6888c..0000000 --- a/org.tizen.task-mgr.manifest +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/packaging/org.tizen.task-mgr.spec b/packaging/org.tizen.task-mgr.spec index 950f0c5..80300c7 100644 --- a/packaging/org.tizen.task-mgr.spec +++ b/packaging/org.tizen.task-mgr.spec @@ -26,7 +26,9 @@ BuildRequires: edje-tools BuildRequires: gettext-tools BuildRequires: pkgconfig(dlog) BuildRequires: pkgconfig(elementary) +BuildRequires: pkgconfig(efl-extension) BuildRequires: pkgconfig(capi-system-info) +BuildRequires: pkgconfig(capi-system-system-settings) BuildRequires: pkgconfig(capi-appfw-package-manager) BuildRequires: pkgconfig(capi-appfw-app-manager) BuildRequires: cmake @@ -63,7 +65,4 @@ rm -rf %{buildroot} %{AppInstallPath}/bin/task-mgr %{AppInstallPath}/res/* %{_datarootdir}/packages/%{name}.xml -/etc/smack/accesses.d/%{name}.efl -%{AppInstallPath}/res/locale/*/LC_MESSAGES/* -/usr/share/packages/org.tizen.task-mgr.xml /usr/share/icons/org.tizen.task-mgr.png diff --git a/project_def.prop b/project_def.prop new file mode 100644 index 0000000..75e6a34 --- /dev/null +++ b/project_def.prop @@ -0,0 +1,74 @@ + +# Project Name +APPNAME = task-mgr + +# Project Type +type = app + +# Project Profile +profile = wearable-3.0 + +# C Sources +USER_SRCS = src/main.c src/item.c src/list.c src/scroller.c src/util.c +USER_SRCS_ABS = + +# EDC Sources +USER_EDCS = + +# PO Sources +USER_POS = + +# User Defines +USER_DEFS = +USER_CPP_DEFS = + +# User Undefines +USER_UNDEFS = +USER_CPP_UNDEFS = + +# User Libraries +USER_LIBS = + +# User Objects +USER_OBJS = +USER_OBJS_ABS = + +# User Includes +## C Compiler +USER_INC_DIRS = inc +USER_INC_DIRS_ABS = +USER_INC_FILES = +USER_INC_FILES_ABS = +## C++ Compiler +USER_CPP_INC_DIRS = +USER_CPP_INC_DIRS_ABS = +USER_CPP_INC_FILES = +USER_CPP_INC_FILES_ABS = + +# User Library Path +USER_LIB_DIRS = lib +USER_LIB_DIRS_ABS = + +# EDC Resource Path +USER_EDCS_IMAGE_DIRS = edje/images +USER_EDCS_IMAGE_DIRS_ABS = +USER_EDCS_SOUND_DIRS = edje/sounds +USER_EDCS_SOUND_DIRS_ABS = +USER_EDCS_FONT_DIRS = edje/fonts +USER_EDCS_FONT_DIRS_ABS = + +# EDC Flags +USER_EXT_EDC_KEYS = EDC0 + +USER_EXT_EDC0_EDCS = res/edje/item.edc res/edje/layout.edc +USER_EXT_EDC0_EDCS_IMAGE_DIRS = res/edje/images +USER_EXT_EDC0_EDCS_IMAGE_DIRS_ABS = +USER_EXT_EDC0_EDCS_SOUND_DIRS = edje/sounds +USER_EXT_EDC0_EDCS_SOUND_DIRS_ABS = +USER_EXT_EDC0_EDCS_FONT_DIRS = edje/fonts +USER_EXT_EDC0_EDCS_FONT_DIRS_ABS = + +# Resource Filter +USER_RES_INCLUDE = +USER_RES_EXCLUDE = + diff --git a/res/CMakeLists.txt b/res/CMakeLists.txt deleted file mode 100644 index 5cc2056..0000000 --- a/res/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -ADD_SUBDIRECTORY(edje) -#ADD_SUBDIRECTORY(images) -ADD_SUBDIRECTORY(po) diff --git a/res/edje/conf.h b/res/edje/conf.h deleted file mode 120000 index de97229..0000000 --- a/res/edje/conf.h +++ /dev/null @@ -1 +0,0 @@ -../../include/conf.h \ No newline at end of file diff --git a/res/edje/images/b_recent_widget_del_bg.png b/res/edje/images/b_recent_widget_del_bg.png new file mode 100755 index 0000000..27e25bc Binary files /dev/null and b/res/edje/images/b_recent_widget_del_bg.png differ diff --git a/res/edje/images/b_recent_widget_del_icon.png b/res/edje/images/b_recent_widget_del_icon.png new file mode 100755 index 0000000..0b1f72f Binary files /dev/null and b/res/edje/images/b_recent_widget_del_icon.png differ diff --git a/res/edje/images/b_recent_widget_del_shadow.png b/res/edje/images/b_recent_widget_del_shadow.png new file mode 100755 index 0000000..925e782 Binary files /dev/null and b/res/edje/images/b_recent_widget_del_shadow.png differ diff --git a/res/edje/images/fake_image.png b/res/edje/images/fake_image.png new file mode 100755 index 0000000..1d16145 Binary files /dev/null and b/res/edje/images/fake_image.png differ diff --git a/res/edje/images/recent_btn_close_bg.png b/res/edje/images/recent_btn_close_bg.png new file mode 100755 index 0000000..356aa43 Binary files /dev/null and b/res/edje/images/recent_btn_close_bg.png differ diff --git a/res/edje/images/recent_btn_close_icon.png b/res/edje/images/recent_btn_close_icon.png new file mode 100755 index 0000000..1d36546 Binary files /dev/null and b/res/edje/images/recent_btn_close_icon.png differ diff --git a/res/edje/images/recent_circle_bg_mask.png b/res/edje/images/recent_circle_bg_mask.png new file mode 100755 index 0000000..1d16145 Binary files /dev/null and b/res/edje/images/recent_circle_bg_mask.png differ diff --git a/res/edje/images/recent_no_recent_icon.png b/res/edje/images/recent_no_recent_icon.png new file mode 100755 index 0000000..556a792 Binary files /dev/null and b/res/edje/images/recent_no_recent_icon.png differ diff --git a/res/edje/images/tw_bottom_btn_bg.png b/res/edje/images/tw_bottom_btn_bg.png new file mode 100644 index 0000000..d924082 Binary files /dev/null and b/res/edje/images/tw_bottom_btn_bg.png differ diff --git a/res/edje/images/tw_no_item_bg.png b/res/edje/images/tw_no_item_bg.png new file mode 100755 index 0000000..2e06046 Binary files /dev/null and b/res/edje/images/tw_no_item_bg.png differ diff --git a/res/edje/images/widget_circle_bg_ef1.png b/res/edje/images/widget_circle_bg_ef1.png new file mode 100755 index 0000000..44f3a1a Binary files /dev/null and b/res/edje/images/widget_circle_bg_ef1.png differ diff --git a/res/edje/images/widget_circle_bg_ef2.png b/res/edje/images/widget_circle_bg_ef2.png new file mode 100755 index 0000000..de5ec3f Binary files /dev/null and b/res/edje/images/widget_circle_bg_ef2.png differ diff --git a/res/edje/item.edc b/res/edje/item.edc index a8bfe85..c9373b5 100644 --- a/res/edje/item.edc +++ b/res/edje/item.edc @@ -1,294 +1,509 @@ /* - * Task Manager + * Task Manager + * Copyright (c) 2013 Samsung Electronics Co., Ltd. * - * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); + * 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://www.apache.org/licenses/LICENSE-2.0 + * 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, + * 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 { +#define WIN_W 360 +#define WIN_H 360 +//#define WIDGET_WIDTH 360 +//#define WIDGET_HEIGHT 360 -styles { - style { - name: "item_style"; - base: "font=Tizen:style=Bold font_size=32 color=#ffffff align=left style=shadow shadow_color=#000000bf wrap=mixed"; - tag: "br" "\n"; - tag: "hilight" "+ font_weight=Bold"; - tag: "b" "+ font_weight=Bold"; - tag: "tab" "\t"; +//#define DEFAULT_FONT "Tizen" +//#define DEFULAT_FONT_CLASS "tizen" +base_scale : 1.3; +color_classes{ + color_class{ + name: "AO0121L1"; + color: 255 255 255 0; + } + color_class{ + name: "AO0121L2"; + color: 0 0 0 102; + } + color_class{ + name: "AO0121L3"; + color: 0 0 0 0; + } + color_class{ + name: "AO014L1"; + color: 255 255 255 255; + } + color_class{ + name: "AO014L1P"; + color: 255 255 255 127.5; + } + color_class{ + name: "AO014L2"; + color: 183.6 45.9 45.9 255; + } + color_class{ + name: "AO014L2P"; + color: 183.6 45.9 45.9 127.5; + } + color_class{ + name: "AO014L3"; + color: 0 0 0 89.25; + } + color_class{ + name: "AT0111"; + color: 255 255 255 255; + } + color_class{ + name: "AO0111"; + color: 38.25 38.25 38.25 255; + } } -} - -images { - image: "clear_all_button_icon.png" COMP; - image: "clear_all_button_icon_disable.png" COMP; -} -externals { - external: "feedback"; -} + group { + name : "recent"; -collections { - base_scale: 2.6; - plugins { - plugin { - name: "touch_sound"; - source: "feedback"; - param: "FEEDBACK_TYPE_SOUND FEEDBACK_PATTERN_TAP"; + images { + image : "recent_circle_stroke.png" COMP; + image : "recent_circle_bg_mask.png" COMP; + image : "widget_circle_bg_ef1.png" COMP; + image : "widget_circle_bg_ef2.png" COMP; + image : "b_recent_widget_del_bg.png" COMP; + image : "b_recent_widget_del_icon.png" COMP; + image : "b_recent_widget_del_shadow.png" COMP; } - } - group { - name: "item"; + parts { part { - name: "bg"; - type: RECT; - scale: 1; + name : "color_clipper"; + type : RECT; description { - state: "default" 0.0; - rel1 { relative: 0.0 0.0; } - rel2 { relative: 1.0 1.0; } - color: 255 255 255 0; - min: ITEM_WIDTH ITEM_HEIGHT; - visible: 1; + state : "default" 0.0; + color : 255 255 255 255; } - } - part{ - name: "line"; - type: RECT; - scale: 1; description { - state: "default" 0.0; - color: 255 255 255 255; - rel1 { relative: 0.5 0.0; to: "bg"; } - rel2 { relative: 0.5 1.0; to: "bg"; } - min: ITEM_LINE_WIDTH 0; - fixed: 1 0; - visible: 1; - align: 0.5 0.5; + state : "closeall" 0.0; + color : 255 255 255 0; } } part { - name: "inner"; - type: SWALLOW; - scale: 1; + name : "bg"; + type : SPACER; description { - state: "default" 0.0; - rel1.relative: 0.0 0.0; - rel2.relative: 1.0 1.0; - visible: 1; - fixed: 1 1; + state : "default" 0.0; } } - } - } - group { - name: "item_inner"; - parts { part { - name: "bg"; - type: RECT; - scale: 1; + name : "txt.app_name"; + type : SWALLOW; + clip_to : "color_clipper"; + scale : 1; + description { + state : "default" 0.0; + align : 0.5 0.5; + fixed : 1.0 1.0; + rel1 { + relative : 102/WIN_W 27/WIN_H; + to : "bg"; + } + rel2 { + relative : (WIN_W-102)/WIN_W (27+39)/WIN_H; + to : "bg"; + } + + color_class : "AT0111"; + } description { - state: "default" 0.0; - rel1 { relative: 0.0 0.0; } - rel2 { relative: 1.0 1.0; } - color: 255 255 255 0; - min: ITEM_WIDTH ITEM_HEIGHT; - visible: 1; + state : "show" 0.0; + inherit : "default" 0.0; + visible : 1; } - } - part { - name: "icon"; - type: SWALLOW; - scale: 1; description { - state: "default" 0.0; - rel1 { relative: 0.5 0.0; to: "bg"; } - rel2 { relative: 0.5 0.0; to: "bg"; } - visible: 1; - min: ITEM_ICON_WIDTH ITEM_ICON_HEIGHT; - fixed: 1 1; - align: 0.5 0.0; + state : "hide" 0.0; + inherit : "default" 0.0; + visible : 0; } } part { - name: "name"; - type: TEXTBLOCK; - scale: 1; + name : "img.clipper"; + type : RECT; + clip_to : "color_clipper"; + scale : 1; description { - state: "default" 0.0; - color: 255 255 255 255; - rel1 { relative: 1.0 0.0; to: "icon"; offset: 20 0; } - rel2 { relative: 1.0 1.0; to: "icon"; } - text { - text: ""; - style: "item_style"; - min: 1 0; + state : "default" 0.0; + fixed : 1 1; + + rel1 { + relative : 72/360 72/360; + to : "bg"; } - align: 0.0 0.5; - visible: 1; + rel2 { + relative : 288/360 288/360; + to : "bg"; + } + } + description { + state : "closeall" 0.0; + inherit : "default" 0.0; + min : 176 176; + max : 176 176; } } part { - name: "event"; - type: RECT; + name : "img.app_image"; + type : SWALLOW; + scale : 1; + mouse_events : 1; + repeat_events : 0; + clip_to : "img.clipper"; description { - state: "default" 0.0; - color: 0 0 0 0; - rel1 { relative: 0.0 0.0; to: "icon"; } - rel2 { relative: 1.0 1.0; to: "icon"; } - visible: 1; + state : "default" 0.0; + fixed : 1 1; + rel1 { + relative : 72/360 72/360; + to : "bg"; + } + rel2 { + relative : 288/360 288/360; + to : "bg"; + } + } + description { + state : "icon_displaying" 0.0; + inherit : "default" 0.0; + min : 245 245; + max : 245 245; + } + description { + state : "closeall" 0.0; + inherit : "default" 0.0; + min : 176 176; + max : 176 176; } } - } //parts - programs { - program { - name: "click,sound"; - signal: "clicked"; - source: "event"; - action: RUN_PLUGIN "touch_sound"; - } - } //programs - } //group - - group { - name: "clear_item"; - parts { part { - name: "bg"; - type: RECT; - scale: 1; + name : "img.circle_bg_mask"; + type : IMAGE; + scale : 1; + mouse_events : 1; + repeat_events : 1; description { - state: "default" 0.0; - rel1 { relative: 0.0 0.0; } - rel2 { relative: 1.0 1.0; } - color: 255 255 255 0; - min: ITEM_WIDTH CLEAR_ITEM_HEIGHT; - visible: 1; + state : "default" 0.0s; + fixed : 1 1; + rel1 { + relative : 72/360 72/360; + to : "bg"; + } + rel2 { + relative : 288/360 288/360; + to : "bg"; + } + image.normal : "recent_circle_bg_mask.png"; + // color_class : AO0111; + color : 0 0 0 255; + } + description { + state : "closeall" 0.0; + inherit : "default" 0.0; + min : 176 176; + max : 176 176; } } part { - name: "top_pad"; - type: SPACER; - scale: 1; + name : "img.circle_bg_ef2"; + type : IMAGE; + scale : 1; + mouse_events : 1; + repeat_events : 1; + clip_to : "color_clipper"; description { - state: "default" 0.0; - rel1 { relative: 0.0 0.0; to: "bg"; } - rel2 { relative: 1.0 0.0; to: "bg"; } - min: 0 CLEAR_PAD_HEIGHT; - align: 0.5 0.0; + state : "default" 0.0s; + fixed : 1 1; + rel1 { + relative : 47/360 47/360; + to : "bg"; + } + rel2 { + relative : 313/360 313/360; + to : "bg"; + } + image.normal : "widget_circle_bg_ef2.png"; + color_class : AO0121L2; } - } - part{ - name: "line"; - type: RECT; - scale: 1; description { - state: "default" 0.0; - color: 255 255 255 255; - rel1 { relative: 0.5 0.0; offset: 0 5; to: "clear_img"; } - rel2 { relative: 0.5 1.0; to: "bg"; } - min: CLEAR_LINE_WIDTH 0; - visible: 1; - align: 0.5 0.5; - fixed: 1 0; + state : "closeall" 0.0; + inherit : "default" 0.0; + min : 176 176; + max : 176 176; } } part { - name: "clear_img"; - type: IMAGE; - scale: 1; + name : "img.circle_bg_ef1"; + type : IMAGE; + scale : 1; + mouse_events : 1; + repeat_events : 1; + clip_to : "color_clipper"; description { - state: "default" 0.0; - rel1 { relative: 0.5 1.0; to: "top_pad"; } - rel2 { relative: 0.5 1.0; to: "top_pad"; } - image { - normal: "clear_all_button_icon.png"; + state : "default" 0.0s; + fixed : 1 1; + rel1 { + relative : 47/360 47/360; + to : "bg"; } - visible: 1; - min: CLEAR_ICON_WIDTH CLEAR_ICON_HEIGHT; - align: 0.5 0.0; - fixed: 1 1; + rel2 { + relative : 313/360 313/360; + to : "bg"; + } + image.normal : "widget_circle_bg_ef1.png"; + color_class : AO0121L3; } description { - state: "no,apps" 0.0; - inherit: "default" 0.0; - image { - normal: "clear_all_button_icon_disable.png"; - } + state : "closeall" 0.0; + inherit : "default" 0.0; + min : 176 176; + max : 176 176; } } - part { - name: "name"; - type: TEXTBLOCK; - scale: 1; + + part{ + name : "delete.touch"; + type : RECT; + scale : 1; + mouse_events : 1; + repeat_events : 0; description { - state: "default" 0.0; - color: 255 255 255 255; - rel1 { relative: 1.0 0.0; to: "clear_img"; offset: 37 0; } - rel2 { relative: 1.0 1.0; to: "clear_img"; } - text { - text: "Clear all"; - style: "item_style"; - min: 1 0; + state : "default" 0.0; + min : 75 75; + max : 75 75; + fixed : 1 1; + color : 255 255 255 0; + rel1 { + relative : (216-30)/216 40/216 ; + to : "img.app_image"; + } + rel2 { + relative : (216-30)/216 40/216 ; + to : "img.app_image"; } - align: 0.0 0.5; - visible: 1; - fixed: 1 0; + // color: 255 0 0 255; + } + part { + name : "img.recent_delete_bg"; + type : IMAGE ; + scale : 1; + mouse_events : 0; + repeat_events : 0; + clip_to : "color_clipper"; + description{ + state : "default" 0.0; + fixed : 1 1; + rel1 { + relative : (216-63)/216 0; + to : "img.app_image"; + } + rel2 { + relative : (216)/216 63/216 ; + to : "img.app_image"; + } + image.normal : "b_recent_widget_del_bg.png"; + color_class : AO014L1; + } + description { + state : "pressed" 0.0; + inherit : "default" 0.0; + color_class : AO014L1P; } description { - state: "no,apps" 0.0; - inherit: "default" 0.0; - color: 255 255 255 124; + state : "closeall" 0.0; + inherit : "default" 0.0; + min : 40 40; + max : 40 40; + color : 255 255 255 0; } } part { - name: "event"; - type: RECT; + name : "img.recent_delete_icon"; + type : IMAGE ; + scale : 1; + mouse_events : 1; + repeat_events : 1; + clip_to : "color_clipper"; + description{ + state : "default" 0.0s; + fixed : 1 1; + rel1 { + relative : (216-63)/216 0; + to : "img.app_image"; + } + rel2 { + relative : (216)/216 63/216 ; + to : "img.app_image"; + } + image.normal : "b_recent_widget_del_icon.png"; + color_class : AO014L2; + } description { - state: "default" 0.0; - color: 0 0 0 0; - rel1.to: "clear_img"; - rel2.to: "clear_img"; - visible: 1; + state : "pressed" 0.0; + inherit : "default" 0.0; + color_class : AO014L2P; + } + description { + state : "closeall" 0.0; + inherit : "default" 0.0; + min : 40 40; + max : 40 40; + color : 255 255 255 0; + } + } + part{ + name : "img.recent_delete_icon_shadow"; + type : IMAGE ; + scale : 1; + mouse_events : 1; + repeat_events : 1; + clip_to : "color_clipper"; + description{ + state : "default" 0.0s; + fixed : 1 1; + rel1 { + relative : (216-63)/216 0 ; + to : "img.app_image"; + } + rel2 { + relative : (216)/216 63/216 ; + to : "img.app_image"; + } + image.normal : "b_recent_widget_del_shadow.png"; + color_class : AO014L3; } description { - state: "no,apps" 0.0; - inherit: "default" 0.0; - visible: 0; + state : "closeall" 0.0; + inherit : "default" 0.0; + min : 40 40; + max : 40 40; + color : 255 255 255 0; } } - } //parts + + } + programs { program { - name: "click,sound"; - signal: "mouse,clicked,1"; - source: "event"; - action: RUN_PLUGIN "touch_sound"; + name : "show,icon"; + signal : "show,icon"; + source : "bg"; + action : STATE_SET "icon_displaying" 0.0; + target : "img.app_image"; + } + + program { + name : "closeall"; + signal : "closeall"; + source : "bg"; + action : STATE_SET "closeall" 0.0; + target : "img.clipper"; + target : "img.app_image"; + target : "img.circle_bg_mask"; + target : "img.circle_bg_ef1"; + target : "img.circle_bg_ef2"; + target : "color_clipper"; + target : "img.recent_delete_bg"; + target : "img.recent_delete_icon"; + target : "img.recent_delete_icon_shadow"; + transition : LINEAR 0.35; + } + program { + name : "closeall_center"; + signal : "closeall_center"; + source : "bg"; + action : STATE_SET "closeall" 0.0; + target : "img.clipper"; + target : "img.app_image"; + target : "img.circle_bg_mask"; + target : "img.circle_bg_ef1"; + target : "img.circle_bg_ef2"; + target : "color_clipper"; + target : "img.recent_delete_bg"; + target : "img.recent_delete_icon"; + target : "img.recent_delete_icon_shadow"; + transition : LINEAR 0.35; + after : "closeall_emit"; + } + program { + name : "closeall_emit"; + signal : "closeall_emit"; + source : "bg"; + action : SIGNAL_EMIT "closeall_end" "closeall"; + } + program { + name : "delete,clicked"; + signal : "mouse,clicked,1"; + source : "delete.touch"; + action : SIGNAL_EMIT "delete_button,clicked" "clicked"; + } + program { + name : "app,clicked"; + signal : "mouse,clicked,1"; + source : "img.app_image"; + action : SIGNAL_EMIT "app_icon,clicked" "clicked"; } program { - name: "no,app"; - signal: "no,apps"; - source: "clear"; - action: STATE_SET "no,apps" 0.0; - target: "clear_img"; - target: "name"; - target: "event"; + name : "close,pressed"; + signal : "mouse,down,1"; + source : "delete.touch"; + action : SIGNAL_EMIT "delete_button,pressed" "pressed"; + action : STATE_SET "pressed" 0.0; + target : "img.recent_delete_bg"; + target : "img.recent_delete_icon"; + after : "block,scroll"; + } + program { + name : "block,scroll"; + signal : "mouse,down,1"; + source : "delete.touch"; + action : SIGNAL_EMIT "delete_button,pressed" "pressed"; + } + program { + name : "close,unpressed"; + signal : "mouse,up,1"; + source : "delete.touch"; + action : SIGNAL_EMIT "delete_button,unpressed" "unpressed"; + action : STATE_SET "default" 0.0; + target : "img.recent_delete_bg"; + target : "img.recent_delete_icon"; + after : "unblock,scroll"; + } + program { + name : "unblock,scroll"; + signal : "mouse,up,1"; + source : "delete.touch"; + action : SIGNAL_EMIT "delete_button,unpressed" "unpressed"; + } + program { + name : "show,name"; + signal : "show,name"; + source : "bg"; + action : STATE_SET "show" 0.0 ; + target : "txt.app_name"; + transition : LINEAR 0.35; + } + program { + name : "hide,name"; + signal : "hide,name"; + source : "bg"; + action : STATE_SET "hide" 0.0; + target : "txt.app_name"; + transition : LINEAR 0.35; } } - } //group + } } //collections diff --git a/res/edje/layout.edc b/res/edje/layout.edc index 37178c2..7106459 100644 --- a/res/edje/layout.edc +++ b/res/edje/layout.edc @@ -1,99 +1,452 @@ /* - * Task Manager + * Task Manager + * Copyright (c) 2013 Samsung Electronics Co., Ltd. * - * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); + * 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://www.apache.org/licenses/LICENSE-2.0 + * 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, + * 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 : 1.3; + color_classes{ + color_class{ + name: "AO0111"; + color: 38.25 38.25 38.25 255; + } + color_class{ + name: "AO0112"; + color: 0 0 0 255; + } + color_class{ + name: "AO0113"; + color: 94.35 94.35 94.35 255; + } + color_class{ + name: "AO0131"; + color: 255 255 255 38.25; + } + color_class{ + name: "AO0131P"; + color: 255 255 255 127.5; + } + color_class{ + name: "AO0132"; + color: 255 255 255 255; + } + color_class{ + name: "AO0132P"; + color: 255 255 255 127.5; + } -styles { - style { - name: "no_item_style"; - base: "font=Tizen:style=Bold font_size=32 color=#ffffff align=center style=shadow shadow_color=#000000bf wrap=mixed"; - tag: "br" "\n"; - tag: "hilight" "+ font_weight=Bold"; - tag: "b" "+ font_weight=Bold"; - tag: "tab" "\t"; + color_class{ + name: "AO015"; + color: 51 51 51 178.5; + } + color_class{ + name: "AO015P"; + color: 102 102 102 178.5; + } + color_class{ + name: "AO015D"; + color: 33.15 33.15 33.15 255; + } + color_class{ + name: "AT0111"; + color: 255 255 255 255; + } + color_class{ + name: "AT0121"; + color: 255 255 255 255; + } + color_class{ + name: "AT0121P"; + color: 255 255 255 127.5; + } + color_class{ + name: "AT013"; + color: 255 255 255 255; + } + color_class{ + name: "AT013P"; + color: 255 255 255 255; + } + color_class{ + name: "AT013D"; + color: 255 255 255 51; + } + color_class{ + name: "AT014"; + color: 255 255 255 255; + } + color_class{ + name: "AT015"; + color: 76.5 207.4 255 255; + } + color_class{ + name: "AT015P"; + color: 76.5 207.4 255 127.5; + } + color_class{ + name: "AT015D"; + color: 76.5 207.4 255 51; + } } + styles { + style { + name: "style_no_apps"; + base: "font="TIZEN":style=Regular text_class="AT013" font_size=28 align=center color=#FFFFFF wrap=mixed color_class=AT013"; + tag: "br" "\n"; + tag: "hilight" "+ color=#ffff"; + tag: "b" "+ color=#ffff"; + tag: "tab" "\t"; + } + style { + name: "style_recent_name"; + base: "font="TIZEN":style=Medium text_class="AT0111" font_size=30 align=center color=#FFFFFF wrap=mixed color_class=AT0111"; + tag: "br" "\n"; + tag: "hilight" "+ color=#ffff"; + tag: "b" "+ color=#ffff"; + tag: "tab" "\t"; + } } -collections { - base_scale: 2.6; - group { - name: "layout"; +group { + name : "taskmanager-main"; + + images { + image : "recent_no_recent_icon.png" COMP; + image : "tw_no_item_bg.png" COMP; + image : "tw_bottom_btn_bg.png" COMP; + } + parts { part { - name: "bg"; - type: SWALLOW; - scale: 1; + name : "bg"; + type : RECT; + description { + state : "default" 0.0; + color_class : AO0112; + } + /* description + { + state : "noitem" 0.0; + color_class : AO0112; + }*/ + + } + part { + name : "color_clipper"; + type : RECT; + description { + state : "default" 0.0; + color : 255 255 255 255; + } + description { + state : "closeall" 0.0; + color : 255 255 255 0; + } + } + part { + name : "img.no_recent.bg"; + type : IMAGE; + scale : 1; description { - state: "default" 0.0; - rel1 { relative: 0.0 0.0; } - rel2 { relative: 1.0 1.0; } - visible: 1; + state : "default" 0.0; + visible : 0; + } + description { + state : "show" 0.0; + visible : 1; + min : 360 360; + max : 360 360; + rel1 { + relative : 0.5 0.5; + to : "bg"; + } + rel2 { + relative : 0.5 0.5; + to : "bg"; + } + + fixed : 1 1; + color_class : "AO0113"; + image.normal : "tw_no_item_bg.png"; } } part { - name: "scroller"; - type: SWALLOW; - scale: 1; + name : "img.no_recent_clipper"; + type : RECT; description { - state: "default" 0.0; - rel1 { relative: 0.0 0.0; to: "bg"; } - rel2 { relative: 1.0 1.0; to: "bg"; } - align: 0.5 1.0; - visible: 1; + state : "default" 0.0; + color : 255 255 255 204; } } part { - name: "no,apps,txt"; - type: TEXTBLOCK; - scale: 1; + name : "img.no_recent"; + type : IMAGE; + scale : 1; + clip_to : "img.no_recent_clipper"; + description { + state : "default" 0.0; + visible : 0; + } description { - state: "default" 0.0; - color: 255 255 255 255; - rel1 { relative: 0.15 0.4; to: "bg"; } - rel2 { relative: 0.85 0.5; to: "bg"; } + state : "show" 0.0; + visible : 1; + + min : 98 98; + max : 98 98; + + rel1 { + relative : 0.5 0.5; + to : "bg"; + } + rel2 { + relative : 0.5 0.5; + to : "bg"; + } + + fixed : 1 1; + image.normal : "recent_no_recent_icon.png"; + } + } + part { + name : "txt.recent_title"; + type : TEXTBLOCK; + scale : 1; + description { + state : "default" 0.0; + visible : 1; + rel1.relative : 64/360 51/360; + rel2.relative : 296/360 90/360; + align : 0.5 0.5; + fixed : 1 1; text { - text: " "; - style: "no_item_style"; - align: 0.5 0.5; + style : style_recent_name; + min : 0 1; + align : 0.5 0.5; } - visible: 0; } + } + part { + name : "txt.no_apps"; + type : TEXTBLOCK; + scale : 1; description { - state: "show" 0.0; - inherit: "default" 0.0; - visible: 1; + state : "default" 0.0; + visible : 1; + color: 255 0 0 255; } + description { + state : "show" 0.0; + visible : 1; + rel1.relative : 60/360 263/360; + rel2.relative : 300/360 300/360; + align : 0.5 0.5; + fixed : 1 1; + color_class : "AT014"; + text { + text_class: "AT014"; + style : style_no_apps; + min : 0 1; + align : 0.5 0.5; + } + } + } + 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"; + } + } + } + part { + name : "index"; + type : SWALLOW; + clip_to : "color_clipper"; + scale : 1; + repeat_events: 1 ; + description { + state : "default" 0.0; + } + } + /* part { + name : "blocking"; + type : RECT; + scale : 1; + description { + state : "default" 0.0; + color : 0 0 0 0; + rel1.to : "bg"; + rel2.to : "bg"; + } + description { + state : "unblocked" 0.0; + visible : 0; + } + }*/ + part { + name: "close_all_bg"; + type: IMAGE; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.5 1.0; to: "bg"; } + rel2 { relative: 0.5 1.0; to: "bg"; } + image { + normal: "tw_bottom_btn_bg.png"; + } + align: 0.5 1.0; + fixed : 1 1; + min : 360 100; + max : 360 100; + color_class: "AO015"; + fixed: 1 1; + //visible: 0; + } + description { + state: "pressed" 0.50; + inherit: "default" 0.0; + color_class: "AO015P"; + visible: 1; + } + description { + state: "show" 0.50; + inherit: "default" 0.0; + visible: 1; } - } //parts + description { + state: "disabled" 0.50; + inherit: "default" 0.0; + color_class: "AO015D"; + visible: 1; + } + } + part { + name: "close_all_text"; + type: TEXTBLOCK; + scale: 1; + repeat_events: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "close_all_bg"; } + rel2 { relative: 1.0 1.0; to: "close_all_bg"; } + min : 160 42; + max : 160 42; + align: 0.5 0.5; + fixed: 1 1; + visible: 0; + color_class : "AT013"; + text { + text_class: "AT013"; + style : style_no_apps; + min : 0 1; + align : 0.5 0.5; + } + } + description { + state: "pressed" 0.50; + inherit: "default" 0.0; + color_class: "AO015P"; + visible: 1; + } + description { + state: "show" 0.50; + inherit: "default" 0.0; + visible: 1; + } + description { + state: "disabled" 0.50; + inherit: "default" 0.0; + color_class: "AO015D"; + visible: 1; + } + } + } programs { program { - signal: "no,apps,txt,show"; - source: "no,apps,txt"; - action: STATE_SET "show" 0.0; - target: "no,apps,txt"; + name : "show,txt.no_apps"; + signal : "show,txt.no_apps"; + source : "txt.no_apps"; + action : STATE_SET "show" 0.0; + target : "txt.no_apps"; + target : "img.no_recent"; + target : "img.no_recent.bg"; + target : "close_all_text"; + } + /* program { + name : "set,unblock"; + signal : "set,unblock"; + source : "blocking"; + action : STATE_SET "unblocked" 0.0; + target : "blocking"; + }*/ + + program { + name : "close,clicked"; + signal : "mouse,clicked,1"; + source : "close_all_bg"; + action : SIGNAL_EMIT "close_button,clicked" "clicked"; + } + program { + name : "close,pressed"; + signal : "mouse,down,1"; + source : "close.bg"; + action : STATE_SET "pressed" 0.0; + target : "close_all_text"; + target : "close_all_bg"; + } + program { + name : "close,unpressed"; + signal : "mouse,up,1"; + source : "close.bg"; + action : STATE_SET "default" 0.0; + target : "close_all_text"; + target : "close_all_bg"; } program { - signal: "no,apps,txt,hide"; - source: "no,apps,txt"; - action: STATE_SET "default" 0.0; - target: "no,apps,txt"; + name : "close,show"; + signal : "set,close,show"; + source : "close.bg"; + action : STATE_SET "show" 0.0; + target : "close_all_text"; + target : "close_all_bg"; + } + program { + name : "close,default"; + signal : "set,close,default"; + source : "close.bg"; + action : STATE_SET "default" 0.0; + target : "close_all_text"; + target : "close_all_bg"; + } + program { + name : "closeall"; + signal : "closeall"; + source : "bg"; + action : STATE_SET "closeall" 0.0; + target : "color_clipper"; + // transition : LINEAR 0.35; } } - } //group + } } //collections diff --git a/res/icon/org.tizen.task-mgr.png b/res/icon/org.tizen.task-mgr.png index 9765b1b..7f7b406 100644 Binary files a/res/icon/org.tizen.task-mgr.png and b/res/icon/org.tizen.task-mgr.png differ diff --git a/shared/res/org.tizen.task-mgr.png b/shared/res/org.tizen.task-mgr.png new file mode 100644 index 0000000..7f7b406 Binary files /dev/null and b/shared/res/org.tizen.task-mgr.png differ diff --git a/src/item.c b/src/item.c index af78e57..ba09b7d 100644 --- a/src/item.c +++ b/src/item.c @@ -1,20 +1,18 @@ /* - * Task Manager + * Task Manager + * Copyright (c) 2013 Samsung Electronics Co., Ltd. * - * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); + * 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://www.apache.org/licenses/LICENSE-2.0 + * 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, + * 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 @@ -30,30 +28,11 @@ #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) +#define TASKMGR_SIZE 360 +#define VERTICAL_SCROLL_THRESHOLD 20 +#define HORIZONTAL_SCROLL_THRESHOLD 15 + +list_type_default_s *item_get_info(Evas_Object *item) { retv_if(!item, NULL); list_type_default_s *info = NULL; @@ -63,572 +42,376 @@ extern list_type_default_s *item_get_info(Evas_Object *item) return info; } - - -extern void item_clear_set_disable(Evas_Object *scroller) +Ecore_Animator *reverse_animator_add(void *data, Evas_Object *obj) { - 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"); - + main_h main_info = data; + retv_if(main_info == NULL, NULL); + retv_if(obj == NULL, NULL); + + evas_object_hide(obj); + main_info->moving_widget = obj; + Ecore_Animator *animator = ecore_animator_timeline_add(0.2, _deleting_animator_cb, data); + return animator; } - - -static void _clear_all_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source) +static double _get_move(Evas_Coord x1, Evas_Coord y1, Evas_Coord x2, Evas_Coord y2) { - Evas_Object *scroller = data; - ret_if(!scroller); - _D("clear all item is clicked"); - scroller_pop_all_item(scroller, 1); + return ((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)); } - - -extern Evas_Object *item_clear_all_create(Evas_Object *scroller) +void _mouse_up_cb_t(void *data, Evas * evas, Evas_Object * obj, void *event_info) { - retv_if(!scroller, NULL); - - Evas_Object *clear_item = NULL; + int i = 0; + _D("Vijay Mouse up reverse animation"); - clear_item = elm_layout_add(scroller); - retv_if(!clear_item, NULL); + main_h main_info = data; + ret_if(main_info == 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; + if (main_info->reverse_animator) { + _D("reverse animation"); + return; } - elm_object_part_text_set(clear_item, "name", _("IDS_TASKMGR_BUTTON_CLEAR_ALL")); - - elm_object_signal_callback_add(clear_item, "mouse,clicked,1", "event", _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); + Evas_Event_Mouse_Down *ev = event_info; + main_info->posx[POS_UP] = ev->canvas.x; + main_info->posy[POS_UP] = ev->canvas.y; + + gettimeofday(&(main_info->postime[POS_UP]), NULL); + + _D("swipe(%d)", main_info->is_widget_swipe); + main_info->icon_move = false; + + if (main_info->is_widget_swipe == EINA_TRUE) { + if (_get_move(main_info->posx[POS_UP], main_info->posy[POS_UP], main_info->posx[POS_DOWN], main_info->posy[POS_DOWN]) > ((main_info->root_h/2) * (main_info->root_h/2))) { + /* to delete */ + list_type_default_s *task = NULL; + task = item_get_info(obj); + if (task) { + _D("### count(%d)", taskmanager_get_count(main_info)); + /* checking num : end taskmanager */ + if (taskmanager_get_count(main_info) == 0) { + close_button_disabled_set(EINA_TRUE); + end_taskmanager(main_info, EINA_FALSE); + + /* unfreeze */ + unset_freeze_scroller(main_info); + } else { + main_info->reverse_animator = reverse_animator_add(main_info, obj); + if (main_info->reverse_animator == NULL) { + _E("ecore_animator_add() failed"); + elm_box_unpack(main_info->box, obj); + evas_object_data_del(obj, DATA_KEY_ITEM_INFO); + evas_object_del(obj); + obj = NULL; + } + } + if (obj != NULL) { + _D("removed (%s)", task->name); + item_terminate(obj); + elm_box_unpack(main_info->box, obj); + item_destroy(obj); + index_refresh(main_info); + } + } else { + _E("NO TASK"); + /* to origin */ + __set_reverse_animation(main_info, obj); + } + } else if (__check_velocity(main_info)) { + int ox, oy, oh, ow ; + evas_object_geometry_get(obj, &ox, &oy, &ow, &oh); + main_info->deleteX = ox; main_info->deleteY = oy ; + __set_remove_animation(main_info, obj); + } else { + elm_object_signal_emit(obj, "show,name", "bg"); + /* to origin */ + evas_object_resize(obj, TASKMGR_SIZE, TASKMGR_SIZE); + __set_reverse_animation(main_info, obj); + } } else { - elm_box_pack_before(box, item_outer, next_item); + if (main_info->is_scrolled == EINA_TRUE) { + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + _E("event onhold flag set !!!"); + } + // unfreeze + unset_freeze_scroller(main_info); } - 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; + main_info->is_widget_swipe = EINA_FALSE; + main_info->is_scrolled = EINA_FALSE ; + for (i = 0; i < POS_MAX; i++) { + main_info->posx[i] = 0; + main_info->posy[i] = 0; } - 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) +void _mouse_move_cb_t(void *data, Evas * evas, Evas_Object * obj, void *event_info) { - 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; - } + static Eina_Bool is_revised = EINA_FALSE; + int ox, oy, oh, ow; + int distance = 0; + int color = 0; + main_h main_info = data; + ret_if(main_info == NULL); + if (main_info->reverse_animator) { + _D("reverse animation"); + return; } - 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; - } + if (main_info->is_scrolled) { + _D("horizontal scrolling~~~~ so skip move!!!!!"); + return; } - return ECORE_CALLBACK_RENEW; + evas_object_geometry_get(obj, &ox, &oy, &ow, &oh); -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); + if ((main_info->is_widget_swipe == false) && (abs(ox) > HORIZONTAL_SCROLL_THRESHOLD)) { + _D("item is moved more than horizontal threshold(%d)", ox); + return ; } - 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; + list_type_default_s *task = NULL; + task = item_get_info(obj); + _D("task->appid: %s task->name: %s", task->appid, task->name); + Eina_List *list = elm_box_children_get(main_info->box); + int cur_page; + elm_scroller_current_page_get(main_info->scroller, &cur_page, NULL); - int item_outer_w, item_outer_h; + Evas_Object *curr_widget = NULL; + curr_widget = eina_list_nth(list, cur_page); - 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, ELM_SCALE_SIZE(item_outer_w), ELM_SCALE_SIZE(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); + list_type_default_s *info = NULL; + info = item_get_info(curr_widget); + eina_list_free(list); + if (info != task) { + _D("this is not focused object so skip move"); + return ; + } + Evas_Event_Mouse_Down *ev = event_info; + main_info->posx[POS_MOVE] = ev->canvas.x; + main_info->posy[POS_MOVE] = ev->canvas.y; + + if ((abs(main_info->posy[POS_MOVE] - main_info->posy[POS_DOWN]) > VERTICAL_SCROLL_THRESHOLD) && (abs(main_info->posx[POS_MOVE] - main_info->posx[POS_DOWN]) < HORIZONTAL_SCROLL_THRESHOLD)) { + main_info->is_widget_swipe = EINA_TRUE; + main_info->is_widget_history = EINA_TRUE; + /* freeze */ + set_freeze_scroller(); + } - if (scroller_count(scroller) < 2) { - item_clear_set_disable(scroller); + if (main_info->is_widget_swipe == EINA_TRUE) { + /* set swipe */ + evas_object_geometry_get(obj, &ox, &oy, &oh, &ow); + distance = main_info->posy[POS_MOVE] - main_info->posy[POS_DOWN]; + _D("distance : %d", distance); + /* revision once */ + if (is_revised == EINA_FALSE) { + if (distance > 0) + distance -= HORIZONTAL_SCROLL_THRESHOLD; + else + distance += HORIZONTAL_SCROLL_THRESHOLD; + elm_object_signal_emit(obj, "hide,name", "bg"); + is_revised = EINA_TRUE; } - goto ERROR; - } - return ECORE_CALLBACK_RENEW; + main_info->icon_move = true; -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); + evas_object_resize(obj, TASKMGR_SIZE - abs(distance), TASKMGR_SIZE - abs(distance)); + evas_object_move(obj, (abs(distance)/2), distance + (abs(distance)/2)); + /* color control */ + color = (int)(FACTOR_A * abs(distance) + FACTOR_B); + __set_layout_color(obj, color); + } else { + is_revised = EINA_FALSE; } - return ECORE_CALLBACK_CANCEL; } - - -#define TERMINATE_LENGTH 60 -static Eina_Bool _anim_terminate_item(void *data) +void _mouse_down_cb_t(void *data, Evas * evas, Evas_Object * obj, void *event_info) { - 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); + _D("[ == %s == ]", __func__); + main_h main_info = data; + ret_if(main_info == 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; + if (main_info->reverse_animator) { + _D("reverse animation"); + return; } - 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); + Evas_Event_Mouse_Down *ev = event_info; + main_info->posx[POS_DOWN] = ev->canvas.x; + main_info->posy[POS_DOWN] = ev->canvas.y; - /* 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; + if (gettimeofday(&(main_info->postime[POS_DOWN]), NULL) != 0) + return; -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; + _D("down x(%d) y(%d)", main_info->posx[POS_DOWN], main_info->posy[POS_DOWN]); } - - -static void _down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +static void _clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source) { - Evas_Event_Mouse_Down *ei = event_info; - Evas_Object *item_outer = data; - Evas_Object *item_inner = NULL; + _D("Item Clicked"); + main_h main_info = data; + ret_if(!main_info); + const char *appid = 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; + if (main_info->is_widget_history == EINA_TRUE) { + _D("widget is moved so skip launch"); + main_info->is_widget_history = EINA_FALSE ; + } else { + list_type_default_s *info = NULL; - ret_if(!item_outer); + info = item_get_info(obj); + ret_if(!info); - _D("Down (%d, %d)", x, y); + appid = info->appid; + ret_if(!appid); - 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); + util_launch_app(appid); } - - 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) +static Eina_Bool _deleting_widget_cb(void *data, double pos) { - 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); + main_h main_info = data; + retv_if(main_info == NULL, EINA_FALSE); - anim = evas_object_data_get(item_outer, PRIVATE_DATA_KEY_ITEM_ANIM_FOR_MOVING); - if (anim) return; + int ox, oy, oh, ow; + int color = 0; + double moveX = 0, moveY = 0; - 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); + evas_object_geometry_get(main_info->deleting_widget, &ox, &oy, &oh, &ow); - 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); + main_info->icon_move = true; + evas_object_resize(main_info->deleting_widget, TASKMGR_SIZE - (TASKMGR_SIZE * pos), TASKMGR_SIZE -(TASKMGR_SIZE * pos)); + moveX = (TASKMGR_SIZE * pos) / 2; moveY = (TASKMGR_SIZE * pos) / 2; + evas_object_move(main_info->deleting_widget, (TASKMGR_SIZE * pos) / 2, oy + (TASKMGR_SIZE * pos) / 2); - cur_x = ei->cur.output.x; - cur_y = ei->cur.output.y; + _D(" posX= %d, posY= %d, pos= %fl, movex = %fl, movey = %fl", ox, oy, pos, moveX, moveY); - vec_x = cur_x - down_x; - vec_y = cur_y - down_y; + color = (int)(FACTOR_A * (oy + 20) + FACTOR_B); + __set_layout_color(main_info->deleting_widget, color); - outer_x += vec_x; + if (pos < 1.0) + return EINA_TRUE; + main_info->reverse_animator = reverse_animator_add(main_info, main_info->deleting_widget); - 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)); + if (main_info->reverse_animator == NULL) { + _E("ecore_animator_add() failed"); + elm_box_unpack(main_info->box, main_info->deleting_widget); + evas_object_data_del(main_info->deleting_widget, DATA_KEY_ITEM_INFO); + evas_object_del(main_info->deleting_widget); + main_info->deleting_widget = NULL; } + main_info->delete_animator = NULL; + main_info->icon_move = false; - 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); + return EINA_FALSE; } - - -static void _item_terminate_anim(Evas_Object *item_outer) +Ecore_Animator *delete_animator_add(void *data, Evas_Object *obj) { - 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); - } + main_h main_info = data; + retv_if(main_info == NULL, NULL); + retv_if(obj == NULL, NULL); - 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); + main_info->deleting_widget = obj; + Ecore_Animator *animator = ecore_animator_timeline_add(0.3, _deleting_widget_cb, data); + return animator; } - - -static void _up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +static void _item_del_cb(void *data, Evas_Object *obj, const char *emission, const char *source) { - 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); + list_type_default_s *task = NULL; + main_h main_info = data; + ret_if(!main_info); + task = item_get_info(obj); + if (!task) { + _E("can't get the object's data"); + return ; } -} - - - -static void _clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source) -{ - _D("Clicked"); - - ret_if(!data); - Evas_Object *item = data; - Evas_Object *item_inner = NULL; - - const char *appid = NULL; - + Eina_List *list = elm_box_children_get(main_info->box); + int cur_page; + elm_scroller_current_page_get(main_info->scroller, &cur_page, NULL); + Evas_Object *curr_widget = NULL; + curr_widget = eina_list_nth(list, cur_page); 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); - - elm_object_signal_emit(item_inner, "clicked", "event"); - - util_launch_app(appid); - //layout_hide_with_timer(); + info = item_get_info(curr_widget); + eina_list_free(list); + if (task != info) { + _D("this is not focused object so skip delete"); + return ; + } + if (taskmanager_get_count(main_info) == 1) { + item_terminate(obj); + item_destroy(obj); + index_refresh(main_info); + close_button_disabled_set(EINA_TRUE); + end_taskmanager(main_info, EINA_FALSE); + unset_freeze_scroller(main_info); + return; + } else { + main_info->delete_animator = delete_animator_add(main_info, obj); + if (main_info->delete_animator == NULL) { + _E("ecore_animator_add() failed"); + elm_box_unpack(main_info->box, obj); + evas_object_data_del(obj, DATA_KEY_ITEM_INFO); + evas_object_del(obj); + obj = NULL; + return ; + } + } + item_terminate(obj); + item_destroy(obj); + index_refresh(main_info); } - - -extern Evas_Object *item_create(Evas_Object *scroller, list_type_default_s *info) +Evas_Object *item_create(void *data, list_type_default_s *info) { - retv_if(NULL == scroller, NULL); + main_h main_info = data; + retv_if(NULL == main_info, NULL); retv_if(NULL == info, NULL); + int ret = 0; Evas_Object *icon = NULL; Evas_Object *item = NULL; - Evas_Object *item_inner = NULL; - - item = elm_layout_add(scroller); + item = elm_layout_add(main_info->box); retv_if(NULL == item, NULL); - elm_layout_file_set(item, ITEM_LAYOUT, "item"); + char edje_path[PATH_MAX] = {0, }; + ret = getEdjepath(ITEM_LAYOUT, edje_path, sizeof(edje_path)); + retv_if(ret < 0, NULL); + + elm_layout_file_set(item, edje_path, "recent"); 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); + Evas_Object *label = elm_label_add(item); + if (label) { + char buf[256] = {0,}; + ret = snprintf(buf, sizeof(buf) - 1, " %s ", info->name); + retv_if(ret < 0, NULL); + + elm_object_style_set(label, "slide_roll"); + elm_object_text_set(label, buf); + + elm_label_wrap_width_set(label, ELM_SCALE_SIZE(100)); + elm_label_slide_mode_set(label, ELM_LABEL_SLIDE_MODE_ALWAYS); + elm_label_slide_duration_set(label, 3); + evas_object_show(label); + + elm_object_part_content_set(item, "txt.app_name", label); + } + + icon = evas_object_image_add(evas_object_evas_get(item)); goto_if(NULL == icon, ERROR); + + _D("info->icon: %s", info->icon); evas_object_image_file_set(icon, info->icon, NULL); evas_object_image_filled_set(icon, EINA_TRUE); + elm_object_part_content_set(item, "img.app_image", icon); evas_object_show(icon); - elm_object_part_content_set(item_inner, "icon", icon); - elm_object_part_text_set(item_inner, "name", info->name); - - elm_object_signal_callback_add(item_inner, "mouse,clicked,1", "event", _clicked_cb, item); + elm_object_signal_emit(item, "show,icon", "bg"); + elm_object_signal_callback_add(item, "delete_button,clicked", "clicked", _item_del_cb, main_info); + elm_object_signal_callback_add(item, "app_icon,clicked", "clicked", _clicked_cb, main_info); + evas_object_event_callback_add(item, EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb_t, main_info); + evas_object_event_callback_add(item, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb_t, main_info); + evas_object_event_callback_add(item, EVAS_CALLBACK_MOUSE_MOVE, _mouse_move_cb_t, main_info); evas_object_data_set(item, DATA_KEY_ITEM_INFO, info); return item; @@ -638,38 +421,43 @@ ERROR: return NULL; } - - -extern void item_destroy(Evas_Object *item) +void item_destroy(Evas_Object *item) { ret_if(!item); - + _D("Destroying item"); Evas_Object *icon = NULL; Evas_Object *item_inner = NULL; - - item_inner = elm_object_part_content_unset(item, "inner"); - if (!item_inner) { - _E("cannot get the object"); - evas_object_del(item); - return; + list_type_default_s *info = item_get_info(item); + item_inner = elm_object_part_content_unset(item, "txt.app_name"); + if (item_inner) { + _D("Delete the Label if it is NOT NULL."); + evas_object_del(item_inner); + item_inner = NULL; } - icon = elm_object_part_content_unset(item_inner, "icon"); + icon = elm_object_part_content_unset(item, "img.app_image"); if (icon) { + _D("Delete the icon if it is NOT NULL."); evas_object_del(icon); - } else { - _E("cannot get the object"); + icon = NULL; + } + Eina_List *l = NULL; + list_type_default_s *_info = NULL; + main_h main_info = main_get_info(); + EINA_LIST_FOREACH(main_info->pkg_list, l, _info) { + if (_info != info) + continue; + _D("REMOVED pkg : %x count(%d)", info, taskmanager_get_count(main_info->pkg_list)); + _pkglist_unretrieve_item(info); + evas_object_data_del(item, DATA_KEY_ITEM_INFO); + evas_object_del(item); + item = NULL; + main_info->pkg_list = eina_list_remove_list(main_info->pkg_list, l); + break; } - - 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) +void item_terminate(Evas_Object *item) { char *appid = NULL; int ret; @@ -685,14 +473,51 @@ extern void item_terminate(Evas_Object *item) _D("Terminate: %s(%d)", appid, running); if (running) { + _D("App is running. kill the app "); util_kill_app(appid); } - if (0 != rua_delete_history_with_pkgname(appid)) { - _E("Cannot delete history for package(%s)", appid); - } + ret = rua_delete_history_with_pkgname(appid); + if (0 != ret) + _E("Cannot delete history for package(%s) and ret=%d, error:%s", appid, ret, get_error_message(ret)); } +void taskmanager_remove_all_task_info(void *data) +{ + main_h main_info = data; + ret_if(main_info == NULL); + if (eina_list_count(main_info->pkg_list) == 0) { + _D("There is no applist"); + return; + } + + Eina_List *l = NULL; + list_type_default_s *info = NULL; + int ret = 0; + bool running = false; + if (rua_init() == -1) { + _E("rua_init() failed"); + return; + } + char *appid = NULL; + EINA_LIST_FOREACH(main_info->pkg_list, l, info) { + if (!info) + continue; + ret = app_manager_is_running(info->appid, &running); + ret_if(APP_MANAGER_ERROR_NONE != ret); + + _D("Terminate: %s(%d)", appid, running); + if (running) { + _D("App is running. kill the app"); + util_kill_app(appid); + } + ret = rua_delete_history_with_pkgname(appid); + if (0 != ret) + _E("Cannot delete history for package(%s) and ret=%d, error:%s", appid, ret, get_error_message(ret)); + + } + rua_fini(); +} //End of a file diff --git a/src/list.c b/src/list.c index 43bc501..12b552e 100644 --- a/src/list.c +++ b/src/list.c @@ -1,375 +1,230 @@ /* - * Task Manager + * Task Manager + * Copyright (c) 2013 Samsung Electronics Co., Ltd. * - * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); + * 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://www.apache.org/licenses/LICENSE-2.0 + * 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, + * 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 "list.h" #include "log.h" #include "main.h" #include "util.h" +#include "conf.h" -typedef struct pkginfo { - char *appid; - bool taskmanage; - char *pkgid; - char *icon; - char *name; - bool nodisplay; -} private_pkginfo_s; +static struct _info { + Eina_List *app_list; +} s_info; -typedef struct { - char *appid; - int pid; -} private_pid_s; +void _pkglist_unretrieve_item(list_type_default_s *default_info) +{ + if (!default_info) + return; -static struct { - Eina_Hash *pkginfo_table; -} private_table_s = { - .pkginfo_table = NULL, -}; + free(default_info->name); + default_info->name = NULL; + free(default_info->icon); + default_info->icon = NULL; + free(default_info->pkgid); + default_info->pkgid = NULL; -static void _pkglist_unretrieve_item(list_type_default_s *default_info) -{ - if (!default_info) { - return; - } + free(default_info->appid); + default_info->appid = NULL; - 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; - } + free(default_info); + default_info = NULL; } - - -static list_type_default_s *_pkglist_retrieve_item(const char *appid, const char *arg, time_t launch_time) +static list_type_default_s *_pkglist_item_create(app_info_h app_info) { - retv_if(!appid, NULL); + if (!app_info) + return NULL; - private_pkginfo_s *pkg_info = NULL; - list_type_default_s *default_info = NULL; + list_type_default_s *list_item = calloc(1, sizeof(list_type_default_s)); + if (!list_item) + return NULL; + bool running = false; - pkg_info = eina_hash_find(private_table_s.pkginfo_table, appid); - if (!pkg_info) { - _D("app(%s) is not taskmanage app", appid); + int ret = app_info_get_app_id(app_info, &list_item->appid); + if (ret != APP_MANAGER_ERROR_NONE) { + _E("app_info_get_app_id failed[%d]: %s", ret, get_error_message(ret)); + _pkglist_unretrieve_item(list_item); return NULL; } - if (!pkg_info->taskmanage) { - _D("app(%s) is not taskmanage app", appid); + ret = app_manager_is_running(list_item->appid, &running); + if (ret != APP_MANAGER_ERROR_NONE)// || !running) { TODO: why running boolean is used + { + _E("app_manager_is_running failed[%d]: %s", ret, get_error_message(ret)); + _pkglist_unretrieve_item(list_item); 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); + ret = app_info_get_package(app_info, &list_item->pkgid); + if (ret != APP_MANAGER_ERROR_NONE) { + _E("app_info_get_package failed[%d]: %s", ret, get_error_message(ret)); + _pkglist_unretrieve_item(list_item); + return NULL; } - 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; + ret = app_info_get_label(app_info, &list_item->name); + if (ret != APP_MANAGER_ERROR_NONE) { + _E("app_info_get_app_id failed[%d]: %s", ret, get_error_message(ret)); + _pkglist_unretrieve_item(list_item); + return NULL; } - - 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; +//instead of fetching icon for that app, we need to fetch last catpured snapshot. +// But this functionality is not avaiable now. have to change when screen capture functionality avaiable. + ret = app_info_get_icon(app_info, &list_item->icon); + if (ret != APP_MANAGER_ERROR_NONE) { + _E("app_info_get_app_id failed[%d]: %s", ret, get_error_message(ret)); + _pkglist_unretrieve_item(list_item); + return NULL; } - - 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("pkg id: %s", list_item->pkgid); + if (strcmp(list_item->pkgid, "org.tizen.task-mgr") == 0) { + _E("ignoring Recents app"); + _pkglist_unretrieve_item(list_item); + return NULL; } - - _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; + return list_item; } - - -int _get_pkginfo_cb(pkgmgrinfo_appinfo_h app_handle, void *user_data) +static int _launch_time_sort_cb(const void *d1, const void *d2) { - 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; - } + list_type_default_s *tmp1 = (list_type_default_s *) d1; + list_type_default_s *tmp2 = (list_type_default_s *) d2; - 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 (!tmp1) return -1; + if (!tmp2) return 1; - 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); - } + return tmp1->launch_time >= tmp2->launch_time ? -1 : 1; +} - 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; - } +static bool _pkglist_item_append(app_info_h app_info, void *user_data) +{ + struct rua_rec *record = user_data; + retvm_if(!record, false, "record data == NULL"); - eina_hash_add(private_table_s.pkginfo_table, pkg_info->appid, pkg_info); + list_type_default_s *list_item = _pkglist_item_create(app_info); + if (!list_item) + return true; - return PMINFO_R_OK; + list_item->launch_time = record->launch_time; -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); + s_info.app_list = eina_list_sorted_insert(s_info.app_list, _launch_time_sort_cb, list_item); - return PMINFO_R_ERROR; + return false; } - - -static task_mgr_error_e _create_pkginfo_table(void) +static int _pkglist_filter_create(app_info_filter_h *filter) { - _D(""); - pkgmgrinfo_appinfo_filter_h handle; + int ret = app_info_filter_create(filter); + retvm_if(ret != APP_MANAGER_ERROR_NONE, TASK_MGR_ERROR_FAIL, "app_info_filter_create failed"); - 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) { + ret = app_info_filter_add_bool(*filter, PACKAGE_INFO_PROP_APP_TASKMANAGE, true); + if (ret != APP_MANAGER_ERROR_NONE) { + _E("app_info_filer_add_bool failed[%d]: %s", ret, get_error_message(ret)); + app_info_filter_destroy(*filter); 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_NONE; +} + +static int _pkglist_find_and_append_app(struct rua_rec *record, app_info_filter_h *filter) +{ + int ret = app_info_filter_add_string(*filter, PACKAGE_INFO_PROP_APP_ID, record->pkg_name); + if (ret != APP_MANAGER_ERROR_NONE) { + _E("app_info_filter_add_string failed[%d]: %s", ret, get_error_message(ret)); 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); + ret = app_info_filter_foreach_appinfo(*filter, _pkglist_item_append, record); + if (ret != APP_MANAGER_ERROR_NONE) { + _E("app_info_filter_foreach_app_info failed[%d]: %s", ret, get_error_message(ret)); 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)) +Eina_List *list_pkg_list_get(void) { - 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; + return s_info.app_list; } - - -extern task_mgr_error_e list_create(Eina_List **pkg_list) +task_mgr_error_e list_create(void) { - _D(""); - - rua_init(); char **table = NULL; - list_type_default_s *default_info = NULL; + int rows = 0; + int cols = 0; + struct rua_rec record; - int nrows = 0, ncols = 0; - int row = 0; + app_info_filter_h filter; - 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); - } + if (rua_init()) { + _E("rua_init failed"); 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 (rua_history_load_db(&table, &rows, &cols) || !table) { + _E("rua_history_load_db failed"); + return TASK_MGR_ERROR_FAIL; } - if (*pkg_list && TASK_MGR_ERROR_NONE != list_sort(*pkg_list, _launch_time_sort_cb)) { - _E("Cannot sort pkg_list"); + int ret = _pkglist_filter_create(&filter); + retvm_if(ret != TASK_MGR_ERROR_NONE, ret, "_pkglist_taskmanage_filter_create failed"); + + int row; + for (row = 0; row < rows; ++row) { + rua_history_get_rec(&record, table, rows, cols, row); + ret = _pkglist_find_and_append_app(&record, &filter); + if (ret != TASK_MGR_ERROR_NONE) + _W("Could not find or append application to the pkg list"); } - if (!eina_list_count(*pkg_list)) { - _D("list is empty."); - _pkglist_unretrieve_item(default_info); - return TASK_MGR_ERROR_NO_DATA; + rua_history_unload_db(&table); + app_info_filter_destroy(filter); - } + if (rua_fini()) + _E("rua_fini failed"); return TASK_MGR_ERROR_NONE; } - - -extern void list_destroy(Eina_List *pkg_list) +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) { + if (!default_info) continue; - } + _pkglist_unretrieve_item(default_info); } pkg_list = NULL; - rua_fini(); } diff --git a/src/main.c b/src/main.c index 25f26f8..78f0658 100644 --- a/src/main.c +++ b/src/main.c @@ -1,26 +1,22 @@ /* - * Task Manager + * Task Manager + * Copyright (c) 2013 Samsung Electronics Co., Ltd. * - * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); + * 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://www.apache.org/licenses/LICENSE-2.0 + * 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, + * 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" @@ -41,21 +37,20 @@ static main_s main_info = { .scroller = NULL, .box = NULL, .pkg_list = NULL, - + .index = NULL, + .circle_surface = NULL, + .is_scrolled = EINA_FALSE, + .icon_move = EINA_FALSE, .root_w = 0, .root_h = 0, + .cur_page = 0, }; -//main_h main_info_h = &main_info; - - -extern main_h main_get_info(void) +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(""); @@ -71,53 +66,49 @@ static Eina_Bool _back_key_pressed(void *data, Evas_Object *obj, Evas_Object *sr } } - - -static task_mgr_error_e _create_layout(Evas_Object *parent) +static task_mgr_error_e _create_layout(void *data) { _D(""); + main_h main_info = data; Evas_Object *layout = NULL; - Evas_Object *rect = NULL; Eina_Bool ret = EINA_FALSE; // create layout - layout = elm_layout_add(parent); - goto_if (!layout, ERROR); + layout = elm_layout_add(main_info->win); + goto_if(!layout, ERROR); + + char edje_path[PATH_MAX] = {0, }; + int res = 0; + res = getEdjepath(LAYOUT, edje_path, sizeof(edje_path)); + goto_if(res < 0, ERROR); + _D("edje_path is : %s", edje_path); + ret = elm_layout_file_set(layout, edje_path, "taskmanager-main"); - 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_resize(layout, main_info->root_w, main_info->root_h); evas_object_show(layout); - main_info.layout = layout; - - // create layout bg - rect = evas_object_rectangle_add(evas_object_evas_get(layout)); - evas_object_size_hint_min_set(rect, main_info.root_w, main_info.root_h); - evas_object_size_hint_weight_set(rect, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_resize(rect, main_info.root_w, main_info.root_h); - evas_object_color_set(rect, 0, 0, 0, 0); - evas_object_show(rect); - elm_object_part_content_set(layout, BG_PART_NAME, rect); + main_info->layout = layout; // create scroller - main_info.scroller = scroller_create(layout); - goto_if(!main_info.scroller, ERROR); + main_info->scroller = scroller_create(main_info); + 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); + if (layout) { + evas_object_del(layout); + layout = NULL; + } + evas_object_del(main_info->win); + main_info->win = NULL; return TASK_MGR_ERROR_FAIL; } - - static void _destroy_layout(void) { Evas_Object *rect = NULL; @@ -126,61 +117,55 @@ static void _destroy_layout(void) rect = elm_object_part_content_unset(main_info.layout, BG_PART_NAME); if (rect) { evas_object_del(rect); + rect = NULL; } 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; + ret = list_create(); + if (ret != TASK_MGR_ERROR_NONE) { + _E("Could not initialize list module"); + goto END; } - 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"); + + main_info.pkg_list = list_pkg_list_get(); + _D("List count: %d", eina_list_count(main_info.pkg_list)); + + if (!main_info.pkg_list) { + _E("pkg_list is empty"); + elm_layout_signal_emit(main_info.layout, "show,txt.no_apps", "txt.no_apps"); + elm_object_part_text_set(main_info.layout, "txt.no_apps", "No recent apps"); + elm_object_part_text_set(main_info.layout, "txt.recent_title", "Recent apps"); goto END; } - goto_if(TASK_MGR_ERROR_NONE != scroller_push_all_item(main_info.scroller, main_info.pkg_list), END); + goto_if(TASK_MGR_ERROR_NONE != scroller_push_all_item(&main_info), 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.6); + elm_app_base_scale_set(1.3); 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); @@ -194,29 +179,25 @@ static bool _create_cb(void *data) main_info.e = evas_object_evas_get(main_info.win); - if (_create_layout(main_info.win) != TASK_MGR_ERROR_NONE) { + if (_create_layout(&main_info) != TASK_MGR_ERROR_NONE) { _E("Failed to create a layout"); return false; } - + elm_win_resize_object_add(main_info.win, main_info.layout); //create the list timer = evas_object_data_get(main_info.win, PRIVATE_DATA_KEY_LIST_TIMER); - if (timer) { + if (timer) ecore_timer_del(timer); - } timer = ecore_timer_add(0.001f, _list_timer_cb, NULL); - if (timer) { + if (timer) evas_object_data_set(main_info.win, PRIVATE_DATA_KEY_LIST_TIMER, timer); - } else { + else _E("Cannot add a create list timer"); - } return true; } - - static void _terminate_cb(void *data) { _D(""); @@ -227,8 +208,6 @@ static void _terminate_cb(void *data) elm_cache_all_flush(); malloc_trim(0); - appcore_flush_memory(); - scroller_destroy(main_info.scroller); _destroy_layout(); @@ -236,41 +215,30 @@ static void _terminate_cb(void *data) * 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(); + end_taskmanager(data, EINA_TRUE); return; } - - static void _language_changed(app_event_info_h event_info, void *data) { _D(""); } - - int main(int argc, char **argv) { int ret; diff --git a/src/scroller.c b/src/scroller.c index 1b0cb00..06f175e 100644 --- a/src/scroller.c +++ b/src/scroller.c @@ -1,451 +1,623 @@ /* - * Task Manager + * Task Manager + * Copyright (c) 2013 Samsung Electronics Co., Ltd. * - * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); + * 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://www.apache.org/licenses/LICENSE-2.0 + * 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, + * 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 "conf.h" - #include "item.h" - #include "list.h" - #include "log.h" - #include "main.h" - #include "scroller.h" - #include "util.h" +#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" +#define TASK_WIDGET_SIZE_W 216 //220 +#define TASK_WIDGET_SIZE_H 360 +#define TASK_PADDING_SIZE_W 25//19 +#define REVERSE_VALUE 30 +#define REMOVING_VALUE 12 +#define VELOCITY_VALUE 0.45 - -extern task_mgr_error_e scroller_push_item(Evas_Object *scroller, Evas_Object *item) +static inline int __get_msec(struct timeval *s, struct timeval *e) { - _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; - Eina_List *list = NULL; - - box_layout = elm_object_content_get(scroller); - retv_if(!box_layout, TASK_MGR_ERROR_FAIL); - - list = elm_box_children_get(box_layout); - retv_if(!list, TASK_MGR_ERROR_FAIL); + return (e->tv_sec - s->tv_sec) * 1000 + (e->tv_usec - s->tv_usec + 500) / 1000; +} - box = eina_list_nth(list, 0); - retv_if(!box, TASK_MGR_ERROR_FAIL); +void close_button_disabled_set(Eina_Bool is_disabled) +{ + main_h main_info = main_get_info(); - eina_list_free(list); + if (is_disabled) + elm_object_signal_emit(main_info->layout, "set,close,default", "close.bg"); + else { + elm_object_signal_emit(main_info->layout, "set,close,show", "close.bg"); + elm_object_part_text_set(main_info->layout, "close_all_text", "CLOSE ALL"); + } +} +void set_freeze_scroller() +{ + main_h main_info = main_get_info(); + ret_if(main_info == NULL); + ret_if(main_info->scroller == NULL); + ret_if(main_info->box == NULL); - elm_box_pack_end(box, item); + elm_object_scroll_freeze_push(main_info->box); +} - return TASK_MGR_ERROR_NONE; +static Eina_Bool _quit_cb(void *data) +{ + elm_exit(); + return EINA_FALSE; } +int taskmanager_get_count(void *data) +{ + main_h main_info = data; + retv_if(main_info == NULL, 0); + return (eina_list_count(main_info->pkg_list)); +} -extern void scroller_pop_item(Evas_Object *scroller, Evas_Object *item, int terminate) +int end_taskmanager(void *data, Eina_Bool is_direct) { - ret_if(!scroller); - ret_if(!item); + _D("[ == %s == ]", __func__); + struct main_s *ad = data; + retv_if(ad == NULL, -1); - Evas_Object *box_layout = NULL; - Evas_Object *box = NULL; - Evas_Object *tmp_item = NULL; + if (is_direct) + elm_exit(); + else + ecore_timer_add(0.2, _quit_cb, NULL); - Eina_List *box_list = 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); + set_freeze_scroller(); + return 0; +} - box_list = elm_box_children_get(box_layout); - ret_if(!box_list); +static void __close_all_cb(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + _D("[ == %s == ]", __func__); + main_h main_info = data; - box = eina_list_nth(box_list, 0); - ret_if(!box); + taskmanager_remove_all_task_info(main_info); + end_taskmanager(main_info, EINA_TRUE); +} - eina_list_free(box_list); +static void _delete_all_btn_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + main_h main_info = data; + ret_if(main_info == NULL); + _D("[ == %s == ]", __func__); - list = elm_box_children_get(box); - ret_if(!list); + set_freeze_scroller(); - EINA_LIST_FOREACH_SAFE(list, l, ln, tmp_item) { - if (item != tmp_item) continue; - if (terminate) item_terminate(item); + Eina_List *list = elm_box_children_get(main_info->box); + int h_p, v_p; + elm_scroller_current_page_get(main_info->scroller, &h_p, &v_p); + Evas_Object *prev_widget = NULL; + Evas_Object *curr_widget = NULL; + Evas_Object *next_widget = NULL; + if (h_p >= 1) + prev_widget = eina_list_nth(list, h_p-1); - elm_box_unpack(box, item); - item_destroy(item); - break; - } - eina_list_free(list); -} + if (h_p < eina_list_count(list)) + next_widget = eina_list_nth(list, h_p+1); + curr_widget = eina_list_nth(list, h_p); + if (prev_widget) + elm_object_signal_emit(prev_widget, "closeall", "bg"); -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 (next_widget) + elm_object_signal_emit(next_widget, "closeall", "bg"); - 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); + if (curr_widget) { + elm_object_signal_callback_add(curr_widget, "closeall_end", "closeall", __close_all_cb , main_info); + elm_object_signal_emit(curr_widget, "closeall_center", "bg"); } - return TASK_MGR_ERROR_NONE; + elm_object_signal_emit(main_info->layout, "closeall", "bg"); } - - -static Eina_Bool _pop_all_item_cb(void *data) +Eina_Bool __check_velocity(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); + main_h main_info = data; + int x = abs(main_info->posy[POS_UP] - main_info->posy[POS_DOWN]); + int t = __get_msec(&(main_info->postime[POS_DOWN]), &(main_info->postime[POS_UP])); + double v = (double)x/t; - count = eina_list_count(list); - _D("remove list count(include clear button) : %d", count); - if (i >= count-1) goto END; + _D("moving distance [%d]!!!!!!", x); - item = eina_list_nth(list, i); - i++; - goto_if(!item, END); + if (x > REVERSE_VALUE + 10) + return EINA_TRUE; - 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; + if (v > VELOCITY_VALUE) + return EINA_TRUE; + else + return EINA_FALSE; } +void unset_freeze_scroller(void *data) +{ + main_h main_info = data; + ret_if(main_info == NULL); + ret_if(main_info->scroller == NULL); + ret_if(main_info->box == NULL); + while (elm_object_scroll_freeze_get(main_info->box)) + elm_object_scroll_freeze_pop(main_info->box); +} -extern void scroller_pop_all_item(Evas_Object *scroller, int terminate) +void __set_layout_color(Evas_Object *obj, int color) { - Evas_Object *box_layout = NULL; - Evas_Object *box = NULL; - Eina_List *box_list = NULL; - Eina_List *list = NULL; - Eina_List *reverse_list = NULL; - Ecore_Timer *timer = NULL; + Evas_Object *eo = (Evas_Object*)edje_object_part_object_get(elm_layout_edje_get(obj), "color_clipper"); + if (eo) + evas_object_color_set(eo, color, color, color, color); + else + _E("edje_object_part_object_get() failed"); +} - ret_if(!scroller); +static Eina_Bool __reverse_animator_cb(void *data) +{ + int ox = 0, oy = 0, oh = 0, ow = 0; + int distance = 0; + int color = 0; + main_h main_info = data; + retv_if(main_info == NULL, EINA_FALSE); + + evas_object_geometry_get(main_info->moving_widget, &ox, &oy, &oh, &ow); + //distance = abs(ox) - REVERSE_VALUE; + distance = abs(oy) - REVERSE_VALUE; + if (distance <= 0) + distance = 0; + + if (oy >= 0) + evas_object_move(main_info->moving_widget, ox, distance); + else + evas_object_move(main_info->moving_widget, ox, (-1)*distance); + + color = (int)(FACTOR_A * distance + FACTOR_B); + __set_layout_color(main_info->moving_widget, color); + + if (distance <= 0) { + ecore_animator_del(main_info->reverse_animator); + main_info->reverse_animator = NULL; + unset_freeze_scroller(main_info); + return EINA_FALSE; + } else + return EINA_TRUE; +} - 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); +void __set_reverse_animation(void *data, Evas_Object *obj) +{ + int ox = 0, oy = 0, oh = 0, ow = 0; + main_h main_info = data; + ret_if(main_info == NULL); + + main_info->moving_widget = obj; + main_info->reverse_animator = ecore_animator_add(__reverse_animator_cb, data); + if (main_info->reverse_animator == NULL) { + _E("ecore_animator_add() failed"); + evas_object_geometry_get(obj, &ox, &oy, &oh, &ow); + evas_object_move(obj, 0, oy); + __set_layout_color(obj, 255); + main_info->moving_widget = NULL; + /* unfreeze */ + unset_freeze_scroller(main_info); } +} - /* 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); +Eina_Bool _deleting_animator_cb(void *data, double pos) +{ + main_h main_info = data; + retv_if(main_info == NULL, EINA_FALSE); + + Evas_Coord x = 0, y = 0, w = 0, h = 0; + evas_object_geometry_get(main_info->box, &x, &y, &w, &h); + + Eina_List *list_children = elm_box_children_get(main_info->box); + Eina_List *l = NULL; + Evas_Object *obj = NULL; + int order_children = 0; + int is_found = 0; + EINA_LIST_FOREACH(list_children, l, obj) { + if (obj == main_info->moving_widget) + is_found = 1; + if (is_found == 0) + evas_object_move(obj, x + ((TASK_WIDGET_SIZE_W + TASK_PADDING_SIZE_W) * order_children++), y); + else if (is_found == 1) { + is_found = 2; + order_children++; + } else if (is_found == 2) { + evas_object_move(obj, x + ((TASK_WIDGET_SIZE_W + TASK_PADDING_SIZE_W) * (order_children) - (TASK_WIDGET_SIZE_W + TASK_PADDING_SIZE_W)*pos), y); + ++order_children; + } } - - box_layout = elm_object_content_get(scroller); - ret_if(!box_layout); - - box_list = elm_box_children_get(box_layout); - ret_if(!box_list); - - box = eina_list_nth(box_list, 0); - ret_if(!box); - - eina_list_free(box_list); - - 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; + eina_list_free(list_children); + if (pos < 1.0) + return EINA_TRUE; + else { + elm_box_unpack(main_info->box, main_info->moving_widget); + evas_object_data_del(main_info->moving_widget, DATA_KEY_ITEM_INFO); + evas_object_del(main_info->moving_widget); + unset_freeze_scroller(main_info); + main_info->moving_widget = NULL; + main_info->reverse_animator = NULL; + return EINA_FALSE; } - - evas_object_data_set(scroller, PRIVATE_DATA_KEY_POP_ALL_TIMER, timer); } - - - -extern int scroller_count(Evas_Object *scroller) +static Eina_Bool __removing_animator_cb(void *data) { - Evas_Object *box_layout = NULL; - Evas_Object *box = NULL; - Eina_List *box_list = NULL; - Eina_List *list = NULL; - - retv_if(!scroller, 0); - - box_layout = elm_object_content_get(scroller); - retv_if(!box_layout, 0); - - box_list = elm_box_children_get(box_layout); - retv_if(!box_list, 0); - - box = eina_list_nth(box_list, 0); - retv_if(!box, 0); - - eina_list_free(box_list); - - list = elm_box_children_get(box); - if (!list) { - _D("list is null"); - return 0; + int ox = 0, oy = 0, oh = 0, ow = 0; + int distance = 0; + int color = 0; + list_type_default_s *task = NULL; + main_h main_info = data; + retv_if(main_info == NULL, EINA_FALSE); + + if (main_info->moving_widget == NULL) { + ecore_animator_del(main_info->reverse_animator); + main_info->reverse_animator = NULL; + return EINA_FALSE; } - return eina_list_count(list); + evas_object_geometry_get(main_info->moving_widget, &ox, &oy, &ow, &oh); + + if (main_info->deleteX != ox) { + _D(" position is changed in the middle of animation, so adjust x, y position") ; + ox = main_info->deleteX ; + oy = main_info->deleteY ; + } else + main_info->deleteY = oy ; + + distance = abs(oy) + REMOVING_VALUE; + if (distance >= main_info->root_h/2) + distance = main_info->root_h/2; + + if (oy >= 0) + evas_object_move(main_info->moving_widget, ox, distance); + else + evas_object_move(main_info->moving_widget, ox, (-1)*distance); + + color = (int)(FACTOR_A * distance + FACTOR_B); + __set_layout_color(main_info->moving_widget, color); + + if (distance >= main_info->root_h/2) { + ecore_animator_del(main_info->reverse_animator); + main_info->reverse_animator = NULL; + + task = evas_object_data_get(main_info->moving_widget, DATA_KEY_ITEM_INFO); + if (task) { + _D("removed (%s)", task->name); + item_terminate(main_info->moving_widget); + elm_box_unpack(main_info->box, main_info->moving_widget); + item_destroy(main_info->moving_widget); + index_refresh(main_info); + } + elm_box_unpack(main_info->box, main_info->moving_widget); + evas_object_data_del(main_info->moving_widget, DATA_KEY_ITEM_INFO); + evas_object_del(main_info->moving_widget); + main_info->moving_widget = NULL; + + /* checking num : end taskmanager */ + if (taskmanager_get_count(main_info) == 0) + end_taskmanager(main_info, EINA_FALSE); + + unset_freeze_scroller(main_info); + main_info->deleteX = 0 ; + main_info->deleteY = 0 ; + return EINA_FALSE; + } else + return EINA_TRUE; } - - -extern Eina_Bool scroller_is_scrolling(Evas_Object *scroller) +void __set_remove_animation(void *data, Evas_Object *obj) { - return evas_object_data_get(scroller, DATA_KEY_IS_SCROLLING)? EINA_TRUE:EINA_FALSE; + list_type_default_s *task = NULL; + main_h main_info = data; + ret_if(main_info == NULL); + ret_if(obj == NULL); + + main_info->moving_widget = obj; + main_info->reverse_animator = ecore_animator_add(__removing_animator_cb, data); + if (main_info->reverse_animator == NULL) { + _E("ecore_animator_add() failed"); + + elm_box_unpack(main_info->box, obj); + evas_object_data_del(main_info->moving_widget, DATA_KEY_ITEM_INFO); + evas_object_del(main_info->moving_widget); + main_info->moving_widget = NULL; + unset_freeze_scroller(main_info); + close_button_disabled_set(EINA_TRUE); + end_taskmanager(main_info, EINA_FALSE); + } } - - -extern void scroller_freeze(Evas_Object *scroller) +void _index_sync(void *data) { - Evas_Object *box_layout = NULL; - Evas_Object *box = NULL; - Eina_List *list = NULL; + main_h main_info = data; + ret_if(main_info == NULL); + ret_if(main_info->index == NULL); - ret_if(!scroller); + int cur_page = -1; + elm_scroller_current_page_get(main_info->scroller, &cur_page, NULL); - box_layout = elm_object_content_get(scroller); - ret_if(!box_layout); - - list = elm_box_children_get(box_layout); - ret_if(!list); - - box = eina_list_nth(list, 0); - ret_if(!box); - - eina_list_free(list); - - elm_object_scroll_freeze_push(box); -} + int num_index = eina_list_count(main_info->pkg_list); + _D("cur_page: %d List Count: %d", cur_page, num_index); + if (num_index == cur_page) + --cur_page; + int diff = 0; + if (num_index > 19) + diff = num_index - 19; + Elm_Object_Item *it = NULL; + if (diff > 0 && cur_page > 8) { + if (cur_page-diff < 10) + it = elm_index_item_find(main_info->index, (void*)(9)); + else + it = elm_index_item_find(main_info->index, (void*)(cur_page-diff)); -extern void scroller_unfreeze(Evas_Object *scroller) -{ - Evas_Object *box_layout = NULL; - Evas_Object *box = NULL; - Eina_List *list = NULL; - - ret_if(!scroller); + } else + it = elm_index_item_find(main_info->index, (void*)cur_page); - box_layout = elm_object_content_get(scroller); - ret_if(!box_layout); + _D("index(%d) it(%p)", cur_page, it); - list = elm_box_children_get(box_layout); - ret_if(!list); + if (it) + elm_index_item_selected_set(it, EINA_TRUE); - box = eina_list_nth(list, 0); - ret_if(!box); + Eina_List *list = elm_box_children_get(main_info->box); + Evas_Object *curr_widget = NULL; + curr_widget = eina_list_nth(list, cur_page); + Evas_Object *label = elm_object_part_content_get(curr_widget, "txt.app_name"); + if (label) + elm_label_slide_go(label); eina_list_free(list); - - while (elm_object_scroll_freeze_get(box)) { - elm_object_scroll_freeze_pop(box); - } } +void index_create(void *data) +{ + main_h main_info = data; + ret_if(main_info == NULL); + ret_if(main_info->index == NULL); + + int i, num_index; + num_index = eina_list_count(main_info->pkg_list); + + if (num_index > 19) + num_index = 19; + + int is_odd = num_index%2; + Elm_Object_Item *it = NULL; + + for (i = 0; i < num_index; ++i) { + it = elm_index_item_append(main_info->index, NULL, NULL, (void *) i); + if (is_odd) { + _D("style(%s)", style_odd[9-(num_index/2)+i]); + elm_object_item_style_set(it, style_odd[9-(num_index/2)+i]); + } else { + _D("style(%s)", style_even[10-(num_index/2)+i]); + elm_object_item_style_set(it, style_even[10-(num_index/2)+i]); + } + } + elm_index_level_go(main_info->index, 0); + _index_sync(main_info); +} -static void _mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +void index_refresh(void *data) { - _D("Mouse is down"); - evas_object_data_set(obj, PRIVATE_DATA_KEY_MOUSE_DOWN, (void *) 1); -} + main_h main_info = data; + ret_if(main_info == NULL); + ret_if(main_info->index == NULL); + int num_index; + num_index = eina_list_count(main_info->pkg_list); + _D("num_index(%d)", num_index); -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); + elm_index_item_clear(main_info->index); + if (num_index >= 1) + index_create(main_info); } +task_mgr_error_e scroller_push_all_item(void *data) +{ + main_h main_info = data; + const Eina_List *l = NULL; + list_type_default_s *info = NULL; + Evas_Object *item = NULL; + if (!main_info->pkg_list) { + _D("No app in the history list"); + return TASK_MGR_ERROR_NONE; + } -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); -} + EINA_LIST_FOREACH(main_info->pkg_list, l, info) { + if (!info) + continue; + item = item_create(main_info, info); + continue_if(!item); + evas_object_resize(item, main_info->root_w, main_info->root_h); + elm_box_pack_start(main_info->box, item); + } + if (eina_list_count(main_info->pkg_list) == 0) { + /* set no count */ + close_button_disabled_set(EINA_TRUE); + elm_object_signal_emit(main_info->layout, "show,txt.no_apps", "txt.no_apps"); + elm_object_part_text_set(main_info->layout, "txt.no_apps", "No recent apps"); + elm_object_part_text_set(main_info->layout, "txt.recent_title", "Recent apps"); + } else { + // elm_object_signal_emit(main_info->layout, "set,unblock", "blocking"); + close_button_disabled_set(EINA_FALSE); + index_create(main_info); + } + return TASK_MGR_ERROR_NONE; +} -static void _anim_stop_cb(void *data, Evas_Object *scroller, void *event_info) +static void _br_scroller_scrolled_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); + int cur_page = -1; + main_h main_info = data; + ret_if(main_info == NULL); + elm_scroller_current_page_get(main_info->scroller, &cur_page, NULL); + if (main_info->cur_page != cur_page) { + main_info->cur_page = cur_page; + _index_sync(main_info); + } } - - -static void _drag_start_cb(void *data, Evas_Object *scroller, void *event_info) +static void _br_scroller_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); -} + _D("drag starts"); + main_h main_info = data; + ret_if(main_info == NULL); + main_info->is_scrolled = EINA_TRUE; +} +static void _br_scroller_ani_start_cb(void *data, Evas_Object *scroller, void *event_info) +{ + _D("animation starts"); +} -static void _drag_stop_cb(void *data, Evas_Object *scroller, void *event_info) +static void _br_scroller_ani_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); + _D("animation stoped"); } +static void _box_layout_cb(Evas_Object *o, Evas_Object_Box_Data *priv, void *data) +{ + main_h main_info = data; + ret_if(main_info == NULL); + Evas_Coord x = 0, y = 0, w = 0, h = 0; + int n_children = 0; + Evas_Object_Box_Option *opt = NULL; -static void _scroll_cb(void *data, Evas_Object *scroller, void *event_info) -{ - evas_object_data_set(scroller, DATA_KEY_IS_SCROLLING, (void *) 1); -} + evas_object_geometry_get(o, &x, &y, &w, &h); + _D("X: %d, Y: %d, W: %d, H: %d", x, y, w, h); + if (main_info->icon_move == EINA_TRUE) + return; + n_children = eina_list_count(priv->children); + if (n_children == 0) + return; + opt = eina_list_data_get(priv->children); + if (opt == NULL) + return; -static void __resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - Evas_Object *scroller = obj; + if (opt->obj == NULL) + return; - int x, y, w, h; + list_type_default_s *info = item_get_info(opt->obj); + int size_w = (n_children) * (TASK_WIDGET_SIZE_W + TASK_PADDING_SIZE_W) + 47 + TASK_PADDING_SIZE_W + 47; + evas_object_size_hint_min_set(o, size_w, -1); - ret_if(!scroller); + Eina_List *l = NULL; + int order_children = 0; - evas_object_geometry_get(scroller, &x, &y, &w, &h); - _D("%s resize(%d, %d, %d, %d)", data, x, y, w, h); + EINA_LIST_FOREACH(priv->children, l, opt) { + evas_object_move(opt->obj, x + ((TASK_WIDGET_SIZE_W + TASK_PADDING_SIZE_W) * order_children++), y); + } } +/* +static void _scroller_scroll_cb(void *data, Evas_Object *scroller, void *event_info) +{ + int page_no = -1; + main_h main_info = data; + ret_if(!main_info); + elm_scroller_current_page_get(main_info->scrollers, &page_no, NULL); +// Saved.previous_page = page_no; +} +*/ -extern Evas_Object *scroller_create(Evas_Object *layout) +Evas_Object *scroller_create(void *data) { - retv_if(!layout, NULL); + main_h main_info = data; + retv_if(!main_info, NULL); Evas_Object *box = NULL; - Evas_Object *box_layout = NULL; - Evas_Object *rect = NULL; + Evas_Object *index = NULL; + Evas_Object *circle_scroller = NULL; Evas_Object *scroller = NULL; - scroller = elm_scroller_add(layout); + scroller = elm_scroller_add(main_info->layout); retv_if(!scroller, NULL); - - elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_FALSE); + elm_scroller_content_min_limit(scroller, EINA_FALSE, EINA_TRUE); + elm_scroller_bounce_set(scroller, EINA_TRUE, EINA_TRUE); elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF); + elm_object_scroll_lock_y_set(scroller, EINA_TRUE); +// elm_scroller_page_relative_set(scroller, 1.0, 0.0); + elm_scroller_page_scroll_limit_set(scroller, 1, 0); + //evas_object_smart_callback_add(scroller, "scroll", _scroller_scroll_cb, main_info); + evas_object_smart_callback_add(scroller, "scroll,drag,start", _br_scroller_drag_start_cb, main_info); + evas_object_smart_callback_add(scroller, "scroll", _br_scroller_scrolled_cb, main_info); + evas_object_smart_callback_add(scroller, "scroll,anim,start", _br_scroller_ani_start_cb, NULL); + evas_object_smart_callback_add(scroller, "scroll,anim,stop", _br_scroller_ani_stop_cb, NULL); + elm_object_style_set(scroller, "effect"); + elm_object_part_content_set(main_info->layout, "list", scroller); + elm_scroller_page_size_set(scroller, TASK_WIDGET_SIZE_W + TASK_PADDING_SIZE_W, TASK_WIDGET_SIZE_H); - elm_object_part_content_set(layout, "scroller", scroller); evas_object_show(scroller); - evas_object_size_hint_align_set(scroller, 0.5, 1.0); - - 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 another box betweein box and scroller. */ - box_layout = elm_box_add(scroller); - if (!box_layout) { - _E("Fail to create box layout"); - evas_object_del(scroller); - return NULL; - } - elm_box_horizontal_set(box_layout, EINA_FALSE); - elm_box_align_set(box_layout, 0.5, 1.0); - 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); - elm_object_content_set(scroller, box_layout); - evas_object_show(box_layout); box = elm_box_add(scroller); if (!box) { _E("Fail to create box"); - evas_object_del(box_layout); evas_object_del(scroller); + scroller = NULL; return NULL; } - elm_box_horizontal_set(box, EINA_FALSE); - elm_box_align_set(box, 0.5, 1.0); - evas_object_size_hint_align_set(box, 0.5, 1.0); + elm_box_horizontal_set(box, EINA_TRUE); evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_box_pack_end(box_layout, box); + evas_object_size_hint_fill_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_object_content_set(scroller, box); + elm_box_layout_set(box, _box_layout_cb, main_info, NULL); evas_object_show(box); - main_get_info()->box = box; - - evas_object_event_callback_add(scroller, EVAS_CALLBACK_RESIZE, __resize_cb, "scroller"); - evas_object_event_callback_add(box_layout, EVAS_CALLBACK_RESIZE, __resize_cb, "box_layout"); - evas_object_event_callback_add(box, EVAS_CALLBACK_RESIZE, __resize_cb, "box"); + main_info->box = box; + + circle_scroller = eext_circle_object_scroller_add(scroller, main_info->circle_surface); + eext_circle_object_scroller_policy_set(circle_scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF); + eext_rotary_object_event_activated_set(circle_scroller, EINA_TRUE); + evas_object_show(circle_scroller); + + index = elm_index_add(main_info->layout); + elm_object_style_set(index, "circle"); + evas_object_size_hint_weight_set(index, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(index, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_index_horizontal_set(index, EINA_TRUE); + elm_index_autohide_disabled_set(index, EINA_TRUE); + elm_object_part_content_set(main_info->layout, "index", index); + main_info->index = index; + + main_info->cur_page = 0; + edje_object_signal_callback_add(elm_layout_edje_get(main_info->layout), "close_button,clicked", "clicked", _delete_all_btn_clicked_cb, main_info); + close_button_disabled_set(EINA_TRUE); return scroller; } - - void scroller_destroy(Evas_Object *scroller) { ret_if(!scroller); @@ -453,7 +625,6 @@ void scroller_destroy(Evas_Object *scroller) Evas_Object *item = NULL; Evas_Object *box_layout = NULL; Evas_Object *box = NULL; - Evas_Object *rect = NULL; Eina_List *box_list = NULL; Eina_List *list = NULL; @@ -482,19 +653,15 @@ void scroller_destroy(Evas_Object *scroller) } evas_object_del(box); + box = NULL; 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); - + box_layout = NULL; + evas_object_smart_callback_del(scroller, "scroll,drag,start", _br_scroller_drag_start_cb); + evas_object_smart_callback_del(scroller, "scroll", _br_scroller_scrolled_cb); + evas_object_smart_callback_del(scroller, "scroll,anim,start", _br_scroller_ani_start_cb); + evas_object_smart_callback_del(scroller, "scroll,anim,stop", _br_scroller_ani_stop_cb); evas_object_del(scroller); + scroller = NULL; } - - /* End of the file */ diff --git a/src/util.c b/src/util.c index 332b3ee..670728b 100644 --- a/src/util.c +++ b/src/util.c @@ -1,22 +1,21 @@ /* - * Task Manager + * Task Manager + * Copyright (c) 2013 Samsung Electronics Co., Ltd. * - * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); + * 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://www.apache.org/licenses/LICENSE-2.0 + * 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, + * 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 @@ -26,9 +25,7 @@ #include "log.h" #include "util.h" - - -extern Eina_Bool util_kill_app(const char *appid) +Eina_Bool util_kill_app(const char *appid) { app_context_h context = NULL; Eina_Bool ret = EINA_TRUE; @@ -56,7 +53,7 @@ extern Eina_Bool util_kill_app(const char *appid) -extern Eina_Bool util_launch_app(const char *appid) +Eina_Bool util_launch_app(const char *appid) { int ret; bool running = false; @@ -104,6 +101,16 @@ extern Eina_Bool util_launch_app(const char *appid) return EINA_TRUE; } +int getEdjepath(const char *file_in, char *file_path_out, int file_path_max) +{ + int ret = -1; + char *res_path = app_get_resource_path(); + if (res_path) { + ret = snprintf(file_path_out, file_path_max, "%s%s", res_path, file_in); + free(res_path); + } + return ret; +} //End of file diff --git a/task-mgr-spin.creator.user b/task-mgr-spin.creator.user deleted file mode 100644 index 2b896cd..0000000 --- a/task-mgr-spin.creator.user +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - ProjectExplorer.Project.ActiveTarget - 0 - - - ProjectExplorer.Project.EditorSettings - - false - false - true - - Cpp - - CppGlobal - - - - QmlJS - - QmlJSGlobal - - - 2 - UTF-8 - false - 4 - false - true - 1 - true - 1 - true - 1 - 8 - true - 1 - false - true - true - true - - - - ProjectExplorer.Project.PluginSettings - - - - ProjectExplorer.Project.Target.0 - - Desktop - Desktop - {684c47e8-d6bb-4ad1-a9c6-9180bed66dfd} - 0 - 0 - 0 - - /home/khee85/spin/task-mgr-lite - - - - all - - false - - - true - Make - - GenericProjectManager.GenericMakeStep - - 1 - Build - - ProjectExplorer.BuildSteps.Build - - - - - clean - - true - - - true - Make - - GenericProjectManager.GenericMakeStep - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Default - Default - GenericProjectManager.GenericBuildConfiguration - - 1 - - - 0 - Deploy - - ProjectExplorer.BuildSteps.Deploy - - 1 - Deploy locally - - ProjectExplorer.DefaultDeployConfiguration - - 1 - - - - false - false - false - false - true - 0.01 - 10 - true - 1 - 25 - - 1 - true - false - true - valgrind - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - - 2 - - - - false - %{buildDir} - Custom Executable - - ProjectExplorer.CustomExecutableRunConfiguration - 3768 - true - false - false - false - true - - 1 - - - - ProjectExplorer.Project.TargetCount - 1 - - - ProjectExplorer.Project.Updater.EnvironmentId - {34f591bc-6b5b-4cb5-922e-abe922ef66f6} - - - ProjectExplorer.Project.Updater.FileVersion - 15 - - diff --git a/tizen-manifest.xml b/tizen-manifest.xml new file mode 100755 index 0000000..c2ab177 --- /dev/null +++ b/tizen-manifest.xml @@ -0,0 +1,14 @@ + + + + + + org.tizen.task-mgr.png + + + http://tizen.org/privilege/packagemanager.clearcache + http://tizen.org/privilege/appmanager.kill.bgapp + http://tizen.org/privilege/appmanager.launch + http://tizen.org/privilege/packagemanager.info + +