From ed1a6793cb62b767d39b19473adafaaaefc1ae71 Mon Sep 17 00:00:00 2001 From: Kim Kibum Date: Mon, 9 Apr 2012 12:12:43 +0900 Subject: [PATCH] Tizen release 1.0 --- CMakeLists.txt | 86 +++++ debian/changelog | 35 ++ debian/compat | 1 + debian/control | 19 ++ debian/dirs | 2 + debian/docs | 2 + debian/libug-calendar-picker-efl.install.in | 2 + debian/libug-calendar-picker-efl.postinst | 3 + debian/rules | 129 +++++++ images/00_calend_picker_bar_button.png | Bin 0 -> 3325 bytes images/00_calend_picker_bar_button_press.png | Bin 0 -> 3376 bytes images/00_calend_picker_panel.png | Bin 0 -> 3164 bytes images/00_list_bar_press_1x80.png | Bin 0 -> 2872 bytes images/00_picker_arrow_left.png | Bin 0 -> 3117 bytes images/00_picker_arrow_left_press.png | Bin 0 -> 3025 bytes images/00_picker_arrow_right.png | Bin 0 -> 3109 bytes images/00_picker_arrow_right_press.png | Bin 0 -> 3006 bytes images/00_picker_bg_brown.png | Bin 0 -> 3881 bytes images/00_picker_btn_normal.png | Bin 0 -> 299 bytes images/00_picker_btn_press.png | Bin 0 -> 302 bytes images/bg_org.png | Bin 0 -> 2825 bytes images/list_body_bg.png | Bin 0 -> 2829 bytes packaging/ug-calendar-picker-efl.spec | 41 +++ po/CMakeLists.txt | 24 ++ po/POTFILES.in | 2 + po/en_GB.po | 15 + po/en_US.po | 15 + po/ja.po | 15 + po/ko.po | 15 + po/ug-calendar-picker-efl.pot | 26 ++ po/update-po.sh | 57 ++++ po/zh_CN.po | 15 + src/CalendarPickerGadget.cpp | 229 +++++++++++++ src/CalendarPickerGadget.h | 64 ++++ src/CalendarPickerView.cpp | 251 ++++++++++++++ src/CalendarPickerView.h | 49 +++ ug-calendar-picker-efl.desktop.in | 7 + ug-calendar-picker-efl.edc | 493 +++++++++++++++++++++++++++ ug-calendar-picker-efl_macro.edc | 95 ++++++ ug-calendar-picker-efl_theme.edc | 89 +++++ 40 files changed, 1781 insertions(+) create mode 100755 CMakeLists.txt create mode 100755 debian/changelog create mode 100755 debian/compat create mode 100755 debian/control create mode 100755 debian/dirs create mode 100755 debian/docs create mode 100755 debian/libug-calendar-picker-efl.install.in create mode 100755 debian/libug-calendar-picker-efl.postinst create mode 100755 debian/rules create mode 100755 images/00_calend_picker_bar_button.png create mode 100755 images/00_calend_picker_bar_button_press.png create mode 100755 images/00_calend_picker_panel.png create mode 100755 images/00_list_bar_press_1x80.png create mode 100755 images/00_picker_arrow_left.png create mode 100755 images/00_picker_arrow_left_press.png create mode 100755 images/00_picker_arrow_right.png create mode 100755 images/00_picker_arrow_right_press.png create mode 100755 images/00_picker_bg_brown.png create mode 100755 images/00_picker_btn_normal.png create mode 100755 images/00_picker_btn_press.png create mode 100755 images/bg_org.png create mode 100755 images/list_body_bg.png create mode 100644 packaging/ug-calendar-picker-efl.spec create mode 100755 po/CMakeLists.txt create mode 100755 po/POTFILES.in create mode 100755 po/en_GB.po create mode 100755 po/en_US.po create mode 100755 po/ja.po create mode 100755 po/ko.po create mode 100755 po/ug-calendar-picker-efl.pot create mode 100755 po/update-po.sh create mode 100755 po/zh_CN.po create mode 100755 src/CalendarPickerGadget.cpp create mode 100755 src/CalendarPickerGadget.h create mode 100755 src/CalendarPickerView.cpp create mode 100755 src/CalendarPickerView.h create mode 100755 ug-calendar-picker-efl.desktop.in create mode 100755 ug-calendar-picker-efl.edc create mode 100755 ug-calendar-picker-efl_macro.edc create mode 100755 ug-calendar-picker-efl_theme.edc diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100755 index 0000000..5a57b10 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,86 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +PROJECT(ug-calendar-picker-efl CXX) + +SET(SRCS + src/CalendarPickerView.cpp + src/CalendarPickerGadget.cpp +) + + +IF("${CMAKE_BUILD_TYPE}" STREQUAL "") + SET(CMAKE_BUILD_TYPE "Release") +ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "") +MESSAGE("Build type: ${CMAKE_BUILD_TYPE}") + +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}) + +INCLUDE(FindPkgConfig) +pkg_check_modules(pkgs REQUIRED + ui-gadget + elementary + dlog +) + +FOREACH(flag ${pkgs_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +# set flags +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -g") +SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g") +SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2") + +FIND_PROGRAM(UNAME NAMES uname) +EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH") +IF("${ARCH}" STREQUAL "arm") + ADD_DEFINITIONS("-DTARGET") + MESSAGE("add -DTARGET") +ENDIF("${ARCH}" STREQUAL "arm") + +# set extra defines +SET(IMAGES_DIR "/opt/ug/res/images/ug-calendar-picker-efl") +SET(EDJ_NAME "/opt/ug/res/edje/ug-calendar-picker-efl/ug-calendar-picker-efl.edj") +SET(THEME_EDJ "/opt/ug/res/edje/ug-calendar-picker-efl/ug-calendar-picker-efl_theme.edj") +SET(PACKAGE "libug-calendar-picker-efl") + +ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"") +ADD_DEFINITIONS("-DIMAGES_DIR=\"${IMAGES_DIR}\"") +ADD_DEFINITIONS("-DEDJ_NAME=\"${EDJ_NAME}\"") +ADD_DEFINITIONS("-DTHEME_EDJ=\"${THEME_EDJ}\"") +ADD_DEFINITIONS(-DLOG_TAG=\"ug-calendar-picker-efl\") + +SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed") + +# make gadget lib +ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS}) +TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS}) + +ADD_CUSTOM_TARGET(ug-calendar-picker-efl.edj + COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images + ${CMAKE_SOURCE_DIR}/ug-calendar-picker-efl.edc ${CMAKE_BINARY_DIR}/ug-calendar-picker-efl.edj + DEPENDS ${CMAKE_SOURCE_DIR}/ug-calendar-picker-efl.edc +) +ADD_DEPENDENCIES(${PROJECT_NAME} ug-calendar-picker-efl.edj) + +ADD_CUSTOM_TARGET(ug-calendar-picker-efl_theme.edj + COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images + ${CMAKE_SOURCE_DIR}/ug-calendar-picker-efl_theme.edc ${CMAKE_BINARY_DIR}/ug-calendar-picker-efl_theme.edj + DEPENDS ${CMAKE_SOURCE_DIR}/ug-calendar-picker-efl_theme.edc +) +ADD_DEPENDENCIES(${PROJECT_NAME} ug-calendar-picker-efl_theme.edj) + +INSTALL(TARGETS ${PROJECT_NAME} DESTINATION /opt/ug/lib) +INSTALL(FILES ${CMAKE_BINARY_DIR}/ug-calendar-picker-efl.edj DESTINATION /opt/ug/res/edje/${PROJECT_NAME}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/ug-calendar-picker-efl_theme.edj DESTINATION /opt/ug/res/edje/${PROJECT_NAME}) +INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/images/ DESTINATION ${IMAGES_DIR} + FILES_MATCHING + PATTERN "*.png" +) + +# install desktop file & icon +SET(PREFIX ${CMAKE_INSTALL_PREFIX}) +CONFIGURE_FILE(${PROJECT_NAME}.desktop.in ${PROJECT_NAME}.desktop) + +# i18n +ADD_SUBDIRECTORY(po) + diff --git a/debian/changelog b/debian/changelog new file mode 100755 index 0000000..6c7eb23 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,35 @@ +ug-calendar-picker-efl (0.0.4-0) unstable; urgency=low + + * Git: pkgs/u/ug-calendar-picker + * Tag: ug-calendar-picker-efl_0.0.4-0 + + * efl migration is applied + + -- Sangpyo Kim Fri, 16 Mar 2012 15:44:58 +0900 + +ug-calendar-picker-efl (0.0.3-0) unstable; urgency=low + + * Git: pkgs/u/ug-calendar-picker + * Tag: ug-calendar-picker-efl_0.0.3-0 + + * Apply ELM migration to ug-calendar-picker-efl + + -- Eunjoong Jeon Fri, 17 Feb 2012 14:17:05 +0900 + +ug-calendar-picker-efl (0.0.2-0) unstable; urgency=low + + * Git: pkgs/u/ug-calendar-picker + * Tag: ug-calendar-picker-efl_0.0.2-0 + + * Remove ug-1 related code. + + -- Hyerim Bae Mon, 26 Dec 2011 16:28:46 +0900 + +ug-calendar-picker-efl (0.0.1-0) unstable; urgency=low + + * Git: pkgs/u/ug-calendar-picker + * Tag: ug-calendar-picker-efl_0.0.1-0 + + * initial release + + -- Sangpyo Kim Wed, 07 Dec 2011 12:02:43 +0900 diff --git a/debian/compat b/debian/compat new file mode 100755 index 0000000..7ed6ff8 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +5 diff --git a/debian/control b/debian/control new file mode 100755 index 0000000..7ea51d3 --- /dev/null +++ b/debian/control @@ -0,0 +1,19 @@ +Source: ug-calendar-picker-efl +Section: devel +Priority: extra +Maintainer: Hyerim Bae , Inbum Chang , Junghwan Kang, Sangpyo Kim +Uploaders: JungHwan Kang , Sangpyo Kim , Hyerim Bae , Inbum Chang +Build-Depends: debhelper (>= 5), libui-gadget-dev, libelm-dev, dlog-dev +Standards-Version: 3.7.2 + +Package: libug-calendar-picker-efl +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Picker Public Shared-Gadget with EFL + +Package: libug-calendar-picker-efl-dbg +Section: debug +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, libug-calendar-picker-efl(= ${Source-Version}) +Description: Picker Public Shared-Gadget with EFL (unstripped) + diff --git a/debian/dirs b/debian/dirs new file mode 100755 index 0000000..ca882bb --- /dev/null +++ b/debian/dirs @@ -0,0 +1,2 @@ +usr/bin +usr/sbin diff --git a/debian/docs b/debian/docs new file mode 100755 index 0000000..7a77580 --- /dev/null +++ b/debian/docs @@ -0,0 +1,2 @@ +CMakeCache.txt +CMakeLists.txt diff --git a/debian/libug-calendar-picker-efl.install.in b/debian/libug-calendar-picker-efl.install.in new file mode 100755 index 0000000..e18df37 --- /dev/null +++ b/debian/libug-calendar-picker-efl.install.in @@ -0,0 +1,2 @@ +/opt/ug/lib/* +/opt/ug/res/* diff --git a/debian/libug-calendar-picker-efl.postinst b/debian/libug-calendar-picker-efl.postinst new file mode 100755 index 0000000..4d871a5 --- /dev/null +++ b/debian/libug-calendar-picker-efl.postinst @@ -0,0 +1,3 @@ +#!/bin/sh +# Change file permissions + # shared gadget diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..ef5e2c4 --- /dev/null +++ b/debian/rules @@ -0,0 +1,129 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +CFLAGS ?= -Wall +CXXFLAGS ?= -Wall +LDFLAGS ?= +PREFIX ?= /usr +DATADIR ?= /opt + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 + CXXFLAGS += -O0 +else + CFLAGS += -O2 + CXXFLAGS += -O2 +endif + +CFLAGS += -fPIC +CXXFLAGS += -fPIC +LDFLAGS += -Wl,--rpath=$(PREFIX)/lib -Wl,--hash-style=both -Wl,--as-needed + +configure: configure-stamp +configure-stamp: + dh_testdir + # Add here commands to configure the package. + CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" cmake . -DCMAKE_INSTALL_PREFIX=$(PREFIX) + + touch configure-stamp + +build: build-stamp + +build-stamp: configure-stamp + dh_testdir + + # Add here commands to compile the package. + $(MAKE) + + for f in `find $(CURDIR)/debian/ -name "*.in"`; do \ + cat $$f > $${f%.in}; \ + sed -i -e "s#@PREFIX@#$(PREFIX)#g" $${f%.in}; \ + sed -i -e "s#@DATADIR@#$(DATADIR)#g" $${f%.in}; \ + done + + touch $@ + +clean: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + + # Add here commands to clean up after the build process. + -$(MAKE) clean + rm -rf CMakeCache.txt + rm -rf CMakeFiles + rm -rf cmake_install.cmake + rm -rf Makefile + rm -rf install_manifest.txt + + rm -rf po/CMakeCache.txt + rm -rf po/CMakeFiles + rm -rf po/cmake_install.cmake + rm -rf po/Makefile + rm -rf po/install_manifest.txt + + rm -rf *.so + rm -rf *.edj + rm -rf *.desktop + + for f in `find $(CURDIR)/debian/ -name "*.in"`; do \ + rm -f $${f%.in}; \ + done + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/wavplayer. + $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs + dh_installdocs + dh_installexamples + dh_install --list-missing --sourcedir=debian/tmp +# dh_installmenu +# dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_python +# dh_installinit +# dh_installcron +# dh_installinfo + dh_installman + dh_link + dh_strip --dbg-package=libug-calendar-picker-efl-dbg + dh_compress + dh_fixperms +# dh_perl + dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/images/00_calend_picker_bar_button.png b/images/00_calend_picker_bar_button.png new file mode 100755 index 0000000000000000000000000000000000000000..581aa8cf29884363ecda90de6b6070320aca2da9 GIT binary patch literal 3325 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 Hu0mjfN7y%4 literal 0 HcmV?d00001 diff --git a/images/00_calend_picker_bar_button_press.png b/images/00_calend_picker_bar_button_press.png new file mode 100755 index 0000000000000000000000000000000000000000..d99987a7dbd694babe208189f6032ac8acf5130c GIT binary patch literal 3376 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 AaR2}S literal 0 HcmV?d00001 diff --git a/images/00_picker_bg_brown.png b/images/00_picker_bg_brown.png new file mode 100755 index 0000000000000000000000000000000000000000..4888195a38b3b521fd1be3e43a4986f04d29c314 GIT binary patch literal 3881 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 UDP*HNd~X0S)HTy7g*)E;CxSpJ`~Uy| literal 0 HcmV?d00001 diff --git a/images/00_picker_btn_normal.png b/images/00_picker_btn_normal.png new file mode 100755 index 0000000000000000000000000000000000000000..8005ca86e4d627aba01ab03aac58fee3132d0a10 GIT binary patch literal 299 zcmV+`0o4A9P)5OYnn;M z`fgn*r3|a<`ouYZ=6Mbw1mZaUQ1d*)7=ym=v2EM=KtD+-k!2ZvMF(`u7(?5(CAYgG zO;h;fvVy=QiXt!QvV`ML1u%dC3}68L;Iyu*7jW4`;B6d7FG$TmH9}yewZ*!fAS4h$o(#87d*q8Og6_S1nFaX+GNw!Qt{qFz(002ovPDHLkV1oB;c*4oA*m5}3j1uIbq2q{7=%r9Bz$qH!}JirbN`)1y^(>`%MEhsPEOCpN6 zcihmZlsn;$xBEO5m&0tu!+q?#DZW(SD{9(~%Bsb`-9v=;&lgb+qhdx4}s%YqiPpam^x1~a9U5zt-+@LV^Y5!7A+Fh)dFbw~Z+GBkEN zK4LkaP97{aWz`&uSNY^{LO>BTcJMfmZXW>#07CgxmT76S0ssI207*qoM6N<$f*~k& AWdHyG literal 0 HcmV?d00001 diff --git a/images/bg_org.png b/images/bg_org.png new file mode 100755 index 0000000000000000000000000000000000000000..0702e20552643ec5045ec6ba7a17b85c06a97050 GIT binary patch literal 2825 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\n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/PickerView.cpp:133 +msgid "IDS_COM_SK_DONE" +msgstr "" diff --git a/po/en_US.po b/po/en_US.po new file mode 100755 index 0000000..41ddb2a --- /dev/null +++ b/po/en_US.po @@ -0,0 +1,15 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-10-19 10:39+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/PickerView.cpp:133 +msgid "IDS_COM_SK_DONE" +msgstr "" diff --git a/po/ja.po b/po/ja.po new file mode 100755 index 0000000..41ddb2a --- /dev/null +++ b/po/ja.po @@ -0,0 +1,15 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-10-19 10:39+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/PickerView.cpp:133 +msgid "IDS_COM_SK_DONE" +msgstr "" diff --git a/po/ko.po b/po/ko.po new file mode 100755 index 0000000..41ddb2a --- /dev/null +++ b/po/ko.po @@ -0,0 +1,15 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-10-19 10:39+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/PickerView.cpp:133 +msgid "IDS_COM_SK_DONE" +msgstr "" diff --git a/po/ug-calendar-picker-efl.pot b/po/ug-calendar-picker-efl.pot new file mode 100755 index 0000000..3a44dcd --- /dev/null +++ b/po/ug-calendar-picker-efl.pot @@ -0,0 +1,26 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-05-19 13:54+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: +msgid "Application template" +msgstr "" + +#: +msgid "Click to exit" +msgstr "" + +#. ****************************************************************** +#. * Process internationalization for fixed text in the created edje layout +#. +#: +msgid "FONT_NAME" +msgstr "" diff --git a/po/update-po.sh b/po/update-po.sh new file mode 100755 index 0000000..0dc02c3 --- /dev/null +++ b/po/update-po.sh @@ -0,0 +1,57 @@ +#!/bin/sh + +PACKAGE=libug-calendar-picker-efl +SRCROOT=.. +POTFILES=POTFILES.in + +#ALL_LINGUAS= am az be ca cs da de el en_CA en_GB es et fi fr hr hu it ja ko lv mk ml ms nb ne nl pa pl pt pt_BR ru rw sk sl sr sr@Latn sv ta tr uk vi zh_CN zh_TW +ALL_LINGUAS="en_US en_GB ja ko zh_CN" + +XGETTEXT=/usr/bin/xgettext +MSGMERGE=/usr/bin/msgmerge + +echo -n "Make ${PACKAGE}.pot " +if [ ! -e $POTFILES ] ; then + echo "$POTFILES not found" + exit 1 +fi + +$XGETTEXT --default-domain=${PACKAGE} --directory=${SRCROOT} \ + --add-comments --keyword=_ --keyword=N_ --files-from=$POTFILES \ +&& test ! -f ${PACKAGE}.po \ + || (rm -f ${PACKAGE}.pot && mv ${PACKAGE}.po ${PACKAGE}.pot) + +if [ $? -ne 0 ]; then + echo "error" + exit 1 +else + echo "done" +fi + +for LANG in $ALL_LINGUAS; do + echo "$LANG : " + + if [ ! -e $LANG.po ] ; then + sed 's/CHARSET/UTF-8/g' ${PACKAGE}.pot > ${LANG}.po + echo "${LANG}.po created" + else + if $MSGMERGE ${LANG}.po ${PACKAGE}.pot -o ${LANG}.new.po ; then + if cmp ${LANG}.po ${LANG}.new.po > /dev/null 2>&1; then + rm -f ${LANG}.new.po + else + if mv -f ${LANG}.new.po ${LANG}.po; then + echo "" + else + echo "msgmerge for $LANG.po failed: cannot move $LANG.new.po to $LANG.po" 1>&2 + rm -f ${LANG}.new.po + exit 1 + fi + fi + else + echo "msgmerge for $LANG failed!" + rm -f ${LANG}.new.po + fi + fi + echo "" +done + diff --git a/po/zh_CN.po b/po/zh_CN.po new file mode 100755 index 0000000..41ddb2a --- /dev/null +++ b/po/zh_CN.po @@ -0,0 +1,15 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-10-19 10:39+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/PickerView.cpp:133 +msgid "IDS_COM_SK_DONE" +msgstr "" diff --git a/src/CalendarPickerGadget.cpp b/src/CalendarPickerGadget.cpp new file mode 100755 index 0000000..4f1b178 --- /dev/null +++ b/src/CalendarPickerGadget.cpp @@ -0,0 +1,229 @@ +/* + +Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved + +This file is part of ug-calendar-picker +Written by Eunjoong Jeon + +PROPRIETARY/CONFIDENTIAL + +This software is the confidential and proprietary information of +SAMSUNG ELECTRONICS ("Confidential Information"). You shall not +disclose such Confidential Information and shall use it only in +accordance with the terms of the license agreement you entered +into with SAMSUNG ELECTRONICS. + +SAMSUNG make no representations or warranties about the suitability +of the software, either express or implied, including but not limited +to the implied warranties of merchantability, fitness for a particular +purpose, or non-infringement. SAMSUNG shall not be liable for any +damages suffered by licensee as a result of using, modifying or +distributing this software or its derivatives. + +*/ + +#ifndef UG_MODULE_API +#define UG_MODULE_API __attribute__ ((visibility("default"))) +#endif + +#include +#include +#include +#include + +#include "CalendarPickerGadget.h" +#include "CalendarPickerView.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ +static Evas_Object *create_fullview(Evas_Object *parent, struct ug_data *ugd) +{ + Evas_Object *base; + + /* Create Full view */ + base = elm_layout_add(parent); + if (!base) + return NULL; + if (!elm_layout_theme_set(base, "standard", "window", "integration")) + SLOGE("Can not set layout theme[standard, window, integration]\n"); + edje_object_signal_emit(_EDJ(base), "elm,state,show,indicator", "elm"); + edje_object_signal_emit(_EDJ(base), "elm,state,show,content", "elm"); + + return base; + +} + +static Evas_Object *create_frameview(Evas_Object *parent, struct ug_data *ugd) +{ + Evas_Object *base; + + /* Create Frame view */ + base = elm_layout_add(parent); + if (!base) + return NULL; + if (!elm_layout_theme_set(base, "standard", "window", "integration")) + SLOGE("Can not set layout theme[standard, window, integration]\n"); + edje_object_signal_emit(_EDJ(base), "elm,state,show,content", "elm"); + + return base; +} + +static Evas_Object *create_content(Evas_Object *parent, struct ug_data *ugd, bundle *data) +{ + if(data) + { + const char* date = bundle_get_val(data, "date"); + SLOGD("current date=%s", date); + + ugd->view = new CalendarPickerView(); + return ugd->view->createLayout(parent, ugd, date); + } + + return NULL; +} + +static void *on_create(struct ui_gadget *ug, enum ug_mode mode, bundle *data, void *priv) +{ + Evas_Object *parent; + Evas_Object *content; + struct ug_data *ugd; + + if (!ug || !priv) + { + return NULL; + } + bindtextdomain("ug-calendar-picker-efl", "/opt/ug/res/locale"); + + ugd = (struct ug_data *)priv; + ugd->ug = ug; + + parent = (Evas_Object *)ug_get_parent_layout(ug); + if (!parent) + { + return NULL; + } + + if (mode == UG_MODE_FULLVIEW) + ugd->base = create_fullview(parent, ugd); + else + ugd->base = create_frameview(parent, ugd); + + if (ugd->base) { + content = create_content(parent, ugd, data); + elm_object_part_content_set(ugd->base, "elm.swallow.content", content); + } + + return ugd->base; +} + +static void on_start(struct ui_gadget *ug, bundle *data, void *priv) +{ +} + +static void on_pause(struct ui_gadget *ug, bundle *data, void *priv) +{ + +} + +static void on_resume(struct ui_gadget *ug, bundle *data, void *priv) +{ + +} + +static void on_destroy(struct ui_gadget *ug, bundle *data, void *priv) +{ + struct ug_data *ugd; + + if (!ug || !priv) + return; + + ugd = (struct ug_data *)priv; + evas_object_del(ugd->base); + + ugd->base = NULL; + + if(ugd->view) + delete ugd->view; +} + +static void on_message(struct ui_gadget *ug, bundle *msg, bundle *data, void *priv) +{ +} + +static void on_event(struct ui_gadget *ug, enum ug_event event, bundle *data, void *priv) +{ + switch (event) { + case UG_EVENT_LOW_MEMORY: + break; + case UG_EVENT_LOW_BATTERY: + break; + case UG_EVENT_LANG_CHANGE: + break; + case UG_EVENT_ROTATE_PORTRAIT: + break; + case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN: + break; + case UG_EVENT_ROTATE_LANDSCAPE: + break; + case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN: + break; + default: + break; + } +} + +static void on_key_event(struct ui_gadget *ug, enum ug_key_event event, bundle *data, void *priv) +{ + if (!ug) + return; + SLOGD("\nkey : %d", event); + + switch (event) { + case UG_KEY_EVENT_END: + break; + default: + break; + } +} + +UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops) +{ + struct ug_data *ugd; + + if (!ops) + return -1; + + ugd = (struct ug_data *)calloc(1, sizeof(struct ug_data)); + if (!ugd) + return -1; + + ops->create = on_create; + ops->start = on_start; + ops->pause = on_pause; + ops->resume = on_resume; + ops->destroy = on_destroy; + ops->message = on_message; + ops->event = on_event; + ops->key_event = on_key_event; + ops->priv = ugd; + ops->opt = UG_OPT_INDICATOR_ENABLE; + + return 0; +} + +UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops) +{ + struct ug_data *ugd; + + if (!ops) + return; + + ugd = (struct ug_data *)ops->priv; + if (ugd) + free(ugd); +} +#ifdef __cplusplus +} + +#endif /* __cplusplus */ diff --git a/src/CalendarPickerGadget.h b/src/CalendarPickerGadget.h new file mode 100755 index 0000000..60934d5 --- /dev/null +++ b/src/CalendarPickerGadget.h @@ -0,0 +1,64 @@ +/* + +Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved + +This file is part of ug-calendar-picker +Written by Eunjoong Jeon + +PROPRIETARY/CONFIDENTIAL + +This software is the confidential and proprietary information of +SAMSUNG ELECTRONICS ("Confidential Information"). You shall not +disclose such Confidential Information and shall use it only in +accordance with the terms of the license agreement you entered +into with SAMSUNG ELECTRONICS. + +SAMSUNG make no representations or warranties about the suitability +of the software, either express or implied, including but not limited +to the implied warranties of merchantability, fitness for a particular +purpose, or non-infringement. SAMSUNG shall not be liable for any +damages suffered by licensee as a result of using, modifying or +distributing this software or its derivatives. + +*/ + +#ifndef __CALENDAR_PICKER_GADGET_H__ +#define __CALENDAR_PICKER_GADGET_H__ + +#include +#include +#include "CalendarPickerView.h" + +#define PKGNAME "ug-calendar-picker-efl" +#define EDJ_PATH "/opt/ug/res/edje/ug-calendar-picker-efl" +#if !defined(EDJ_NAME) +#define EDJ_NAME EDJ_PATH"ug-calendar-picker-efl.edj" +#endif +#define IMAGE_DIR "/opt/ug/res/images/ug-calendar-picker-efl" + +#define _EDJ(o) elm_layout_edje_get(o) +#define _(s) dgettext(PKGNAME, s) +#define dgettext_noop(s) (s) +#define N_(s) dgettext_noop(s) + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ +struct ug_data { + Evas_Object *base; + struct ui_gadget *ug; + + CalendarPickerView *view; +}; + +enum +{ + CMD_NONE = 0, + CMD_DESTROY_SUCCESS = 1, + CMD_DESTROY_FAIL = 2, +}; + +#ifdef __cplusplus +} +#endif /* __cplusplus */ +#endif /* __CALENDAR_PICKER_GADGET_H__ */ diff --git a/src/CalendarPickerView.cpp b/src/CalendarPickerView.cpp new file mode 100755 index 0000000..b0b24ff --- /dev/null +++ b/src/CalendarPickerView.cpp @@ -0,0 +1,251 @@ +/* + +Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved + +This file is part of ug-calendar-picker +Written by Eunjoong Jeon + +PROPRIETARY/CONFIDENTIAL + +This software is the confidential and proprietary information of +SAMSUNG ELECTRONICS ("Confidential Information"). You shall not +disclose such Confidential Information and shall use it only in +accordance with the terms of the license agreement you entered +into with SAMSUNG ELECTRONICS. + +SAMSUNG make no representations or warranties about the suitability +of the software, either express or implied, including but not limited +to the implied warranties of merchantability, fitness for a particular +purpose, or non-infringement. SAMSUNG shall not be liable for any +damages suffered by licensee as a result of using, modifying or +distributing this software or its derivatives. + +*/ + +#include +#include +#include +#include +#include +#include + +#include "CalendarPickerView.h" +#include "CalendarPickerGadget.h" + +CalendarPickerView::CalendarPickerView() + : parent(NULL), + ugd(NULL), + mCalendar(NULL), + mCalendarPickerLayout(NULL) +{ +} + +CalendarPickerView::~CalendarPickerView() +{ + if(mCalendar) + { + evas_object_del(mCalendar); + mCalendar = NULL; + } + + if(mCalendarPickerLayout) + { + evas_object_del(mCalendarPickerLayout); + mCalendarPickerLayout = NULL; + } +} + +void CalendarPickerView::dateChangedCallback(void *data, Evas_Object *obj, void *event_info) +{ + SLOGD("%s", __func__); + + CalendarPickerView* instance = (CalendarPickerView*)data; + + if(instance == NULL) + { + SLOGD("[%s:%d]data is null!", __func__, __LINE__); + } + + struct tm stime; + char tmp[12] = {0}; + + if (!elm_calendar_selected_time_get(obj, &stime)) + return; + + sprintf(tmp, "%d-%02d-%02d", stime.tm_year+1900, stime.tm_mon+1, stime.tm_mday); + SLOGD("selected date=%s", tmp); + + bundle *b; + + b = bundle_create(); + if (bundle_add(b, "Date", tmp)) + SLOGE("bundle_add is failed.\n"); + + if (ug_send_result(instance->ugd->ug, b)) + SLOGE("ug_send_result is failed.\n"); + + if (bundle_free(b)) + SLOGE("bundle_free is failed.\n"); +} + +void CalendarPickerView::prevButtonPressedCallback(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + CalendarPickerView* instance = (CalendarPickerView*)data; + + if(instance == NULL) + { + SLOGD("[%s:%d]data is null!", __func__, __LINE__); + } + + struct tm stime; + char tmp[12] = {0}; + + if (!elm_calendar_selected_time_get(instance->mCalendar, &stime)) + return; + stime.tm_year = stime.tm_year - 1; + mktime(&stime); + elm_calendar_selected_time_set(instance->mCalendar, &stime); + sprintf(tmp, "%d-%02d-%02d", stime.tm_year+1900, stime.tm_mon+1, stime.tm_mday); + SLOGD("prev date=%s", tmp); + + bundle *b; + + b = bundle_create(); + if (bundle_add(b, "Date", tmp)) + SLOGE("bundle_add is failed.\n"); + if (ug_send_result(instance->ugd->ug, b)) + SLOGE("ug_send_result is failed.\n"); + + if (bundle_free(b)) + SLOGE("bundle_free is failed.\n"); +} + +void CalendarPickerView::nextButtonPressedCallback(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + CalendarPickerView* instance = (CalendarPickerView*)data; + + if(instance == NULL) + { + SLOGD("[%s:%d]data is null!", __func__, __LINE__); + } + + struct tm stime; + char tmp[12] = {0}; + + if (!elm_calendar_selected_time_get(instance->mCalendar, &stime)) + return; + stime.tm_year = stime.tm_year + 1; + mktime(&stime); + elm_calendar_selected_time_set(instance->mCalendar, &stime); + sprintf(tmp, "%d-%02d-%02d", stime.tm_year+1900, stime.tm_mon+1, stime.tm_mday); + SLOGD("next date=%s", tmp); + + bundle *b; + + b = bundle_create(); + if (bundle_add(b, "Date", tmp)) + SLOGE("bundle_add is failed.\n"); + if (ug_send_result(instance->ugd->ug, b)) + SLOGE("ug_send_result is failed.\n"); + + if (bundle_free(b)) + SLOGE("bundle_free is failed.\n"); +} + +void CalendarPickerView::doneButtonPressedCallback(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + CalendarPickerView* instance = (CalendarPickerView*)data; + + if(instance == NULL) + { + SLOGD("[%s:%d]data is null!", __func__, __LINE__); + } + + bundle *b; + + b = bundle_create(); + if (bundle_add(b, "Result", "Done")) + SLOGE("bundle_add is failed.\n"); + if (ug_send_result(instance->ugd->ug, b)) + SLOGE("ug_send_result is failed.\n"); + + if (bundle_free(b)) + SLOGE("bundle_free is failed.\n"); + + edje_object_signal_emit(_EDJ(instance->mCalendarPickerLayout), "calendar.hide", "hide"); +} + +Evas_Object* CalendarPickerView::createLayout(Evas_Object *obj, struct ug_data *data, const char* date) +{ + SLOGD("%s", __func__); + parent = obj; + ugd = data; + + mCalendarPickerLayout = elm_layout_add(parent); + if (!elm_layout_file_set(mCalendarPickerLayout, EDJ_NAME, "calendar_picker")) + SLOGE("Can not set layout file[picker_view]\n"); + + evas_object_size_hint_weight_set(mCalendarPickerLayout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(mCalendarPickerLayout, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(mCalendarPickerLayout); + + mCalendar = elm_calendar_add(mCalendarPickerLayout); + evas_object_size_hint_weight_set(mCalendar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(mCalendar, EVAS_HINT_FILL, EVAS_HINT_FILL); + + if(date && strlen(date)) + { + SLOGD("[%s:%d]date=%s", __func__, __LINE__, date); + struct tm stime; + + if (!elm_calendar_selected_time_get(mCalendar, &stime)) + { + SLOGD("[%s:%d]elm_calendar_selected_time_get failed", __func__, __LINE__); + } + SLOGD("[%s:%d]current %d-%d-%d\n", __func__, __LINE__, stime.tm_year, stime.tm_mon, stime.tm_mday); + + std::string tempValue(date); + if (tempValue.length() !=10 || tempValue[4] != '-' || tempValue[7] != '-') + { + SLOGD("[%s:%d]date format error!", __func__, __LINE__); + } + else + { + std::string year = tempValue.substr(0, 4); + std::string month = tempValue.substr(5, 2); + std::string day = tempValue.substr(8, 2); + + SLOGD("[%s:%d]y=%s, m=%s, day=%s", __func__, __LINE__, year.c_str(), month.c_str(), day.c_str()); + stime.tm_year = atoi(year.c_str()) - 1900; + stime.tm_mon = atoi(month.c_str()) - 1; + stime.tm_mday = atoi(day.c_str()); + SLOGD("[%s:%d]y=%d, m=%d, day=%d", __func__, __LINE__, stime.tm_year, stime.tm_mon, stime.tm_mday); + mktime(&stime); + elm_calendar_selected_time_set(mCalendar, &stime); + } + } + + evas_object_show(mCalendar); + elm_object_part_content_set(mCalendarPickerLayout, "swallow.calendar", mCalendar); + + evas_object_smart_callback_add(mCalendar, "changed", dateChangedCallback, (void*)this); + + //for description of struct tm, refer C header file + struct tm t_sat = { 0, 0, 12, 7, 0, 0, 6, 6, -1 }; + elm_calendar_mark_add(mCalendar, "saturday", &t_sat, ELM_CALENDAR_WEEKLY); + struct tm t_sun = { 0, 0, 12, 1, 0, 0, 0, 0, -1 }; + elm_calendar_mark_add(mCalendar, "sunday", &t_sun, ELM_CALENDAR_WEEKLY); + elm_calendar_marks_draw(mCalendar); + + edje_object_part_text_set(elm_layout_edje_get(mCalendarPickerLayout), "btn_prev_text", "Prev."); + edje_object_part_text_set(elm_layout_edje_get(mCalendarPickerLayout), "btn_next_text", "Next"); + edje_object_part_text_set(elm_layout_edje_get(mCalendarPickerLayout), "btn_done_text", "Done"); + + edje_object_signal_callback_add(_EDJ(mCalendarPickerLayout), "mouse,clicked,1", "btn_prev", prevButtonPressedCallback, (void*)this); + edje_object_signal_callback_add(_EDJ(mCalendarPickerLayout), "mouse,clicked,1", "btn_next", nextButtonPressedCallback, (void*)this); + edje_object_signal_callback_add(_EDJ(mCalendarPickerLayout), "mouse,clicked,1", "btn_done", doneButtonPressedCallback, (void*)this); + + edje_object_signal_emit(_EDJ(mCalendarPickerLayout), "calendar.show", "show"); + return mCalendarPickerLayout; +} + diff --git a/src/CalendarPickerView.h b/src/CalendarPickerView.h new file mode 100755 index 0000000..425d3fa --- /dev/null +++ b/src/CalendarPickerView.h @@ -0,0 +1,49 @@ +/* + +Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved + +This file is part of ug-calendar-picker +Written by Eunjoong Jeon + +PROPRIETARY/CONFIDENTIAL + +This software is the confidential and proprietary information of +SAMSUNG ELECTRONICS ("Confidential Information"). You shall not +disclose such Confidential Information and shall use it only in +accordance with the terms of the license agreement you entered +into with SAMSUNG ELECTRONICS. + +SAMSUNG make no representations or warranties about the suitability +of the software, either express or implied, including but not limited +to the implied warranties of merchantability, fitness for a particular +purpose, or non-infringement. SAMSUNG shall not be liable for any +damages suffered by licensee as a result of using, modifying or +distributing this software or its derivatives. + +*/ + +#ifndef CALENDAR_PICKER_VIEW_PICKER_VIEW_H_ +#define CALENDAR_PICKER_VIEW_PICKER_VIEW_H_ + +#include + +class CalendarPickerView +{ + public: + CalendarPickerView(); + ~CalendarPickerView(); + private: + Evas_Object *parent; + struct ug_data *ugd; + + Evas_Object* mCalendar; + Evas_Object* mCalendarPickerLayout; + public: + Evas_Object* createLayout(Evas_Object *obj, struct ug_data *data, const char* date); + static void dateChangedCallback(void *data, Evas_Object *obj, void *event_info); + static void prevButtonPressedCallback(void *data, Evas_Object *obj, const char *emission, const char *source); + static void nextButtonPressedCallback(void *data, Evas_Object *obj, const char *emission, const char *source); + static void doneButtonPressedCallback(void *data, Evas_Object *obj, const char *emission, const char *source); +}; + +#endif /* COMBO_BOX_PICKER_VIEW_H_ */ diff --git a/ug-calendar-picker-efl.desktop.in b/ug-calendar-picker-efl.desktop.in new file mode 100755 index 0000000..18f2a51 --- /dev/null +++ b/ug-calendar-picker-efl.desktop.in @@ -0,0 +1,7 @@ +Name=ug-calendar-picker-efl +Type=Application +Exec=ug-calendar-picker-efl +Icon=icon_ug-calendar-picker-efl.png +Network={True/False} +X-SLP-Removable=False +Comment=ug-calendar-picker-efl diff --git a/ug-calendar-picker-efl.edc b/ug-calendar-picker-efl.edc new file mode 100755 index 0000000..0177377 --- /dev/null +++ b/ug-calendar-picker-efl.edc @@ -0,0 +1,493 @@ +#define MAIN_W 480 +#define MAIN_H 800 + +#include "ug-calendar-picker-efl_macro.edc" + +collections { + group { + name: "picker_view"; + //min: MAIN_W MAIN_H; + images { + image: "00_calend_picker_panel.png" COMP; + image: "00_picker_bg_brown.png" COMP; + } + + parts { + part { name: "background"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 0 0 0 0; + } + } + + part { name: "panel"; + type: IMAGE; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + min: 0 66; + fixed: 0 1; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: background; } + rel2 { relative: 1.0 0.0; to: background; } + image.normal: "00_calend_picker_panel.png"; + } + } + + PADDING("padding.top", 0, 8, 0, 1, 0.0, 0.0, + 0.0, 0.0, 1.0, 1.0, panel, panel) + PADDING("padding.left", 5, 0, 1, 0, 0.0, 0.0, + 0.0, 0.0, 1.0, 1.0, panel, panel) + PADDING("padding.right", 5, 0, 1, 0, 1.0, 0.0, + 0.0, 0.0, 1.0, 1.0, panel, panel) + + part { name: "btn_prev"; + type: SWALLOW; + mouse_events: 1; + description { + state: "default" 0.0; + min: 98 50; + max: 98 50; + fixed: 1 1; + align: 0.0 0.0; + rel1 { relative: 1.0 1.0; to_x:padding.left; to_y: padding.top; } + rel2 { relative: 1.0 1.0; to_x: padding.left; to_y: padding.top; } + } + } + + PADDING("padding.btn_prev.right", 5, 0, 1, 0, 0.0, 0.0, + 1.0, 0.0, 1.0, 1.0, btn_prev, btn_prev) + + part { name: "btn_next"; + type: SWALLOW; + mouse_events: 1; + description { + state: "default" 0.0; + min: 98 50; + max: 98 50; + fixed: 1 1; + align: 0.0 0.0; + rel1 { relative: 1.0 1.0; to_x: padding.btn_prev.right; to_y: padding.top; } + rel2 { relative: 1.0 1.0; to_x: padding.btn_prev.right; to_y: padding.top; } + } + } + + part { name: "btn_done"; + type: SWALLOW; + mouse_events: 1; + description { + state: "default" 0.0; + min: 98 50; + max: 98 50; + fixed: 1 1; + align: 1.0 0.0; + rel1 { relative: 0.0 1.0; to_x:padding.right; to_y: padding.top; } + rel2 { relative: 0.0 1.0; to_x: padding.right; to_y: padding.top; } + } + } + + part { name: "separation_line"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + min: 0 2; + max: 0 2; + fixed: 0 1; + align: 0.0 1.0; + color: 104 97 92 255; + rel1 { relative: 0.0 1.0; to: panel; } + rel2 { relative: 1.0 1.0; to: panel; } + } + } + + part { name: "list_bg"; + type: IMAGE; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + align: 0.0 0.0; + rel1 { relative: 0.0 1.0; to: separation_line; } + rel2 { relative: 1.0 1.0; to: background; } + image.normal: "00_picker_bg_brown.png"; + } + } + + part { name: "list_options"; + type: SWALLOW; + mouse_events: 1; + description { + state: "default" 0.0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: list_bg; } + rel2 { relative: 1.0 1.0; to: list_bg; } + } + } + } + } + +#define CAL_BTN_W 170 +#define CAL_BTN_H 100 +#define CAL_PADDING_H 20 +#define CAL_SHOW_H 335 +#define PICKER_SHOW_H 400 +#define CAL_BTN_BASE_H 66 +#define CAL_BTN_BASE_NBEAT_H 54 + + group { + name: "calendar_picker"; + images { + image: "00_picker_arrow_left.png" COMP; + image: "00_picker_arrow_left_press.png" COMP; + image: "00_picker_arrow_right.png" COMP; + image: "00_picker_arrow_right_press.png" COMP; + image: "00_calend_picker_bar_button.png" COMP; + image: "00_calend_picker_bar_button_press.png" COMP; + image: "00_picker_btn_normal.png" COMP; + image: "00_picker_btn_press.png" COMP; + } + parts{ + part { name: "base"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + rel1 { relative: 0 0; } + rel2 { relative: 1 1; } + color: 0 0 0 0; + } + } + + part { name: "picker_base"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + visible: 0; + min: 0 PICKER_SHOW_H; + fixed: 0 1; + rel1 { relative: 0.0 1.1; to: "base"; } + rel2 { relative: 1.0 1.0; to: "base"; } + align: 0.0 0.0; + color: 255 0 0 0; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + rel1 { relative: 0.0 350/800; to: "base"; } + rel2 { relative: 1.0 1.0; to: "base"; } + visible: 1; + align: 0.0 1.0; + } + } + part { name: "swallow.calendar"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + visible: 0; + min: 0 CAL_SHOW_H; + fixed: 0 1; +// rel1 { relative: 0.0 1.0; to: "button_base"; } + rel1 { relative: 0.0 1.0; to: "picker_base"; } + rel2 { relative: 1.0 1.0; to: "picker_base"; } + align: 0.0 1.0; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "button_base"; + type: RECT; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 0; + min: 24 CAL_BTN_BASE_NBEAT_H; + max: 800 CAL_BTN_BASE_NBEAT_H; + fixed: 1 1; +// rel2 { relative: 1.0 54/400; to: "picker_base"; } +// rel2 { relative: 1.0 0.0; to: "picker_base"; } + rel1 { relative: 0.0 0.0; to: "swallow.calendar"; } + rel2 { relative: 1.0 0.0; to: "swallow.calendar"; } + color: 176 176 176 255; +// align: 0.0 0.0; + align: 0.0 1.0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "btn_prev"; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 0; + min: 46 42; + max: 46 42; + fixed: 1 1; + rel1.to: "button_base"; + rel1.offset: 6 0; + rel2.to: "button_base"; + image { + normal: "00_picker_btn_normal.png"; + border: 4 4 4 4; + border_scale: 1; + } + align: 0.0 0.5; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + image { + normal: "00_picker_btn_press.png"; + border: 4 4 4 4; + border_scale: 1; + } + } + } + part { name: "btn_prev_icon"; + repeat_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 0; + min: 20 20; + max: 20 20; + fixed: 1 1; + rel1.to: "btn_prev"; + rel2.to: "btn_prev"; + align: 0.5 0.5; + image { + normal: "00_picker_arrow_left.png"; + border: 4 4 4 4; + border_scale: 1; + } + fill.smooth : 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "show" 0.0; + image.normal: "00_picker_arrow_left_press.png"; + } + } + part { name: "btn_next"; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 0; + min: 46 42; + max: 46 42; + fixed: 1 1; + rel1.to: "btn_prev"; + rel1.relative: 1 0; + rel1.offset: 6 0; + rel2.to: "btn_prev"; + rel2.relative: 1 1; + image { + normal: "00_picker_btn_normal.png"; + border: 4 4 4 4; + border_scale: 1; + } + align: 0.0 0.5; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + image { + normal: "00_picker_btn_press.png"; + border: 4 4 4 4; + border_scale: 1; + } + } + } + part { name: "btn_next_icon"; + repeat_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 0; + min: 20 20; + max: 20 20; + fixed: 1 1; + rel1.to: "btn_next"; + rel2.to: "btn_next"; + align: 0.5 0.5; + image { + normal: "00_picker_arrow_right.png"; + border: 4 4 4 4; + border_scale: 1; + } + fill.smooth : 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "show" 0.0; + image.normal: "00_picker_arrow_right_press.png"; + } + } + part { name: "btn_done"; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 0; + min: 90 42; + max: 90 42; + fixed: 1 1; + rel1.to: "button_base"; + rel2.to: "button_base"; + rel2.offset: -6 0; + align: 1.0 0.5; + image { + normal: "00_picker_btn_normal.png"; + border: 4 4 4 4; + border_scale: 1; + } + } + description { state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + image { + normal: "00_picker_btn_press.png"; + border: 4 4 4 4; + border_scale: 1; + } + } + } + part { name: "btn_done_text"; + type: TEXT; + repeat_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 0; + fixed: 1 1; + rel1.to: "btn_done"; + rel2.to: "btn_done"; + color: 0 0 0 255; + text { + font: "SLP:style=Medium"; + size: 22; + min: 1 1; + align: 0.5 0.5; + } + } + description { state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + programs { + program { + name: "calendar.show.effect"; + signal: "calendar.show"; + source: "show"; + action: STATE_SET "show" 0.0; + target: "button_base"; + target: "btn_prev"; + target: "btn_prev_icon"; + target: "btn_next"; + target: "btn_next_icon"; + target: "btn_done"; + target: "btn_done_text"; + target: "swallow.calendar"; + after : "calendar.show.transition"; + } + program { + name: "calendar.hide.effect"; + action: STATE_SET "default" 0.0; + target: "swallow.calendar"; + target: "button_base"; + target: "btn_prev"; + target: "btn_prev_icon"; + target: "btn_next"; + target: "btn_next_icon"; + target: "btn_done"; + target: "btn_done_text"; + } + program { + name: "calendar.show.transition"; + action: STATE_SET "show" 0.0; + target: "picker_base"; +// transition: SINUSOIDAL 0.5; + transition: DECELERATE 0.5; + } + program { + name: "calendar.hide.transition"; + signal: "calendar.hide"; + source: "hide"; + action: STATE_SET "default" 0.0; + target: "picker_base"; + transition: SINUSOIDAL 0.6; + after : "calendar.hide.effect"; + } + program { + name: "prev_bt_click"; + signal: "mouse,down,1"; + source: "btn_prev"; + action: STATE_SET "clicked" 0.0; + target: "btn_prev"; + } + program { + name: "prev_bt_unclick"; + signal: "mouse,up,1"; + source: "btn_prev"; + action: STATE_SET "show" 0.0; + target: "btn_prev"; + } + program { + name: "next_bt_click"; + signal: "mouse,down,1"; + source: "btn_next"; + action: STATE_SET "clicked" 0.0; + target: "btn_next"; + } + program { + name: "next_bt_unclick"; + signal: "mouse,up,1"; + source: "btn_next"; + action: STATE_SET "show" 0.0; + target: "btn_next"; + } + program { + name: "done_bt_click"; + signal: "mouse,down,1"; + source: "btn_done"; + action: STATE_SET "clicked" 0.0; + target: "btn_done"; + } + program { + name: "done_bt_unclick"; + signal: "mouse,up,1"; + source: "btn_done"; + action: STATE_SET "show" 0.0; + target: "btn_done"; + } + } + } +} diff --git a/ug-calendar-picker-efl_macro.edc b/ug-calendar-picker-efl_macro.edc new file mode 100755 index 0000000..62ddce3 --- /dev/null +++ b/ug-calendar-picker-efl_macro.edc @@ -0,0 +1,95 @@ +#define PADDING(title, w, h, fixed_w, fixed_h, align_w, align_h, l, t, r, b, rel1_to, rel2_to) \ + part { name: title; \ + type: RECT; \ + scale: 1; \ + description { \ + state: "default" 0.0; \ + visible: 1; \ + min: w h; \ + max: w h; \ + fixed: fixed_w fixed_h; \ + align: align_w align_h; \ + rel1 { relative: l t; to: rel1_to; } \ + rel2 { relative: r b; to: rel2_to; } \ + color: 255 5 5 255; \ + } \ + } + +#define BEAT_GENLIST_PART_BASE( param_item_height ) \ + part { name: "base"; \ + type: RECT; \ + repeat_events: 1; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: 0 param_item_height; \ + color: 0 0 0 0; \ + } \ + } + +#define BEAT_GENLIST_PART_BG_IMAGE \ + part { name: "bg_image"; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + visible: 0; \ + image.normal: "images/00_list_bar_press_1x80.png"; \ + } \ + description { state: "selected" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + } + +#define BEAT_GENLIST_PART_BOTTOM_LINE \ + part { name: "bottom_line"; \ + type: RECT; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + min: 0 1; \ + fixed: 0 1; \ + visible: 1; \ + color: 104 97 92 255; \ + rel1 { \ + relative: 0.0 1.0; \ + offset: 0 -1; \ + } \ + } \ + } + +#define BEAT_GENLIST_PART_PADDING_LEFT( param_padding_size ) \ + part { name: "elm.padding.left"; \ + type: RECT; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: param_padding_size 0; \ + fixed: 1 0; \ + visible: 0; \ + rel2.relative: 0.0 1.0; \ + align: 0.0 0.0; \ + } \ + } + +#define BEAT_GENLIST_PART_PADDING_RIGHT( param_padding_size ) \ + part { name: "elm.padding.right"; \ + type: RECT; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: param_padding_size 0; \ + fixed: 1 0; \ + visible: 0; \ + rel1.relative: 1.0 0.0; \ + align: 1.0 0.0; \ + } \ + } + +#define BEAT_GENLIST_PART_DISCLIP \ + part { name: "disclip"; \ + type: RECT; \ + description { state: "default" 0.0; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + color: 255 255 255 64; \ + } \ + } diff --git a/ug-calendar-picker-efl_theme.edc b/ug-calendar-picker-efl_theme.edc new file mode 100755 index 0000000..81a013f --- /dev/null +++ b/ug-calendar-picker-efl_theme.edc @@ -0,0 +1,89 @@ +#include "ug-calendar-picker-efl_macro.edc" + +collections { + + group { name: "elm/genlist/item/ug-calendar-picker-efl/1line_textonly/default"; + alias: "elm/genlist/item_odd/ug-calendar-picker-efl/1line_textonly/default"; + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text"; + images { + image: "images/00_list_bar_press_1x80.png" COMP; + } + parts { + BEAT_GENLIST_PART_BASE( 80 ) + BEAT_GENLIST_PART_BG_IMAGE + BEAT_GENLIST_PART_BOTTOM_LINE + BEAT_GENLIST_PART_PADDING_LEFT( 15 ) + BEAT_GENLIST_PART_PADDING_RIGHT( 15 ) + + part { name: "elm.text"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + rel1 { + relative: 1.0 0.0; + offset: 0 0; + to_x: "elm.padding.left"; + } + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.right"; + } + color: 255 255 255 255; + text { + font: FONT_ROM; + size: 32; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: 225 225 225 255; + } + } + BEAT_GENLIST_PART_DISCLIP + } + programs { + // signal: elm,state,%s,active + // a "check" item named %s went active + // signal: elm,state,%s,passive + // a "check" item named %s went passive + // default is passive + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + target: "elm.text"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + target: "elm.text"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + } + } + +} + -- 2.7.4