From 11ecf583dd62509f6c231f0790ceffca3e3c1a5b Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E2=80=9Cvijay=2Etiwari=E2=80=9D?= Date: Fri, 2 Sep 2016 13:17:31 +0530 Subject: [PATCH] Recents (TaskManager) App for tizen wearable 3.0 Change-Id: Ibf1a7080fcbb62286b595d6c44e49b924ef01d3c --- .cproject | 561 +++++++++++++++ .exportMap | 4 + .package-stamp | 1 + .project | 46 ++ .rds_delta | 6 + .sdk_delta.info | Bin 0 -> 100038 bytes .tproject | 12 + AUTHORS | 3 +- Build/appendix.mk | 1 + Build/basedef.mk | 14 + Build/flags.mk | 16 + Build/makefile | 275 ++++++++ Build/prepost.mk | 7 + Build/tooldef.mk | 61 ++ CMakeLists.txt | 77 --- LICENSE | 204 ------ LICENSE.Flora | 206 ++++++ WORKSPACE | 1 + build_def.prop | 6 + data/org.tizen.task-mgr.efl | 47 -- data/org.tizen.task-mgr.xml | 4 +- {include => inc}/conf.h | 17 +- inc/item.h | 30 + {include => inc}/list.h | 23 +- {include => inc}/log.h | 49 +- inc/main.h | 62 ++ inc/scroller.h | 42 ++ inc/util.h | 94 +++ include/item.h | 40 -- include/main.h | 41 -- include/scroller.h | 44 -- include/util.h | 52 -- org.tizen.task-mgr.manifest | 11 - packaging/org.tizen.task-mgr.spec | 5 +- project_def.prop | 74 ++ res/CMakeLists.txt | 3 - res/edje/conf.h | 1 - res/edje/images/b_recent_widget_del_bg.png | Bin 0 -> 1707 bytes res/edje/images/b_recent_widget_del_icon.png | Bin 0 -> 1377 bytes res/edje/images/b_recent_widget_del_shadow.png | Bin 0 -> 1560 bytes res/edje/images/fake_image.png | Bin 0 -> 6317 bytes res/edje/images/recent_btn_close_bg.png | Bin 0 -> 1692 bytes res/edje/images/recent_btn_close_icon.png | Bin 0 -> 1294 bytes res/edje/images/recent_circle_bg_mask.png | Bin 0 -> 6317 bytes res/edje/images/recent_no_recent_icon.png | Bin 0 -> 3781 bytes res/edje/images/tw_bottom_btn_bg.png | Bin 0 -> 3246 bytes res/edje/images/tw_no_item_bg.png | Bin 0 -> 91398 bytes res/edje/images/widget_circle_bg_ef1.png | Bin 0 -> 6968 bytes res/edje/images/widget_circle_bg_ef2.png | Bin 0 -> 6053 bytes res/edje/item.edc | 643 ++++++++++++------ res/edje/layout.edc | 471 +++++++++++-- res/icon/org.tizen.task-mgr.png | Bin 57662 -> 7460 bytes shared/res/org.tizen.task-mgr.png | Bin 0 -> 7460 bytes src/item.c | 903 ++++++++++--------------- src/list.c | 397 ++++------- src/main.c | 140 ++-- src/scroller.c | 813 +++++++++++++--------- src/util.c | 29 +- task-mgr-spin.creator.user | 186 ----- tizen-manifest.xml | 14 + 60 files changed, 3483 insertions(+), 2253 deletions(-) create mode 100644 .cproject create mode 100644 .exportMap create mode 100644 .package-stamp create mode 100644 .project create mode 100644 .rds_delta create mode 100644 .sdk_delta.info create mode 100644 .tproject create mode 100644 Build/appendix.mk create mode 100644 Build/basedef.mk create mode 100644 Build/flags.mk create mode 100644 Build/makefile create mode 100644 Build/prepost.mk create mode 100644 Build/tooldef.mk delete mode 100644 CMakeLists.txt delete mode 100755 LICENSE create mode 100644 LICENSE.Flora create mode 100644 WORKSPACE create mode 100644 build_def.prop delete mode 100644 data/org.tizen.task-mgr.efl rename {include => inc}/conf.h (72%) create mode 100644 inc/item.h rename {include => inc}/list.h (59%) rename {include => inc}/log.h (54%) create mode 100644 inc/main.h create mode 100644 inc/scroller.h create mode 100644 inc/util.h delete mode 100644 include/item.h delete mode 100644 include/main.h delete mode 100644 include/scroller.h delete mode 100644 include/util.h delete mode 100644 org.tizen.task-mgr.manifest create mode 100644 project_def.prop delete mode 100644 res/CMakeLists.txt delete mode 120000 res/edje/conf.h create mode 100755 res/edje/images/b_recent_widget_del_bg.png create mode 100755 res/edje/images/b_recent_widget_del_icon.png create mode 100755 res/edje/images/b_recent_widget_del_shadow.png create mode 100755 res/edje/images/fake_image.png create mode 100755 res/edje/images/recent_btn_close_bg.png create mode 100755 res/edje/images/recent_btn_close_icon.png create mode 100755 res/edje/images/recent_circle_bg_mask.png create mode 100755 res/edje/images/recent_no_recent_icon.png create mode 100644 res/edje/images/tw_bottom_btn_bg.png create mode 100755 res/edje/images/tw_no_item_bg.png create mode 100755 res/edje/images/widget_circle_bg_ef1.png create mode 100755 res/edje/images/widget_circle_bg_ef2.png create mode 100644 shared/res/org.tizen.task-mgr.png delete mode 100644 task-mgr-spin.creator.user create mode 100755 tizen-manifest.xml 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 0000000000000000000000000000000000000000..fb0e4f23d6728fc2caccee33460471e5f949d798 GIT binary patch literal 100038 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 PYzme2B2ktxRh0f0`dN#r literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..27e25bc8f238644fbb3fd7905cd21fa8dab1dbf3 GIT binary patch literal 1707 zcmbVNYfuwc6pm8ff>xA@;E6}g*sISYKxAd76qar6AMT;2(~{Qe{^Sd@4e@q@0{EA)O)WvBB8^NTGRa(x8KX(HL7C8$xG9u;co5-|{Mg((9DjMM;D!#bk{wuZ4i#mzuI+8TO98PX-E;~1ZO_;MdkWeV(fLsoj%c3+`mOLY=v9gSokVy*& zW^ULlR~+L9CnXfJ7ZZ5*8g{0^}(IfT7f& zxX~pDa~0@iya;B-*JIikGhqP6GYsReVGsp@3IQUcXmde96a+n7F-pamV70ir}r~+phgEP|A%N_OI)2Eg7BG#qhEFof}3g*}v-! zIJ~+new*k0-Bcy+gm`UL34cEKsq1;yIt z8d7noJzV^?O;<5wXmJ=ma8_qHt6BMSDF1w*{lpx*aY>iH@xsm{0zucKW#NMZljXc(UF$cB4z23IqXCXzSBRgcy-QpV2g|B`a zTT9MI|LFPV)UIfLZ8f7;f4J#;r1Dd?yM505*c*EnwX`YAPKo%Zj{&{M7xk2;UT=WI znKq*M+$ZgDvjhzDEq}6Fy=l-?rP}a$S++H){K(k;GiL*bT7K!QxxX zhGLn&-^%?3Y}F=@o3WSUf@`A~l5ex0|5d)Grzfa>#oobdIk%ymo=@)`b42NT0+s1% z>quF*{&Dl2qX#!HPi^a7ct2&#`WYT^6@9SkhQ5d~a*9bc7Hz>TxBM+*L|;A4jkeT_ V4mYjrZ+87Y;uQ(V3E7&0e*jz}l7avL literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..0b1f72f29218c8d44adcefb972dc9441f591752a GIT binary patch literal 1377 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 literal 0 HcmV?d00001 diff --git a/res/edje/images/fake_image.png b/res/edje/images/fake_image.png new file mode 100755 index 0000000000000000000000000000000000000000..1d1614549b3ca9d4be6b90022dc83e932f22269e GIT binary patch literal 6317 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..356aa43bb6cae011dcd5e71a258c3f6c3c9c5663 GIT binary patch literal 1692 zcmaJ?eM}Q)9Igewkg^SHGYZD@(1}WWZ7I~AE!a}P4$Anbf`b92J?L4kSK2ErDB@Hm zf*A~r)RFm#5tINL+=w{93Cyp=jX53Yplgi=UB=fy=8W!&fcs7mhloff67ej;qB0^Bi3ZO^06C`0MiLN} zCO`KEBBD^-R-wvdB3Tgwt8t92a$(q3%s{d!6j7Mfpi=7)0?0(NQN0)(YHbGrR3iqH zf)yNvAso@7n+uFcVnM7@U7%A7HDFjMAhN=w0EQ4Mz>4MQO|VrAPU*tr-erbBU_<&B=wxU?5j( z|JCXl6FEPw?d;%^huP6b^yIu7$-#bBoVk(wUcBToiPGBlDCLfBsf50(w|JA}U6FM} z83#&%g%_0cu0;2E`k51SSxH_H+UUuMPA3<}*j(u;UdIE9_;>8#_J| z6}kO+@oDmEH^-q(OSIIp-n;HE%vffn2{}yz4 zv|3-;wnlD_b?#`(t+p7%Ev#!RtCWq@vb5aH_!o!k9H~c>x@$)R#_{V1D+;zeK?je< z#7B4@d(m*6Z)1*}@9-aZm~z)1e3fNKnVpc^N0h3Y?-kma!=l9_OFGKD1D4mkTx~b| zIa05OGORICK4WXHd8EBRvTnF-_s<(+FCC}m?SF0Gw=?4^wP%$diREMG|T_mYID?2B-K3*S&;PH8EI~J1ThYU{4^F*;TWoE z>h;rgpkcYMa6%sC=WG_#g+>=--V5ulE-eu#&aL>)36(Jd;~D(@%hzffz^g&N;3tfH}7L-wX_sQIZJqsFxw=~_X_ZDyVfZ#u8aNnz|eNZIM(n~TwMCx zHYq6XEP|WMeKAH?J2rS(>Ub7&<#dHLYW!=$cd|x~1$~uUzYcuWQ~$7po|dEBk>6Vs zu9AP+7yU|6indn%ap*{8eE{g2^cDuCgc3xv$)34d|y#woS?B>m1zw?Vs=F6C-a&z%bWKgqa zY;%}Sxpc_Pv{}!uj{8z^rTlq;a~JmDcOC2Lvfky)$)vuJUvU`7ARC}|~=NsQq+u+H*cB&_(K9Khz2TA3+{ulCySXqNKW6wWc CAdmh4 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..1d36546d282a7eaaaeeb722e3c63b1e4a0627319 GIT binary patch literal 1294 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..556a7929fb28193bee150551c760d3c30ed92d37 GIT binary patch literal 3781 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d924082db332b4cb7c06492e14f8d36a58070c6a GIT binary patch literal 3246 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..2e06046e40b26efaec02a8f4c3e23609962ee527 GIT binary patch literal 91398 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 JPDHLkV1gm{OO^lt literal 57662 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 icL?+9<|q}6{~rL_dKuK_C%Gp80000 @@ -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 + + -- 2.7.4