C_DEPS +=
-SYSROOT := $(SBI_SYSROOT)
+USES_EFL = yes
+USES_USR_INC = yes
-ROOTSTRAP_INCS := $(addprefix -I $(SYSROOT)/,$(PLATFORM_INCS_EX))
-EFL_INCS :=
+SYSROOT = $(SBI_SYSROOT)
+
+USR_INCS := $(addprefix -I $(SYSROOT),$(PLATFORM_INCS_EX))
+EFL_INCS =
+
+ifeq ($(strip $(PLATFORM_LIB_PATHS)),)
+RS_LIB_PATHS := "$(SYSROOT)/usr/lib"
+else
+RS_LIB_PATHS := $(addprefix -L$(SYSROOT),$(PLATFORM_LIB_PATHS))
+endif
RS_LIBRARIES := $(addprefix -l,$(RS_LIBRARIES_EX))
-PLATFORM_INCS := $(ROOTSTRAP_INCS) $(EFL_INCS) \
- -I"$(SDK_PATH)/library"
+PLATFORM_INCS = $(USR_INCS) $(EFL_INCS) \
+ -I"$(SDK_PATH)/library"
+OS_NAME := $(shell $(UNAME))
--- /dev/null
+# C/C++ build script
+
+
+_FUNC_EXT2O = $(patsubst %.$(3),$(1)/%.o,$(2))
+_FUNC_C2O = $(call _FUNC_EXT2O,$(1),$(2),c)
+_FUNC_CPP2O = $(call _FUNC_EXT2O,$(1),$(2),cpp)
+
+
+# parameter :
+# $(1) - C/C++ soruce file
+# $(2) - output path
+# $(3) - .ext
+CONVERT_ESC_EXT_TO_O = $(addprefix $(2)/,$(call CONVERT_4MAKE_TO_OUT,$(patsubst %.$(3),%.o,$(1))))
+
+CONVERT_ESC_C_TO_O = $(call CONVERT_ESC_EXT_TO_O,$(1),$(2),c)
+CONVERT_ESC_CPP_TO_O = $(call CONVERT_ESC_EXT_TO_O,$(1),$(2),cpp)
+
+
+# parameter :
+# $(1) - encoded one C/C++ soruce file
+# $(2) - output path
+# $(3) - ext title (C/C++)
+# $(4) - ext (c/cpp)
+# $(5) - compiler ($(CC)/$(CXX))
+# $(6) - build opt
+# $(7) - build opt file
+# output :
+# $(8) - output files list
+define C_BUILD_PROC_RAW
+$(call CONVERT_ESC_EXT_TO_O,$(1),$(2),$(4)) : $(call DECODE_4MAKE,$(1)) $(7)
+ @echo ' Building file: $$<'
+ @echo ' Invoking: $(3) Compiler'
+ $$(call MAKEDIRS,$$(@D))
+ $(5) -c "$$<" -o "$$@" $(6) @$(7)
+ @echo ' Finished building: $$<'
+$(8) += $(call CONVERT_ESC_EXT_TO_O,$(1),$(2),$(4))
+endef
+
+
+# parameter :
+# $(1) - output paths
+# $(2) - src paths
+# $(3) - inc paths
+# $(4) - inc files
+# $(5) - Defs
+# $(6) - UnDefs
+# $(7) - compiler opt
+# $(8) - compiler opt file
+# $(9) - ext title (C/C++)
+# $(10) - ext (c/cpp)
+# $(11) - compiler ($(CC)/$(CXX))
+# output :
+# $(12) - OBJS
+# return :
+# none
+define C_PROC_RAW
+
+_OUTPUT_DIR := $$(strip $(1))#
+_SRCS := $(2)#
+_INCS := $(3)#
+_INC_FILES := $(4)#
+_DEFS := $(5)#
+_UNDEFS := $(6)#
+
+_OPT := $(7)
+_OPT_FILE := $(8)
+
+_EXT_TITLE := $(9)
+_EXT := $(10)
+_COMPILER := $(11)
+
+#_OUTPUT_FILES := $(12)
+
+_ENC_SRCS := $$(call ENCODE_4MAKE,$$(_SRCS))
+_ENC_SRCS := $$(filter %.$$(_EXT),$$(_ENC_SRCS))
+
+ifneq ($$(strip $$(_SRCS)),)
+
+_NORMAL_SRCS := $$(filter-out %*.$$(_EXT),$$(_ENC_SRCS))
+_WIDLCARD_SRCS := $$(filter %*.$$(_EXT),$$(_ENC_SRCS))
+
+_ALL_SRCS := $$(call DECODE_4MAKE,$$(_NORMAL_SRCS)) \
+ $$(foreach var,$$(_WIDLCARD_SRCS),$$(call FIND_FILES_4MAKE,$$(call DECODE_4MAKE,$$(var))))
+
+ifneq ($$(strip $$(_ALL_SRCS)),)
+
+_ENC_SRCS := $$(call ENCODE_4MAKE,$$(_ALL_SRCS))
+
+_CDEFS := $$(CDEFS)
+_CDEFS += $$(addprefix -D,$$(_DEFS))
+_CDEFS += $$(addprefix -U,$$(_UNDEFS))
+
+_ENC_C_INCS := $$(call ENCODE_4MAKE,$$(_INCS))
+_ENC_C_INCS := $$(addprefix -I,$$(_ENC_C_INCS))
+
+_ENC_INC_FILES := $$(call ENCODE_4MAKE,$$(_INC_FILES))
+_ENC_INC_FILES += $$(addprefix -include,$$(_ENC_INC_FILES))
+
+_C_INCS := $$(call DECODE_4MAKE,$$(_ENC_C_INCS) $$(_ENC_C_INC_FILES))
+
+_DEFS := $$(_CDEFS) $$(_C_INCS) -I"pch" $$(_OPT)
+
+$$(foreach var,$$(_ENC_SRCS),$$(eval $$(call C_BUILD_PROC_RAW,$$(var),$$(_OUTPUT_DIR),$$(_EXT_TITLE),$$(_EXT),$$(_COMPILER),$$(_DEFS),$$(_OPT_FILE),$(12))))
+
+endif # (_(strip _(_ALL_SRCS)),)
+
+endif # (_(strip _(_SRCS)),)
+
+
+endef
--- /dev/null
+# EDC build script
+
+
+FUNC_EDC2EDJ = $(patsubst %.edc,$(2)/%.edj,$(1))
+
+# parameter :
+# $(1) - C/C++ soruce file
+# $(2) - output path
+CONVERT_ESC_EDC_TO_EDJ = $(call CONVERT_4MAKE_TO_OUT,$(call FUNC_EDC2EDJ,$(1),$(2)))
+
+
+# parameter :
+# $(1) - encoded one C/C++ soruce file
+# $(2) - output path
+# $(3) - build opt
+# output :
+# $(4) - output files list
+define EDJ_BUILD_PROC_RAW
+$(call CONVERT_ESC_EDC_TO_EDJ,$(1),$(2)) : $(call DECODE_4MAKE,$(1))
+ @echo ' Building file: $$<'
+ @echo ' Invoking: EDC Resource Compiler'
+ $$(call MAKEDIRS,$$(@D))
+ $$(EDJE_CC) $(3) "$$<" "$$@"
+ @echo ' Finished building: $$<'
+$(4) += $(call CONVERT_ESC_EDC_TO_EDJ,$(1),$(2))
+endef
+
+
+# parameter :
+# $(1) - output paths
+# $(2) - src paths
+# $(3) - image inc paths
+# $(4) - sound inc paths
+# $(5) - font inc paths
+# output :
+# $(6) - OBJS
+# return :
+# none
+define EDJ_PROC_RAW
+
+_OUTPUT_DIR := $$(strip $(1))#
+_SRCS := $(2)#
+_IMAGE_DIRS := $(3)#
+_SOUND_DIRS := $(4)#
+_FONT_DIRS := $(5)#
+
+ifneq ($$(strip $$(_SRCS)),)
+
+_ENC_SRCS := $$(call ENCODE_4MAKE,$$(_SRCS))
+
+_NORMAL_SRCS := $$(filter-out %*.edc,$$(_ENC_SRCS))
+_WIDLCARD_SRCS := $$(filter %*.edc,$$(_ENC_SRCS))
+
+_ALL_SRCS := $$(call DECODE_4MAKE,$$(_NORMAL_SRCS)) \
+ $$(foreach var,$$(_WIDLCARD_SRCS),$$(call FIND_FILES_4MAKE,$$(call DECODE_4MAKE,$$(var))))
+
+ifneq ($$(strip $$(_ALL_SRCS)),)
+
+_ENC_SRCS := $$(call ENCODE_4MAKE,$$(_ALL_SRCS))
+
+_COMPILER_FLAGS := -id "$$(SDK_TOOLPATH)/enventor/share/enventor/images"
+_COMPILER_FLAGS += -sd "$$(SDK_TOOLPATH)/enventor/share/enventor/sounds"
+_COMPILER_FLAGS += -fd "$$(SDK_TOOLPATH)/enventor/share/enventor/fonts"
+
+ifneq ($$(strip $$(_IMAGE_DIRS)),)
+_COMPILER_FLAGS += $$(addprefix -id ,$$(_IMAGE_DIRS))
+endif
+ifneq ($$(strip $$(_SOUND_DIRS)),)
+_COMPILER_FLAGS += $$(addprefix -sd ,$$(_SOUND_DIRS))
+endif
+ifneq ($$(strip $$(_FONT_DIRS)),)
+_COMPILER_FLAGS += $$(addprefix -fd ,$$(_FONT_DIRS))
+endif
+
+$$(foreach var,$$(_ENC_SRCS),$$(eval $$(call EDJ_BUILD_PROC_RAW,$$(var),$$(_OUTPUT_DIR),$$(_COMPILER_FLAGS),$(6))))
+
+endif # (_(strip _(_ALL_SRCS)),)
+
+endif # (_(strip _(_SRCS)),)
+
+endef
--- /dev/null
+# PO build script
+
+
+_FUNC_PO2MO = $(patsubst %.po,$(2)/res/locale/%/LC_MESSAGES/$(3).mo,$(notdir $(1)))
+
+
+# parameter :
+# $(1) - C/C++ soruce file
+# $(2) - output path
+# $(3) - app name
+CONVERT_ESC_PO_TO_MO = $(call CONVERT_4MAKE_TO_OUT,$(call _FUNC_PO2MO,$(1),$(2),$(3)))
+
+
+# parameter :
+# $(1) - encoded one C/C++ soruce file
+# $(2) - output path
+# $(3) - app name
+# output :
+# $(4) - output files list
+define MO_BUILD_PROC_RAW
+$(call CONVERT_ESC_PO_TO_MO,$(1),$(2),$(3)) : $(call DECODE_4MAKE,$(1))
+ @echo ' Building file: $$<'
+ @echo ' Invoking: msgfmt String Formatter'
+ $$(call MAKEDIRS,$$(@D))
+ $$(MSGFMT) -o "$$@" "$$<"
+ @echo ' Finished building: $$<'
+$(4) += $(call CONVERT_ESC_PO_TO_MO,$(1),$(2),$(3))
+endef
+
+
+# parameter :
+# $(1) - output dir
+# $(2) - src paths
+# $(3) - app name
+# output :
+# $(4) - OBJS
+
+define MO_PROC_RAW
+
+_PROJ_ROOT := $(1)
+_SRCS := $(2)
+_APPNAME := $(3)
+
+ifneq ($$(strip $$(_SRCS)),)
+
+_ENC_SRCS := $$(call ENCODE_4MAKE,$$(_SRCS))
+
+_NORMAL_SRCS := $$(filter-out %*.po,$$(_ENC_SRCS))
+_WIDLCARD_SRCS := $$(filter %*.po,$$(_ENC_SRCS))
+
+_ALL_SRCS := $$(call DECODE_4MAKE,$$(_NORMAL_SRCS)) \
+ $$(foreach var,$$(_WIDLCARD_SRCS),$$(call FIND_FILES_4MAKE,$$(call DECODE_4MAKE,$$(var))))
+
+ifneq ($$(strip $$(_ALL_SRCS)),)
+
+_ENC_SRCS := $$(call ENCODE_4MAKE,$$(_ALL_SRCS))
+
+$$(foreach var,$$(_ENC_SRCS),$$(eval $$(call MO_BUILD_PROC_RAW,$$(var),$$(_OUTPUT_DIR),$$(_APPNAME),$(4))))
+
+endif # (_(strip _(_ALL_SRCS)),)
+
+endif # (_(strip _(_SRCS)),)
+
+endef
--- /dev/null
+
+BSLASH := \\#
+NULL_CHAR := #
+SPACE := \ #
+COLON := :#
+DOTDOT := ..#
+SPACE_ESC := &sp;#
+COLON_ESC := &co;#
+SPACE_OUT := ~sp~#
+COLON_OUT := ~co~#
+DOTDOT_OUT := ~dtdt~#
+
+BSLASH2SLASH = $(subst $(BSLASH),/,$(1))
+
+REMOVE_TAIL = $(patsubst %/,%,$(1))
+
+#LOWER_CASE = $(shell echo translit($(1),[A-Z],[a-z])|$(M4))
+LOWER_CASE = $(shell echo $(1)|$(TR) [A-Z] [a-z])
+
+#ifneq ($(findstring Windows,$(OS)),)
+# ...
+#endif
+
+FIND_FILES = $(shell $(FIND) $(1)/$(2) | $(SED) 's/^$(subst /,$(BSLASH)/,$(1))$(BSLASH)///')
+FIND_FILES_ESC = $(shell $(FIND) $(1)/$(2) | $(SED) 's/^$(subst /,$(BSLASH)/,$(1))$(BSLASH)///' -e 's/:/$(BSLASH)&co;/g' -e 's/$(BSLASH) /$(BSLASH)&sp;/g')
+FIND_FILES_4MAKE = $(shell $(FIND) $(1)/$(2) | $(SED) 's/^$(subst /,$(BSLASH)/,$(1))$(BSLASH)///')
+
+FIND_FILES_ABS = $(shell $(FIND) $(1))
+FIND_FILES_ABS_4MAKE = $(shell $(FIND) $(1) -e 's/$(BSLASH) /$(BSLASH)&sp;/g')
+FIND_FILES_ABS_ESC = $(shell $(FIND) $(1) -e 's/:/$(BSLASH)&co;/g' -e 's/$(BSLASH) /$(BSLASH)&sp;/g')
+
+FIND_FILES_4MAKE = $(shell $(FIND) $(1) | $(SED) 's/ /\\\ /g')
+
+#ENCODE_ESC = $(shell echo $(1) | $(SED) -e 's/:/$(BSLASH)&co;/g' -e 's/$(BSLASH) /$(BSLASH)&sp;/g')
+#DECODE_ESC = $(shell echo $(1) | $(SED) -e 's/$(BSLASH)&co;/:/g' -e 's/$(BSLASH)&sp;/$(BSLASH) / g')
+ENCODE_ESC = $(subst $(SPACE),$(SPACE_ESC),$(subst $(COLON),$(COLON_ESC),$(1)))
+DECODE_ESC = $(subst $(COLON_ESC),$(COLON),$(subst $(SPACE_ESC),$(SPACE),$(1)))
+ENCODE_4MAKE = $(subst $(SPACE),$(SPACE_ESC),$(1))
+DECODE_4MAKE = $(subst $(SPACE_ESC),$(SPACE),$(1))
+
+CONVERT_TO_OUT = $(subst $(DOTDOT),$(DOTDOT_OUT),$(subst $(COLON),$(COLON_OUT),$(subst $(SPACE),$(SPACE_OUT),$(1))))
+CONVERT_ESC_TO_OUT = $(subst $(DOTDOT),$(DOTDOT_OUT),$(subst $(COLON_ESC),$(COLON_OUT),$(subst $(SPACE_ESC),$(SPACE_OUT),$(1))))
+CONVERT_4MAKE_TO_OUT = $(subst $(DOTDOT),$(DOTDOT_OUT),$(subst $(COLON),$(COLON_OUT),$(subst $(SPACE_ESC),$(SPACE_OUT),$(1))))
+
+PROC_NO_EXIST = $(if $(wildcard $(1)),,$(call $(2),$(1)))
+define MAKEDIRS0
+ @echo ' Building directory: $(1)'
+ @$(MKDIR) $(MKDIR_OP) $(subst $(BSLASH),/,$(1))
+endef
+MAKEDIRS = $(call PROC_NO_EXIST,$(1),MAKEDIRS0)
-BUILD_SCRIPT_VERSION := 1.0.7
+#
+# Usege : make -f <proj_root>/Build/makefile -C <proj_root>
+#
+
+BUILD_SCRIPT_VERSION := 1.1.0
-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))
+.PHONY : app_version app_build app_clean build_version
-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"
+all : app_build
-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
+clean : app_clean
-$$(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
+version : build_version
-# 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
+#PROJ_ROOT = .
+BUILD_ROOT := $(PROJ_PATH)/Build#
-# 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)))
+ifeq ($(MAKE_NAME),mingw32-make)
+ifneq ($(SHELL),)
+OPTIONS += --eval="SHELL=$(SHELL)"
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_build :
+ @echo $(MAKE) -f "$(BUILD_ROOT)/makefile.mk"
+ @$(MAKE) -f "$(BUILD_ROOT)/makefile.mk" -C "$(PROJ_PATH)" $(OPTIONS)
app_clean :
- rm -f "$(APPFILE)"
- rm -rf "$(OUTPUT_DIR)"
+ @$(MAKE) -f "$(BUILD_ROOT)/makefile.mk" -C "$(PROJ_PATH)" $(OPTIONS) clean
-make_version :
- @echo $(BUILD_SCRIPT_VERSION)
+build_version :
+ @echo makefile : $(BUILD_SCRIPT_VERSION)
+ @$(MAKE) -f "$(BUILD_ROOT)/makefile.mk" -C "$(PROJ_PATH)" $(OPTIONS) version
--- /dev/null
+#
+# Usege : make -f <proj_root>/Build/makefile -C <proj_root>
+#
+
+BUILD_SCRIPT_VERSION := 1.2.0
+
+.PHONY : app_version app_clean build_version
+
+
+all : app_build
+
+clean : app_clean
+
+version : build_version
+
+
+#PROJ_ROOT := $(call BSLASH2SLASH,$(PROJPATH))
+PROJ_ROOT := .
+BUILD_ROOT := $(PROJ_ROOT)/Build
+
+include $(PROJ_ROOT)/project_def.prop
+-include $(PROJ_ROOT)/build_def.prop
+
+include $(BUILD_ROOT)/funcs.mk
+
+-include $(BUILD_ROOT)/basedef.mk
+-include $(BUILD_ROOT)/tooldef.mk
+-include $(BUILD_ROOT)/flags.mk
+
+
+APPTYPE := $(type)
+
+OUTPUT_DIR := $(PROJ_ROOT)/$(BUILD_CONFIG)
+OBJ_OUTPUT := $(OUTPUT_DIR)/objs
+
+LOWER_APPNAME := $(call LOWER_CASE,$(APPNAME))
+APPID2 := $(subst $(basename $(APPID)).,,$(APPID))
+
+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
+
+include $(BUILD_ROOT)/build_c.mk
+
+
+ifeq ($(strip $(APPTYPE)),app)
+EXT_OP := -fPIE
+endif
+ifeq ($(strip $(APPTYPE)),staticLib)
+EXT_OP := -fPIE
+endif
+ifeq ($(strip $(APPTYPE)),sharedLib)
+EXT_OP := -fPIC
+endif
+
+C_OPT := $(C_COMPILE_FLAGS) $(TC_COMPILER_MISC) $(RS_COMPILER_MISC) $(EXT_OP) --sysroot="$(SYSROOT)" -Werror-implicit-function-declaration $(M_OPT)
+CPP_OPT := $(CPP_COMPILE_FLAGS) $(TC_COMPILER_MISC) $(RS_COMPILER_MISC) $(EXT_OP) --sysroot="$(SYSROOT)" -Werror-implicit-function-declaration $(M_OPT)
+C_OPT_FILE := $(PLATFORM_INCS_FILE)
+
+OBJS := #
+
+# Global C/C++
+ifeq ($(strip $(USER_ROOT)),)
+USER_ROOT := $(PROJ_ROOT)
+endif
+$(eval $(call C_PROC_RAW,$(OBJ_OUTPUT),$(USER_SRCS),$(USER_INC_DIRS),$(USER_INC_FILES),$(USER_DEFS),$(USER_UNDEFS),$(C_OPT),$(C_OPT_FILE),C,c,$(CC),OBJS))
+$(foreach ext,cpp cxx cc c++ C,$(eval $(call C_PROC_RAW,$(OBJ_OUTPUT),$(USER_SRCS),$(USER_INC_DIRS),$(USER_CPP_INC_FILES),$(USER_CPP_DEFS),$(USER_CPP_UNDEFS),$(CPP_OPT),$(C_OPT_FILE),C++,$(ext),$(CXX),OBJS)))
+
+# Individual C/C++
+ifneq ($(strip $(USER_EXT_C_KEYS)),)
+$(foreach var,$(USER_EXT_C_KEYS),$(eval $(call C_PROC_RAW,$(OBJ_OUTPUT),$(USER_EXT_$(var)_SRCS),$(USER_EXT_$(var)_INC_DIRS),$(USER_EXT_$(var)_INC_FILES),$(USER_EXT_$(var)_DEFS),$(USER_EXT_$(var)_UNDEFS),$(C_OPT),$(C_OPT_FILE),C,c,$(CC),OBJS)))
+$(foreach ext,cpp cxx cc c++ C,$(foreach var,$(USER_EXT_C_KEYS),$(eval $(call C_PROC_RAW,$(OBJ_OUTPUT),$(USER_EXT_$(var)_SRCS),$(USER_EXT_$(var)_INC_DIRS),$(USER_EXT_$(var)_CPP_INC_FILES),$(USER_EXT_$(var)_CPP_DEFS),$(USER_EXT_$(var)_CPP_UNDEFS),$(C_OPT),$(C_OPT_FILE),C++,$(ext),$(CXX),OBJS))))
+endif
+
+
+ifneq ($(strip $(USER_LIB_DIRS)),)
+_ENC_USER_LIB_DIRS := $(call ENCODE_4MAKE,$(USER_LIB_DIRS))
+_ENC_USER_LIB_DIRS := $(addprefix -L,$(call $(_ENC_USER_LIB_DIRS))
+LIBPATHS := $(call DECODE_4MAKE,$(_ENC_USER_LIB_DIRS))
+endif
+
+LIBS += $(addprefix -l,$(USER_LIBS))
+
+UOBJS += $(USER_OBJS)
+
+M_OPT = -MMD -MP -MF"$(@:%.o=%.d)"
+
+DEPS := $(OBJS:.o=.d)
+
+ifneq ($(strip $(DEPS)),)
+-include $(PROJ_ROOT)/Build/$(DEPS)
+endif
+
+
+ifeq ($(strip $(APPTYPE)),app)
+$(APPFILE) : $(OBJS) $(UOBJS)
+ @echo ' Building target: $@'
+ @echo ' Invoking: C/C++ Linker'
+ $(call MAKEDIRS,$(@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_ROOT)/.exportMap" $(RS_LIB_PATHS) $(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'
+ $(call MAKEDIRS,$(@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'
+ $(call MAKEDIRS,$(@D))
+ $(CXX) -o $(APPFILE) $(OBJS) $(UOBJS) $(LIBPATHS) -Xlinker --as-needed $(LIBS) $(LINK_FLAGS) $(TC_LINKER_MISC) $(RS_LINKER_MISC) -shared -lpthread --sysroot="$(SYSROOT)" $(RS_LIB_PATHS) $(RS_LIBRARIES)
+ @echo ' Finished building target: $@'
+endif
+
+
+$(OBJ_OUTPUT) :
+ $(call MAKEDIRS,$@)
+
+$(OUTPUT_DIR) :
+ $(call MAKEDIRS,$@)
+
+
+ifneq ($(strip $(PLATFORM_INCS)),)
+$(PLATFORM_INCS_FILE) : $(OBJ_OUTPUT)
+ @echo ' Building inc file: $@'
+ifneq ($(findstring Windows,$(OS)),)
+ifneq ($(findstring 3.82,$(MAKE_VERSION)),)
+ $(file > $@,$(PLATFORM_INCS))
+else
+ @echo $(PLATFORM_INCS) > $@
+endif
+else
+ @echo $(PLATFORM_INCS) > $@
+endif
+endif
+
+
+include $(BUILD_ROOT)/build_edc.mk
+
+EDJ_FILES :=
+
+# Global EDCs
+ifneq ($(strip $(USER_EDCS)),)
+$(eval $(call EDJ_PROC_RAW,$(OUTPUT_DIR),$(USER_EDCS),$(USER_EDCS_IMAGE_DIRS),$(USER_EDCS_SOUND_DIRS),$(USER_EDCS_FONT_DIRS),EDJ_FILES))
+endif
+
+# Individual EDCs
+ifneq ($(strip $(USER_EXT_EDC_KEYS)),)
+$(foreach var,$(USER_EXT_EDC_KEYS),$(eval $(call EDJ_PROC_RAW,$(OUTPUT_DIR),$(USER_EXT_$(var)_EDCS),$(USER_EXT_$(var)_EDCS_IMAGE_DIRS),$(USER_EXT_$(var)_EDCS_SOUND_DIRS),$(USER_EXT_$(var)_EDCS_FONT_DIRS),EDJ_FILES)))
+endif
+
+
+include $(BUILD_ROOT)/build_po.mk
+
+MO_FILES :=
+
+# Global POs
+ifneq ($(strip $(USER_POS)),)
+$(eval $(call MO_PROC_RAW,$(OUTPUT_DIR),$(USER_POS),$(APPID2),MO_FILES))
+endif
+
+
+secondary-outputs : $(EDJ_FILES) $(MO_FILES)
+
+-include appendix.mk
+
+app_build : $(OUTPUT_DIR) $(APPFILE) secondary-outputs
+ @echo ========= done =========
+
+
+app_clean :
+ rm -f $(APPFILE)
+ rm -rf $(OUTPUT_DIR)
+
+build_version :
+ @echo makefile.mk : $(BUILD_SCRIPT_VERSION)
BUILD_CONFIG = Debug
endif
+ifneq ($(strip $(PROJROOT)),)
+PROJPATH := $(PROJROOT)
+endif
+
ifeq ($(strip $(OUTPUT_DIR)),)
OUTPUT_DIR := $(PROJPATH)/$(BUILD_CONFIG)
endif
+ifneq ($(strip $(SHELL_BIN)),)
+SHELL = $(SHELL_BIN)
+else
+SHELL = sh
+endif
ifneq ($(strip $(MKDIR_BIN)),)
MKDIR = $(MKDIR_BIN)
FIND = find
endif
+ifneq ($(strip $(SED_BIN)),)
+SED = $(SED_BIN)
+else
+SED = sed
+endif
+
ifneq ($(strip $(GREP_BIN)),)
GREP = $(GREP_BIN)
else
--- /dev/null
+
+# Add pre/post build process
+PREBUILD_DESC =
+PREBUILD_COMMAND =
+POSTBUILD_DESC =
+POSTBUILD_COMMAND =
double period;
int allow_duplicate;
Evas_Object *widget_layout;
+ Evas_Object *widget_content;
} widget_data_t;
void cluster_data_init(void);
#include <Elementary.h>
#include "cluster_data.h"
+#include "cluster_page.h"
#include "view.h"
Evas_Object *cluster_view_create(Evas_Object *parent);
bool cluster_view_set_state(view_state_t state);
void cluster_view_delete_widget(widget_data_t *item);
bool cluster_view_add_widget(widget_data_t *item, bool scroll);
+void cluster_view_edit_on_done(cluster_page_t *page);
#endif /* __CLUSTER_VIEW_H__ */
#define SIGNAL_SET_BLACK_TEXT "set_black_text"
#define SIGNAL_EDIT_MODE_ON_ANI "edit_on_ani"
#define SIGNAL_EDIT_MODE_ON "edit_on"
+#define SIGNAL_EDIT_MODE_ON_DONE "edit_on_done"
#define SIGNAL_EDIT_MODE_OFF_ANI "edit_off_ani"
#define SIGNAL_EDIT_MODE_OFF "edit_off"
+#define SIGNAL_EDIT_MODE_OFF_DONE "edit_off_done"
#define SIGNAL_CHOOSER_MODE_ON "chooser_on"
#define SIGNAL_CHOOSER_MODE_OFF "chooser_off"
#define SIGNAL_CHOOSER_MODE_ON_FOLDER "chooser_on_folder"
#define GROUP_WIDGET_LY "widget_ly"
#define WIDGET_CONTENT "widget_content"
+#define WIDGET_THUMBNAIL "widget_thumbnail"
#define WIDGET_DELETE_BUTTON "widget_delete_button"
#define SIGNAL_DELETE_BUTTON_SHOW_ANI "delete_button_show_ani"
#define SIGNAL_DELETE_BUTTON_HIDE_ANI "delete_button_hide_ani"
void widget_viewer_init(Evas_Object *win);
void widget_viewer_fini(void);
-Evas_Object *widget_viewer_add_widget(Evas_Object *parent, widget_data_t *item, int *widget_width, int *widget_height);
-void widget_viewer_send_cancel_click_event(widget_data_t *widget);
+void widget_viewer_add_widget(Evas_Object *parent, widget_data_t *item, int *widget_width, int *widget_height);
+void widget_viewer_send_cancel_click_event(widget_data_t *item);
+void widget_viewer_thumbnail_add(widget_data_t *item);
+void widget_viewer_thumbnail_delete(widget_data_t *item);
#endif /* __WIDGET_VIEWER_H__ */
action: STATE_SET "edit" 0.0;
target: CLUSTER_BG;
transition: DECELERATE ANIMATION_RESIZE_TIME;
+ after: "edit_mode_on_done";
+ }
+ program {
+ name: "edit_mode_on_done";
+ action: SIGNAL_EMIT SIGNAL_EDIT_MODE_ON_DONE SIGNAL_SOURCE;
}
program {
name: "edit_mode_off";
action: STATE_SET "default" 0.0;
target: CLUSTER_BG;
transition: DECELERATE ANIMATION_RESIZE_TIME;
+ after: "edit_mode_off_done";
+ }
+ program {
+ name: "edit_mode_off_done";
+ action: SIGNAL_EMIT SIGNAL_EDIT_MODE_OFF_DONE SIGNAL_SOURCE;
}
}
}
rel1.relative: 0.0 0.0;
}
}
+ part { name: WIDGET_THUMBNAIL;
+ type: SWALLOW;
+ mouse_events: 1;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ rel1.relative: 0.0 0.0;
+ }
+ }
part { name: SIZE_SETTER;
type: SWALLOW;
mouse_events: 1;
#include "conf.h"
#include "edc_conf.h"
#include "util.h"
+#include "widget_viewer.h"
+#include "cluster_view.h"
+
+static void __cluster_page_set(cluster_page_t *page, widget_data_t *item);
+static void __cluster_page_print_space(cluster_page_t *page);
+static void __cluster_page_get_widget_size(widget_size_type_e type, int *w, int *h);
+
+static void __cluster_page_edit_on_done(void *data, Evas_Object *obj, const char *emission, const char *source);
+static void __cluster_page_edit_off_done(void *data, Evas_Object *obj, const char *emission, const char *source);
-void __cluster_page_set(cluster_page_t *page, widget_data_t *item);
-void __cluster_page_print_space(cluster_page_t *page);
-void __cluster_page_get_widget_size(widget_size_type_e type, int *w, int *h);
cluster_page_t *cluster_page_new(Evas_Object* parent)
{
evas_object_show(grid);
elm_layout_content_set(page_t->page_layout, CLUSTER_BOX, grid);
page_t->grid = grid;
+
+ elm_object_signal_callback_add(page_t->page_layout, SIGNAL_EDIT_MODE_ON_DONE, SIGNAL_SOURCE,
+ __cluster_page_edit_on_done, (void *)page_t);
+ elm_object_signal_callback_add(page_t->page_layout, SIGNAL_EDIT_MODE_OFF_DONE, SIGNAL_SOURCE,
+ __cluster_page_edit_off_done, (void *)page_t);
+
return page_t;
}
}
}
-void __cluster_page_set(cluster_page_t *page, widget_data_t *item)
+static void __cluster_page_set(cluster_page_t *page, widget_data_t *item)
{
int w, h;
int i, j;
return true;
}
-void __cluster_page_print_space(cluster_page_t *page)
+static void __cluster_page_print_space(cluster_page_t *page)
{
LOGD("=========================================");
int i;
LOGD("=========================================");
}
-void __cluster_page_get_widget_size(widget_size_type_e type, int *w, int *h)
+static void __cluster_page_get_widget_size(widget_size_type_e type, int *w, int *h)
{
switch (type) {
case WIDGET_SIZE_TYPE_4x2:
break;
}
}
+
+static void __cluster_page_edit_on_done(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ cluster_page_t *page_t = (cluster_page_t *)data;
+ cluster_view_edit_on_done(page_t);
+}
+
+static void __cluster_page_edit_off_done(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ cluster_page_t *page_t = (cluster_page_t *)data;
+ Eina_List *find_list;
+ widget_data_t *item;
+
+ EINA_LIST_FOREACH(page_t->widget_list, find_list, item) {
+ widget_viewer_thumbnail_delete(item);
+ }
+}
Eina_List *data_list = cluster_data_get_widget_list();
Eina_List *find_list = NULL;
- cluster_page_t *page_item = NULL;
- EINA_LIST_FOREACH(cluster_view_s.page_list, find_list, page_item) {
- if (page_item->page_layout) {
- elm_object_signal_emit(page_item->page_layout, SIGNAL_EDIT_MODE_ON, SIGNAL_SOURCE);
- }
- }
-
widget_data_t *item = NULL;
EINA_LIST_FOREACH(data_list, find_list, item) {
if (item->widget_layout) {
if (!cluster_view_s.picked_widget || item->widget_layout != cluster_view_s.picked_widget->widget_layout)
+ {
elm_object_signal_emit(item->widget_layout, SIGNAL_DELETE_BUTTON_SHOW_ANI, SIGNAL_SOURCE);
+ } else {
+ evas_object_event_callback_add(item->widget_content, EVAS_CALLBACK_MOUSE_DOWN, __clsuter_view_widget_down_cb, item);
+ evas_object_event_callback_add(item->widget_content, EVAS_CALLBACK_MOUSE_MOVE, __clsuter_view_widget_move_cb, item);
+ evas_object_event_callback_add(item->widget_content, EVAS_CALLBACK_MOUSE_UP, __clsuter_view_widget_up_cb, item);
+ }
+ widget_viewer_thumbnail_add(item);
elm_object_signal_emit(item->widget_layout, SIGNAL_CLUSTER_EDIT_STATE, SIGNAL_SOURCE);
}
}
+
+ cluster_page_t *page_item = NULL;
+ EINA_LIST_FOREACH(cluster_view_s.page_list, find_list, page_item) {
+ if (page_item->page_layout) {
+ elm_object_signal_emit(page_item->page_layout, SIGNAL_EDIT_MODE_ON, SIGNAL_SOURCE);
+ }
+ }
} else if (state == VIEW_STATE_NORMAL) {
if (cluster_view_s.view_state == VIEW_STATE_EDIT) {
homescreen_efl_btn_show(HOMESCREEN_VIEW_HOME);
}
}
+void cluster_view_edit_on_done(cluster_page_t *page)
+{
+ if (cluster_view_s.picked_widget) {
+ if (page->page_index == cluster_view_s.picked_widget->page_idx) {
+ cluster_page_unset(page, cluster_view_s.picked_widget);
+ cluster_mouse_info.offset_x *= 0.9;
+ cluster_mouse_info.offset_y *= 0.9;
+ }
+ }
+}
+
static void __cluster_view_scroll_to_home(void)
{
__cluster_view_scroll_to_page(CLUSTER_HOME_PAGE, true);
{
int w, h;
LOGD("Create Widget: pkg[%s], type[%d]", item->pkg_name, item->type);
- item->widget_layout = widget_viewer_add_widget(cluster_view_s.win, item, &w, &h);
+ widget_viewer_add_widget(cluster_view_s.win, item, &w, &h);
evas_object_event_callback_add(item->widget_layout, EVAS_CALLBACK_MOUSE_DOWN, __clsuter_view_widget_down_cb, item);
evas_object_event_callback_add(item->widget_layout, EVAS_CALLBACK_MOUSE_MOVE, __clsuter_view_widget_move_cb, item);
evas_object_event_callback_add(item->widget_layout, EVAS_CALLBACK_MOUSE_UP, __clsuter_view_widget_up_cb, item);
elm_scroller_movement_block_set(cluster_view_s.scroller, ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL);
- __cluster_view_edit_pick_up_widget(data);
-
widget_viewer_send_cancel_click_event(widget);
+ __cluster_view_edit_pick_up_widget(data);
+
return ECORE_CALLBACK_CANCEL;
}
cluster_page_t *page = (cluster_page_t *)eina_list_nth(cluster_view_s.page_list, cluster_view_s.picked_widget->page_idx);
- cluster_page_unset(page, cluster_view_s.picked_widget);
-
if (cluster_view_s.view_state == VIEW_STATE_NORMAL) {
- evas_object_resize(widget_layout, gw * 0.9, gh * 0.9);
-
- cluster_mouse_info.offset_x *= 0.9;
- cluster_mouse_info.offset_y *= 0.9;
-
cluster_view_set_state(VIEW_STATE_EDIT);
+ } else {
+ cluster_page_unset(page, cluster_view_s.picked_widget);
}
elm_object_signal_emit(widget_layout, SIGNAL_DELETE_BUTTON_HIDE_ANI, SIGNAL_SOURCE);
cluster_view_s.animation_from_y = cluster_mouse_info.move_y - cluster_mouse_info.offset_y;
cluster_page_t *page = (cluster_page_t *)eina_list_nth(cluster_view_s.page_list, cluster_view_s.current_page);
+ cluster_page_unset(page, cluster_view_s.picked_widget);
cluster_page_get_highlight_xy(page, &to_x, &to_y);
if (to_x == INIT_VALUE || to_y == INIT_VALUE) {
cluster_page_check_empty_space_pos(page, cluster_view_s.picked_widget, &to_x, &to_y);
cluster_view_s.animation_to_y = to_y;
cluster_view_s.edit_animator = ecore_animator_timeline_add(HOME_ANIMATION_TIME, __cluster_view_edit_move_anim, NULL);
+
+ evas_object_event_callback_del(cluster_view_s.picked_widget->widget_content, EVAS_CALLBACK_MOUSE_DOWN, __clsuter_view_widget_down_cb);
+ evas_object_event_callback_del(cluster_view_s.picked_widget->widget_content, EVAS_CALLBACK_MOUSE_MOVE, __clsuter_view_widget_move_cb);
+ evas_object_event_callback_del(cluster_view_s.picked_widget->widget_content, EVAS_CALLBACK_MOUSE_UP, __clsuter_view_widget_up_cb);
}
static Eina_Bool __cluster_view_edit_move_anim(void *data, double pos)
{
widget_viewer_evas_fini();
}
-Evas_Object *widget_viewer_add_widget(Evas_Object *parent, widget_data_t *item, int *widget_width, int *widget_height)
+void widget_viewer_add_widget(Evas_Object *parent, widget_data_t *item, int *widget_width, int *widget_height)
{
Evas_Object *widget_layout;
elm_object_part_content_set(widget_layout, SIZE_SETTER, rect);
#ifndef _TEST_
+ int w, h;
Evas_Object *widget = widget_viewer_evas_add_widget(widget_layout, item->pkg_name, NULL, item->period);
- //evas_object_smart_callback_add(widget, WIDGET_SMART_SIGNAL_WIDGET_CREATED, __widget_viewer_widget_create_cb, NULL);
evas_object_size_hint_align_set(widget, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(widget, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_color_set(widget, 255, 255, 255, 255);
+
+ //Notify widget_size_type_e to widget application.
+ widget_service_get_size(item->type, &w, &h);
+ evas_object_resize(widget, w, h);
#else // for TEST
/* Evas_Object *widget = evas_object_rectangle_add(evas_object_evas_get(widget_layout));
evas_object_size_hint_align_set(widget, EVAS_HINT_FILL, EVAS_HINT_FILL);
Ecore_Timer *timer = ecore_timer_add(1, __widget_viewer_test_timer_cb, widget);
#endif
elm_object_part_content_set(widget_layout, WIDGET_CONTENT, widget);
-
elm_object_signal_callback_add(widget_layout, SIGNAL_DELETE_BUTTON_CLICKED, SIGNAL_SOURCE, __widget_viewer_delete_btn_clicked_cb, (void *)item);
evas_object_show(widget);
evas_object_show(widget_layout);
- return widget_layout;
+ item->widget_content = widget;
+ item->widget_layout = widget_layout;
}
static void __widget_viewer_delete_btn_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
cluster_data_delete(item);
}
-void widget_viewer_send_cancel_click_event(widget_data_t *widget)
+void widget_viewer_send_cancel_click_event(widget_data_t *item)
{
Evas_Object *widget_obj = NULL;
- widget_obj = elm_object_part_content_get(widget->widget_layout, WIDGET_CONTENT);
+ widget_obj = elm_object_part_content_get(item->widget_layout, WIDGET_CONTENT);
widget_viewer_evas_cancel_click_event(widget_obj);
}
+
+void widget_viewer_thumbnail_add(widget_data_t *item)
+{
+ Evas_Object *image = NULL;
+
+ image = evas_object_image_filled_add(evas_object_evas_get(item->widget_layout));
+ if (!image) {
+ LOGE("Could not create image proxy object");
+ return;
+ }
+
+ if (!evas_object_image_source_set(image, item->widget_content)) {
+ evas_object_del(image);
+ LOGE("Could not set proxy image source");
+ return;
+ }
+
+ evas_object_image_source_visible_set(image, EINA_FALSE);
+
+ int gw, gh;
+ evas_object_geometry_get(item->widget_layout, NULL, NULL, &gw, &gh);
+ evas_object_image_fill_set(image, 0, 0, gw, gh);
+ evas_object_show(image);
+
+ elm_object_part_content_set(item->widget_layout, WIDGET_THUMBNAIL, image);
+ elm_object_part_content_unset(item->widget_layout, WIDGET_CONTENT);
+}
+
+void widget_viewer_thumbnail_delete(widget_data_t *item)
+{
+ if (item && item->widget_layout && item->widget_content) {
+ Evas_Object *image = NULL;
+ image = elm_object_part_content_get(item->widget_layout, WIDGET_THUMBNAIL);
+ evas_object_image_source_visible_set(image, EINA_TRUE);
+ elm_object_part_content_unset(item->widget_layout, WIDGET_THUMBNAIL);
+ evas_object_del(image);
+ elm_object_part_content_set(item->widget_layout, WIDGET_CONTENT, item->widget_content);
+ }
+}