From 3807aa6eb16ab01c491715299ae29f4be8d17be7 Mon Sep 17 00:00:00 2001 From: "byungjai.im" Date: Tue, 21 Aug 2012 22:17:12 +0900 Subject: [PATCH] APPLY_RSA --- CMakeLists.txt | 13 +- LICENSE | 3 +- debian/changelog | 1089 +++++++++++++++++++++- debian/control | 4 +- debian/libsg-memo-efl.install.in | 2 - edc/common.edc | 58 +- edc/detail.edc | 31 +- edc/doodle_editor.edc | 120 +++ edc/edit_list.edc | 32 +- edc/edit_tool.edc | 100 ++ edc/gl_edit_list.edc | 38 +- edc/selector.edc | 30 +- edc/text_editor.edc | 62 ++ extend/extended-edc.h | 38 +- extend/extended-elm.c | 30 +- extend/extended-elm.h | 30 +- extend/gravel.h | 30 +- extend/supplement.c | 60 +- extend/supplement.h | 34 +- include/memo-assist.h | 52 +- include/memo-efl.h | 41 +- include/memo-genlist.h | 30 +- include/memo_autolink.h | 44 + include/memo_doodle_editor.h | 28 + include/memo_string.h | 32 +- include/memo_text_editor.h | 32 +- include/memo_ug.h | 34 +- memo.edc | 33 +- packaging/{sg-memo-efl.spec => ug-memo-efl.spec} | 29 +- scripts/copyright | 17 + scripts/str.in | 2 +- scripts/string.sh | 2 +- src/edit.c | 199 ++++ src/memo-assist.c | 460 ++++++++- src/memo-efl.c | 190 ++-- src/memo-genlist.c | 30 +- src/memo_autolink.c | 547 +++++++++++ src/memo_doodle_editor.c | 586 ++++++++++++ src/memo_text_editor.c | 420 +++++++++ src/memo_ug.c | 78 +- src/ug-detail.c | 60 +- src/ug-select.c | 64 +- theme/CMakeLists.txt | 18 + theme/black/images/00_picker_btn_normal.png | Bin 0 -> 2981 bytes theme/black/images/00_picker_btn_press.png | Bin 0 -> 2986 bytes theme/black/images/P02_icon_color.png | Bin 0 -> 4599 bytes theme/black/images/P02_icon_color_focus.png | Bin 0 -> 4599 bytes theme/black/images/P02_icon_eraser.png | Bin 0 -> 3629 bytes theme/black/images/P02_icon_eraser_press.png | Bin 0 -> 3629 bytes theme/black/images/P02_icon_font_color.png | Bin 0 -> 4021 bytes theme/black/images/P02_icon_font_color_press.png | Bin 0 -> 4021 bytes theme/black/images/P02_icon_font_size.png | Bin 0 -> 3229 bytes theme/black/images/P02_icon_font_size_press.png | Bin 0 -> 3229 bytes theme/black/images/P02_icon_font_type.png | Bin 0 -> 3342 bytes theme/black/images/P02_icon_font_type_press.png | Bin 0 -> 3342 bytes theme/black/images/P02_icon_stroke.png | Bin 0 -> 2928 bytes theme/black/images/P02_icon_stroke_press.png | Bin 0 -> 2928 bytes theme/black/memo.edc | 23 + theme/common.edc | 71 ++ theme/white/images/00_picker_btn_normal.png | Bin 0 -> 3227 bytes theme/white/images/00_picker_btn_press.png | Bin 0 -> 891 bytes theme/white/images/P02_icon_color.png | Bin 0 -> 4261 bytes theme/white/images/P02_icon_color_focus.png | Bin 0 -> 4261 bytes theme/white/images/P02_icon_eraser.png | Bin 0 -> 3301 bytes theme/white/images/P02_icon_eraser_press.png | Bin 0 -> 3252 bytes theme/white/images/P02_icon_font_color.png | Bin 0 -> 3605 bytes theme/white/images/P02_icon_font_color_press.png | Bin 0 -> 3581 bytes theme/white/images/P02_icon_font_size.png | Bin 0 -> 3226 bytes theme/white/images/P02_icon_font_size_press.png | Bin 0 -> 3199 bytes theme/white/images/P02_icon_font_type.png | Bin 0 -> 3372 bytes theme/white/images/P02_icon_font_type_press.png | Bin 0 -> 3342 bytes theme/white/images/P02_icon_stroke.png | Bin 0 -> 2944 bytes theme/white/images/P02_icon_stroke_press.png | Bin 0 -> 2924 bytes theme/white/memo.edc | 23 + ug-memo-efl.desktop | 11 + 75 files changed, 4427 insertions(+), 533 deletions(-) delete mode 100755 debian/libsg-memo-efl.install.in create mode 100644 edc/doodle_editor.edc create mode 100644 edc/edit_tool.edc create mode 100644 edc/text_editor.edc create mode 100644 include/memo_autolink.h create mode 100644 include/memo_doodle_editor.h rename packaging/{sg-memo-efl.spec => ug-memo-efl.spec} (60%) create mode 100644 scripts/copyright create mode 100644 src/edit.c create mode 100644 src/memo_autolink.c create mode 100644 src/memo_doodle_editor.c create mode 100644 src/memo_text_editor.c create mode 100644 theme/CMakeLists.txt create mode 100644 theme/black/images/00_picker_btn_normal.png create mode 100644 theme/black/images/00_picker_btn_press.png create mode 100644 theme/black/images/P02_icon_color.png create mode 100644 theme/black/images/P02_icon_color_focus.png create mode 100644 theme/black/images/P02_icon_eraser.png create mode 100644 theme/black/images/P02_icon_eraser_press.png create mode 100644 theme/black/images/P02_icon_font_color.png create mode 100644 theme/black/images/P02_icon_font_color_press.png create mode 100644 theme/black/images/P02_icon_font_size.png create mode 100644 theme/black/images/P02_icon_font_size_press.png create mode 100644 theme/black/images/P02_icon_font_type.png create mode 100644 theme/black/images/P02_icon_font_type_press.png create mode 100644 theme/black/images/P02_icon_stroke.png create mode 100644 theme/black/images/P02_icon_stroke_press.png create mode 100644 theme/black/memo.edc create mode 100644 theme/common.edc create mode 100644 theme/white/images/00_picker_btn_normal.png create mode 100644 theme/white/images/00_picker_btn_press.png create mode 100644 theme/white/images/P02_icon_color.png create mode 100644 theme/white/images/P02_icon_color_focus.png create mode 100644 theme/white/images/P02_icon_eraser.png create mode 100644 theme/white/images/P02_icon_eraser_press.png create mode 100644 theme/white/images/P02_icon_font_color.png create mode 100644 theme/white/images/P02_icon_font_color_press.png create mode 100644 theme/white/images/P02_icon_font_size.png create mode 100644 theme/white/images/P02_icon_font_size_press.png create mode 100644 theme/white/images/P02_icon_font_type.png create mode 100644 theme/white/images/P02_icon_font_type_press.png create mode 100644 theme/white/images/P02_icon_stroke.png create mode 100644 theme/white/images/P02_icon_stroke_press.png create mode 100644 theme/white/memo.edc create mode 100644 ug-memo-efl.desktop diff --git a/CMakeLists.txt b/CMakeLists.txt index 1cf798e..bc77731 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,10 +14,14 @@ SET(VERSION 0.1.0) SET(SRCS extend/extended-elm.c extend/supplement.c src/memo-efl.c + src/memo_autolink.c + src/edit.c src/ug-select.c src/ug-detail.c src/memo-genlist.c src/memo-assist.c + src/memo_doodle_editor.c + src/memo_text_editor.c src/memo_ug.c) SET(VENDOR "tizen") @@ -32,7 +36,7 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/extend) INCLUDE(FindPkgConfig) -pkg_check_modules(pkgs REQUIRED appcore-efl elementary ui-gadget ecore evas memo iniparser dlog bundle) +pkg_check_modules(pkgs REQUIRED appcore-efl appsvc elementary ui-gadget-1 ecore evas memo iniparser dlog bundle) FOREACH(flag ${pkgs_CFLAGS}) SET(EXTRA_CXXFLAGS "${EXTRA_CXXFLAGS} ${flag}") @@ -40,7 +44,7 @@ ENDFOREACH(flag) SET(EXTRA_CXXFLAGS "${EXTRA_CXXFLAGS} -fvisibility=hidden -Wall") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CXXFLAGS}") -SET(CMAKE_C_FLAGS ${CMAKE_CXX_FLAGS}) +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_CXX_FLAGS}") ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"") ADD_DEFINITIONS("-DPACKAGE_PREFIX=\"${PKGPREFIX}\"") @@ -63,6 +67,10 @@ ADD_CUSTOM_TARGET(memo.edj ) ADD_DEPENDENCIES(${PROJECT_NAME} memo.edj) + + +CONFIGURE_FILE(${PROJECT_NAME}.desktop ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.desktop) +INSTALL(FILES ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.desktop DESTINATION /opt/share/applications) INSTALL(TARGETS ${PROJECT_NAME} DESTINATION /opt/ug/lib) INSTALL(FILES ${CMAKE_BINARY_DIR}/memo.edj DESTINATION /opt/ug/res/edje/${PROJECT_NAME}) INSTALL(FILES ${CMAKE_SOURCE_DIR}/images/01_header_icon_add.png DESTINATION ${ICONDIR}) @@ -70,3 +78,4 @@ INSTALL(FILES ${CMAKE_SOURCE_DIR}/images/01_header_icon_cancel.png DESTINATION $ INSTALL(FILES ${CMAKE_SOURCE_DIR}/images/01_header_icon_done.png DESTINATION ${ICONDIR}) ADD_SUBDIRECTORY(po) +ADD_SUBDIRECTORY(theme) diff --git a/LICENSE b/LICENSE index 7ccb5b5..7365be5 100644 --- a/LICENSE +++ b/LICENSE @@ -60,7 +60,7 @@ 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] + copyright 2012 Samsung Electronics Co., Ltd Licensed under the Flora License, Version 1.0 (the "License"); you may not use this file except in compliance with the License. @@ -73,3 +73,4 @@ To apply the Flora License to your work, attach the following boilerplate notice 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/debian/changelog b/debian/changelog index 8c75e17..bdcab8e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,7 +1,1088 @@ -ug-memo-efl (0.1.0-8) unstable; urgency=low +ug-memo-efl (0.1.1-37) unstable; urgency=low + + * Fix Voice call launching problem + * Git : slp/apps/u/ug-memo-efl + * Tag : ug-memo-efl_0.1.1-37 + + -- Goo Lee Sat, 21 July 2012 18:12:30 +0800 + +ug-memo-efl (0.1.1-36) unstable; urgency=low + + * [Request]UG api migration. + * Git : slp/apps/u/ug-memo-efl + * Tag : ug-memo-efl_0.1.1-36 + + -- Wei Hua Sat, 14 Jul 2012 14:48:30 +0800 + +ug-memo-efl (0.1.1-34) unstable; urgency=low + + * [Request]Apply package strip + * Git : slp/apps/u/ug-memo-efl + * Tag : ug-memo-efl_0.1.1-34 + + -- Goo Lee Fri, 13 July 2012 19:35:30 +0800 + +ug-memo-efl (0.1.1-33) unstable; urgency=low + + * [Request]Remove discard vconf code. + * Git : slp/apps/u/ug-memo-efl + * Tag : ug-memo-efl_0.1.1-33 + + -- Wei Hua Fri, 8 Jun 2012 16:03:30 +0800 + +ug-memo-efl (0.1.1-32) unstable; urgency=low + + * [Request]Fix add new memo can't be added to favourites list in NFC. + * Git : slp/apps/u/ug-memo-efl + * Tag : ug-memo-efl_0.1.1-32 + + -- Wei Hua Wen, 23 May 2012 09:11:30 +0800 + +ug-memo-efl (0.1.1-31) unstable; urgency=low + + * [Request]Support Dynamic Font Change + * Git : slp/apps/u/ug-memo-efl + * Tag : ug-memo-efl_0.1.1-31 + + -- Wei Hua Tue, 15 May 2012 14:03:30 +0800 + +ug-memo-efl (0.1.1-30) unstable; urgency=low + + * [Request]Support Dynamic Font Change + * Git : slp/apps/u/ug-memo-efl + * Tag : ug-memo-efl_0.1.1-30 + + -- Wei Hua Mon, 14 May 2012 17:55:00 +0800 + +ug-memo-efl (0.1.1-29) unstable; urgency=low + + * Upload package + * Git : slp/apps/u/ug-memo-efl + * Tag : ug-memo-efl_0.1.1-29 + + -- Goo Lee Wed, 9 May 2012 17:18:39 +0800 + +ug-memo-efl (0.1.1-28) unstable; urgency=low + + * [Request]Filtering memo list for select only text memo + * Git : slp/apps/u/ug-memo-efl + * Tag : ug-memo-efl_0.1.1-28 + + -- Goo Lee Wed, 9 May 2012 17:05:39 +0800 + +ug-memo-efl (0.1.1-27) unstable; urgency=low + + * [Request]PKG upload for S1-2910 and S1-2911. + * Git : slp/apps/u/ug-memo-efl + * Tag : ug-memo-efl_0.1.1-27 + + -- Feng Li Thu, 3 May 2012 17:05:39 +0800 + +ug-memo-efl (0.1.1-26) unstable; urgency=low + + * [Request]Elementary v1.0 PKG upload. + * Git : slp/apps/u/ug-memo-efl + * Tag : ug-memo-efl_0.1.1-26 + + -- Canjiang Lu Tue, 13 Mar 2012 20:34:44 +0800 + +ug-memo-efl (0.1.1-25) unstable; urgency=low + + * [Request]elm_entry_autocapitalization_set API is deprecated. + * Git : slp/apps/u/ug-memo-efl + * Tag : ug-memo-efl_0.1.1-25 + + -- Feng Li Mon, 12 Mar 2012 17:15:39 +0800 + +ug-memo-efl (0.1.1-24) unstable; urgency=low + + * [Request]Changeset2 for Elm_Editfield and Elm_Searchbar widgets deprecation. + * Git : slp/apps/u/ug-memo-efl + * Tag : ug-memo-efl_0.1.1-24 + + -- Feng Li Sat, 3 Mar 2012 17:15:18 +0800 + +ug-memo-efl (0.1.1-23) unstable; urgency=low + + * [Request]upload + * Git : slp/apps/u/ug-memo-efl + * Tag : ug-memo-efl_0.1.1-23 + + -- Canjiang Lu Sat, 03 Mar 2012 09:02:01 +0800 + +ug-memo-efl (0.1.1-22) unstable; urgency=low + + * [Request]Changeset1 for Elm_Editfield and Elm_Searchbar widgets deprecation. + * Git : slp/apps/u/ug-memo-efl + * Tag : ug-memo-efl_0.1.1-22 + + -- Feng Li Fri, 2 Mar 2012 15:00:32 +0800 + +ug-memo-efl (0.1.1-21) unstable; urgency=low + + * [Request]Changeset1 for Elementary API change as EFL migration. + * Git : slp/apps/u/ug-memo-efl + * Tag : ug-memo-efl_0.1.1-21 + + -- Feng Li Wed, 15 Feb 2012 18:00:47 +0800 + +ug-memo-efl (0.1.1-20) unstable; urgency=low + + * [Request]Voice call launch method changes from AUL to appsvc. + * Git : slp/apps/u/ug-memo-efl + * Tag : ug-memo-efl_0.1.1-20 + + -- Feng Li Mon, 30 Jan 2012 11:07:47 +0800 + +ug-memo-efl (0.1.1-19) unstable; urgency=low + + * [Upload]Increase version. + * Git : slp/apps/u/ug-memo-efl + * Tag : ug-memo-efl_0.1.1-19 + + -- Canjiang Lu Thu, 05 Jan 2012 11:24:47 +0800 + +ug-memo-efl (0.1.1-18) unstable; urgency=low + + * [Upload]Increase version. + * Git : slp/apps/u/ug-memo-efl + * Tag : ug-memo-efl_0.1.1-18 + + -- Canjiang Lu Wed, 04 Jan 2012 17:03:47 +0800 + +ug-memo-efl (0.1.1-17) unstable; urgency=low + + * [Request]rename package name + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : ug-memo-efl_0.1.1-17 + + -- Canjiang Lu Wed, 07 Dec 2011 15:00:42 +0800 + +sg-memo-efl (0.1.1-16) unstable; urgency=low + + * [CQ][H0100137846]Title of bottom button isn't in line with UI guideline. + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.1-16 + + -- Canjiang Lu Sat, 03 Dec 2011 15:00:42 +0800 + +sg-memo-efl (0.1.1-15) unstable; urgency=low + + * only pure text can be pasted into entry(editfield, searchbar) with new introduced API elm_entry_cnp_mode_set + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.1-15 + + -- Canjiang Lu Thu, 01 Dec 2011 17:20:35 +0800 + +sg-memo-efl (0.1.1-14) unstable; urgency=low + + * [CQ][H0100137227]use 1 pixel for bottom margin of genlist + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.1-14 + + -- Canjiang Lu Wed, 23 Nov 2011 14:30:54 +0800 + +sg-memo-efl (0.1.1-13) unstable; urgency=low + + * [CQ][H0100137310]customized border color for font/stroke color selector + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.1-13 + + -- Canjiang Lu Wed, 23 Nov 2011 14:08:54 +0800 + +sg-memo-efl (0.1.1-12) unstable; urgency=low + + * remove unnecessary ecore_idler, since popup and imf hide effect do not conflict anymore + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.1-12 + + -- Canjiang Lu Mon, 21 Nov 2011 13:38:46 +0800 + +sg-memo-efl (0.1.1-11) unstable; urgency=low + + * [fix bug]H0100137141, use win as parent of popup to prevent mouse events received by cancel button + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.1-11 + + -- Canjiang Lu Mon, 21 Nov 2011 13:20:36 +0800 + +sg-memo-efl (0.1.1-10) unstable; urgency=low + + * adjust font style of time + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.1-10 + + -- Canjiang Lu Mon, 21 Nov 2011 10:27:16 +0800 + +sg-memo-efl (0.1.1-9) unstable; urgency=low + + * ug effect update + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.1-9 + + -- Canjiang Lu Mon, 14 Nov 2011 17:21:31 +0800 + +sg-memo-efl (0.1.1-8) unstable; urgency=low + + * disable right button of selector with elm_controlbar_item_disabled_set + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.1-8 + + -- Canjiang Lu Wed, 09 Nov 2011 11:37:01 +0800 + +sg-memo-efl (0.1.1-7) unstable; urgency=low + + * naviframe layout update + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.1-7 + + -- Canjiang Lu Wed, 09 Nov 2011 11:15:24 +0800 + +sg-memo-efl (0.1.1-6) unstable; urgency=low + + * [fix bug]H0100136395, update select view when data modified by external application + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.1-6 + + -- Canjiang Lu Sat, 05 Nov 2011 14:29:14 +0800 + +sg-memo-efl (0.1.1-5) unstable; urgency=low + + * copyright for edc + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.1-5 + + -- Canjiang Lu Wed, 19 Oct 2011 14:56:33 +0800 + +sg-memo-efl (0.1.1-4) unstable; urgency=low + + * copyright update + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.1-4 + + -- Canjiang Lu Wed, 19 Oct 2011 14:37:00 +0800 + +sg-memo-efl (0.1.1-3) unstable; urgency=low + + * variable height of genlist + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.1-3 + + -- Canjiang Lu Wed, 12 Oct 2011 16:22:12 +0800 + +sg-memo-efl (0.1.1-2) unstable; urgency=low + + * sync modification from memo + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.1-2 + + -- Canjiang Lu Wed, 12 Oct 2011 13:46:04 +0800 + +sg-memo-efl (0.1.1-1) unstable; urgency=low + + * upload + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.1-1 + + -- Canjiang Lu Thu, 06 Oct 2011 10:48:48 +0800 + +sg-memo-efl (0.1.1-0) unstable; urgency=low + + * [detail ug]filter mouse event + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.1-0 + + -- Canjiang Lu Wed, 21 Sep 2011 14:07:21 +0800 + +sg-memo-efl (0.1.0-99) unstable; urgency=low + + * unused postinst script + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-99 + + -- Canjiang Lu Tue, 20 Sep 2011 15:22:22 +0800 + +sg-memo-efl (0.1.0-98) unstable; urgency=low + + * package size optimize + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-98 + + -- Canjiang Lu Tue, 20 Sep 2011 09:02:33 +0800 + +sg-memo-efl (0.1.0-97) unstable; urgency=low + + * return failed if id of record is illegal + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-97 + + -- Canjiang Lu Wed, 07 Sep 2011 09:55:00 +0800 + +sg-memo-efl (0.1.0-96) unstable; urgency=low + + * acquire user confirmation when shift between text/draw mode if record already been modified + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-96 + + -- Canjiang Lu Sat, 03 Sep 2011 14:14:08 +0800 + +sg-memo-efl (0.1.0-95) unstable; urgency=low + + * [i18n]sync from memo + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-95 + + -- Canjiang Lu Thu, 01 Sep 2011 10:52:39 +0800 + +sg-memo-efl (0.1.0-94) unstable; urgency=low + + * sync from memo(customized edc for each theme) + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-94 + + -- Canjiang Lu Tue, 30 Aug 2011 09:58:55 +0800 + +sg-memo-efl (0.1.0-93) unstable; urgency=low + + * whitespace of korean character may disappear sometimes + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-93 + + -- Canjiang Lu Sat, 27 Aug 2011 13:11:12 +0800 + +sg-memo-efl (0.1.0-92) unstable; urgency=low + + * sync modification from memo + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-92 + + -- Canjiang Lu Mon, 22 Aug 2011 08:53:28 +0800 + +sg-memo-efl (0.1.0-91) unstable; urgency=low + + * elm_bg swallowed in elm_layout(application, default) + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-91 + + -- Canjiang Lu Tue, 09 Aug 2011 09:30:35 +0800 + +sg-memo-efl (0.1.0-90) unstable; urgency=low + + * sync modification from memo + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-90 + + -- Canjiang Lu Fri, 05 Aug 2011 16:33:28 +0800 + +sg-memo-efl (0.1.0-89) unstable; urgency=low + + * NBeat layout update + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-89 + + -- Canjiang Lu Mon, 01 Aug 2011 14:57:06 +0800 + +sg-memo-efl (0.1.0-88) unstable; urgency=low + + * sync modification from memo + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-88 + + -- Canjiang Lu Sat, 30 Jul 2011 10:32:29 +0800 + +sg-memo-efl (0.1.0-87) unstable; urgency=low + + * sync from memo + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-87 + + -- Canjiang Lu Tue, 26 Jul 2011 14:51:35 +0800 + +sg-memo-efl (0.1.0-86) unstable; urgency=low + + * apply customize theme to genlist only + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-86 + + -- Canjiang Lu Mon, 25 Jul 2011 10:46:40 +0800 + +sg-memo-efl (0.1.0-85) unstable; urgency=low + + * upload + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-85 + + -- Canjiang Lu Thu, 21 Jul 2011 11:45:15 +0800 + +sg-memo-efl (0.1.0-84) unstable; urgency=low + + * efl update + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-84 + + -- Canjiang Lu Thu, 21 Jul 2011 11:10:24 +0800 + +sg-memo-efl (0.1.0-83) unstable; urgency=low + + * upload + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-83 + + -- Canjiang Lu Thu, 21 Jul 2011 10:47:26 +0800 + +sg-memo-efl (0.1.0-82) unstable; urgency=low + + * adjust dependency + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-82 + + -- Canjiang Lu Wed, 20 Jul 2011 14:20:18 +0800 + +sg-memo-efl (0.1.0-81) unstable; urgency=low + + * modify copyright as lgpl + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-81 + + -- Canjiang Lu Mon, 18 Jul 2011 09:03:05 +0800 + +sg-memo-efl (0.1.0-80) unstable; urgency=low + + * UG hide/show effect update + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-80 + + -- Canjiang Lu Wed, 13 Jul 2011 08:53:08 +0800 + +sg-memo-efl (0.1.0-79) unstable; urgency=low + + * sync + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-79 + + -- Canjiang Lu Tue, 28 Jun 2011 11:40:49 +0800 + +sg-memo-efl (0.1.0-78) unstable; urgency=low + + * sync + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-78 + + -- Canjiang Lu Wed, 22 Jun 2011 14:57:33 +0800 + +sg-memo-efl (0.1.0-77) unstable; urgency=low + + * i18n, adjust time format by udatpg_getBestPattern + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-77 + + -- Canjiang Lu Mon, 20 Jun 2011 13:11:18 +0800 + +sg-memo-efl (0.1.0-76) unstable; urgency=low + + * UG hide/show effect update + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-76 + + -- Canjiang Lu Mon, 20 Jun 2011 09:43:59 +0800 + +sg-memo-efl (0.1.0-75) unstable; urgency=low + + * upload + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-75 + + -- Canjiang Lu Mon, 30 May 2011 11:15:22 +0800 + +sg-memo-efl (0.1.0-74) unstable; urgency=low * upload - * Git: apps/u/ug-memo-efl - * Tag : ug-memo-efl_0.1.0-8 + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-74 + + -- Canjiang Lu Mon, 30 May 2011 09:36:08 +0800 + +sg-memo-efl (0.1.0-73) unstable; urgency=low + + * upload + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-73 + + -- Canjiang Lu Thu, 19 May 2011 15:09:43 +0800 + +sg-memo-efl (0.1.0-72) unstable; urgency=low + + * Standardize parsing url and email + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-72 + + -- Canjiang Lu Wed, 18 May 2011 10:57:59 +0800 + +sg-memo-efl (0.1.0-71) unstable; urgency=low + + * update dependency of libicu + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-71 + + -- Canjiang Lu Mon, 16 May 2011 10:35:51 +0800 + +sg-memo-efl (0.1.0-70) unstable; urgency=low + + * upload + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-70 + + -- Canjiang Lu Thu, 12 May 2011 08:35:48 +0800 + +sg-memo-efl (0.1.0-69) unstable; urgency=low + + * add dependency + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-69 + + -- Canjiang Lu Wed, 04 May 2011 14:29:46 +0800 + +sg-memo-efl (0.1.0-68) unstable; urgency=low + + * edit doodle done + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-68 + + -- Canjiang Lu Wed, 04 May 2011 14:02:52 +0800 + +sg-memo-efl (0.1.0-67) unstable; urgency=low + + * upload + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-67 + + -- Canjiang Lu Thu, 28 Apr 2011 14:29:49 +0800 + +sg-memo-efl (0.1.0-66) unstable; urgency=low + + * upload + * Git : git@git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-66 + + -- Canjiang Lu Sat, 23 Apr 2011 11:22:44 +0800 + +sg-memo-efl (0.1.0-65) unstable; urgency=low + + * upload + * Git : git_server:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-65 + + -- Canjiang Lu Wed, 20 Apr 2011 08:38:36 +0800 + +sg-memo-efl (0.1.0-64) unstable; urgency=low + + * add missing edc files + * Git : 165.213.180.234:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-64 + + -- canjiang lu Tue, 19 Apr 2011 08:46:33 +0800 + +sg-memo-efl (0.1.0-63) unstable; urgency=low + + * add ug template + * Git : 165.213.180.234:slp/apps/s/sg-memo-efl + * Tag : sg-memo-efl_0.1.0-63 + + -- canjiang lu Sat, 09 Apr 2011 16:40:10 +0800 + +sg-memo-efl (0.1.0-62) unstable; urgency=low + + * [Upload]Use correct dependence + * Git: git@165.213.180.234:slp/apps/s/sg-memo-efl.git + * Tag: sg-memo-efl_0.1.0-62 + + -- Yang Qing Tue, 29 Mar 2011 16:18:27 +0800 + +sg-memo-efl (0.1.0-61) unstable; urgency=low + + * [Upload]Remove contact UG dependence + * Git: git@165.213.180.234:slp/apps/s/sg-memo-efl.git + * Tag: sg-memo-efl_0.1.0-61 + + -- Yang Qing Mon, 28 Mar 2011 20:26:10 +0800 + +sg-memo-efl (0.1.0-60) unstable; urgency=low + + * [Upload]Increase a version + * Git: git@165.213.180.234:slp/apps/s/sg-memo-efl.git + * Tag: sg-memo-efl_0.1.0-60 + + -- Yang Qing Mon, 28 Mar 2011 09:48:06 +0800 + +sg-memo-efl (0.1.0-59) unstable; urgency=low + + * [Upload]Increase a version. + * Git: git@165.213.180.234:slp/apps/s/sg-memo-efl.git + * Tag: sg-memo-efl_0.1.0-59 + + -- Yang Qing Wed, 23 Mar 2011 15:12:35 +0800 + +sg-memo-efl (0.1.0-58) unstable; urgency=low + + * [CMakeLists]Add contacts-service in pkg_check_modules + * Git: git@165.213.180.234:slp/apps/s/sg-memo-efl.git + * Tag: sg-memo-efl_0.1.0-58 + + -- Yang Qing Wed, 23 Mar 2011 13:43:37 +0800 + +sg-memo-efl (0.1.0-57) unstable; urgency=low + + * [Detail]Apply autolink to show memo detail. + * Git: git@165.213.180.234:slp/apps/s/sg-memo-efl.git + * Tag: sg-memo-efl_0.1.0-57 + + -- Yang Qing Wed, 23 Mar 2011 13:40:28 +0800 + +sg-memo-efl (0.1.0-56) unstable; urgency=low + + * upload + * Git: git@165.213.180.234:slp/apps/s/sg-memo-efl.git + * Tag: sg-memo-efl_0.1.0-56 + + -- Yang Qing Thu, 17 Mar 2011 08:57:09 +0800 + +sg-memo-efl (0.1.0-55) unstable; urgency=low + + * upload + * Git: git@165.213.180.234:slp/apps/s/sg-memo-efl.git + * Tag: sg-memo-efl_0.1.0-55 + + -- Yang Qing Mon, 07 Mar 2011 10:40:03 +0800 + +sg-memo-efl (0.1.0-54) unstable; urgency=low + + * display no item when no record + * Git: git@165.213.180.234:slp/apps/s/sg-memo-efl.git + * Tag: sg-memo-efl_0.1.0-54 + + -- Canjiang Lu Mon, 07 Mar 2011 10:32:15 +0800 + +sg-memo-efl (0.1.0-53) unstable; urgency=low + + * Change ADD & QUIT button position + * Git: git@165.213.180.234:slp/apps/s/sg-memo-efl.git + * Tag: sg-memo-efl_0.1.0-53 + + -- Yang Qing Fri, 04 Mar 2011 10:32:15 +0800 + +sg-memo-efl (0.1.0-52) unstable; urgency=low + + * upload + * Git: git@165.213.180.234:slp/apps/s/sg-memo-efl.git + * Tag: sg-memo-efl_0.1.0-52 + + -- Yang Qing Fri, 25 Feb 2011 13:52:37 +0800 + +sg-memo-efl (0.1.0-51) unstable; urgency=low + + * upload + * Git: git@165.213.180.234:slp/apps/s/sg-memo-efl.git + * Tag: sg-memo-efl_0.1.0-51 + + -- Yang Qing Fri, 18 Feb 2011 16:22:12 +0800 + +sg-memo-efl (0.1.0-50) unstable; urgency=low + + * Remove clock ug package name in control file + * Git: git@git_server:slp/apps/s/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-50 + + -- Junho Lee Thu, 10 Feb 2011 20:06:55 +0900 + +sg-memo-efl (0.1.0-49) unstable; urgency=low + + * Change clock ug package name in control file(temporary code). + * Git: git@git_server:slp/apps/s/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-49 + + -- Junho Lee Thu, 10 Feb 2011 20:01:01 +0900 + +sg-memo-efl (0.1.0-48) unstable; urgency=low + + * Add UG clock dependency(temporary code). + * Git: git@git_server:slp/apps/s/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-48 + + -- Junho Lee Wed, 09 Feb 2011 18:04:24 +0900 + +sg-memo-efl (0.1.0-47) unstable; urgency=low + + * upload + * Git: git@git_server:slp/apps/s/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-47 + + -- Canjiang Lu Mon, 31 Jan 2011 10:41:55 +0800 + +sg-memo-efl (0.1.0-46) unstable; urgency=low + + * upload + * Git: git@git_server:slp/apps/s/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-46 + + -- Canjiang Lu Mon, 24 Jan 2011 14:57:12 +0800 + +sg-memo-efl (0.1.0-45) unstable; urgency=low + + * upload + * Git: git@git_server:slp/apps/s/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-45 + + -- Canjiang Lu Thu, 20 Jan 2011 10:05:38 +0800 + +sg-memo-efl (0.1.0-44) unstable; urgency=low + + * modify doodle path + * Git: git@165.213.180.234:slp/apps/s/sg-memo-efl.git + * Tag: sg-memo-efl_0.1.0-44 + + -- Yang Qing Wed, 19 Jan 2011 14:25:37 +0800 + +sg-memo-efl (0.1.0-43) unstable; urgency=low + + * fix build error + * Git: git@165.213.180.234:slp/apps/s/sg-memo-efl.git + * Tag: sg-memo-efl_0.1.0-43 + + -- Yang Qing Wed, 12 Jan 2011 14:44:34 +0800 + +sg-memo-efl (0.1.0-42) unstable; urgency=low + + * elm_popup_timeout_set API changed + * Git: git@165.213.180.234:slp/apps/s/sg-memo-efl.git + * Tag: sg-memo-efl_0.1.0-42 + + -- Yang Qing Wed, 12 Jan 2011 14:11:35 +0800 + +sg-memo-efl (0.1.0-41) unstable; urgency=low + + * upload + * Git: git@git_server:slp/apps/s/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-41 + + -- Canjiang Lu Fri, 07 Jan 2011 15:28:46 +0800 + +sg-memo-efl (0.1.0-40) unstable; urgency=low + + * upload + * Git: git@git_server:slp/apps/s/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-40 + + -- Canjiang Lu Fri, 07 Jan 2011 15:13:12 +0800 + +sg-memo-efl (0.1.0-39) unstable; urgency=low + + * upload + * Git: git@git_server:slp/apps/s/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-39 + + -- Yang Qing Tue, 28 Dec 2010 11:31:40 +0800 + +sg-memo-efl (0.1.0-38) unstable; urgency=low + + * upload + * Git: git@git_server:slp/apps/s/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-38 + + -- Canjiang Lu Fri, 24 Dec 2010 15:02:37 +0800 + +sg-memo-efl (0.1.0-37) unstable; urgency=low + + * upload + * Git: git@git_server:slp/apps/s/sg-memo-efl +ssh://canjiang.lu@gerrit_server:29421/slp/apps/s/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-37 + + -- Canjiang Lu Fri, 24 Dec 2010 14:57:54 +0800 + +sg-memo-efl (0.1.0-36) unstable; urgency=low + + * upload + * Git: 165.213.180.234:/git/slp/apps/sg-memo-efl/ + * Tag: sg-memo-efl_0.1.0-36 + + -- Canjiang Lu Sat, 04 Dec 2010 16:17:48 +0800 + +sg-memo-efl (0.1.0-35) unstable; urgency=low + + * draft version done + * Git: 165.213.180.234:/git/slp/apps/sg-memo-efl/ + * Tag: sg-memo-efl_0.1.0-35 + + -- Canjiang Lu Sat, 04 Dec 2010 10:53:31 +0800 + +sg-memo-efl (0.1.0-34) unstable; urgency=low + + * upload + * Git: 165.213.180.234:/git/slp/apps/sg-memo-efl/ + * Tag: sg-memo-efl_0.1.0-34 + + -- Canjiang Lu Fri, 03 Dec 2010 15:28:58 +0800 + +sg-memo-efl (0.1.0-33) unstable; urgency=low + + * upload + * Git: 165.213.180.234:/git/slp/apps/sg-memo-efl/ + * Tag: sg-memo-efl_0.1.0-33 + + -- Canjiang Lu Mon, 29 Nov 2010 13:59:53 +0800 + +sg-memo-efl (0.1.0-32) unstable; urgency=low + + * enable dbg package + * Git: 165.213.180.234:/git/slp/apps/sg-memo-efl/ + * Tag: sg-memo-efl_0.1.0-32 + + -- Canjiang Lu Thu, 11 Nov 2010 09:22:24 +0800 + +sg-memo-efl (0.1.0-31) unstable; urgency=low + + * upload + * Git: 165.213.180.234:/git/slp/apps/sg-memo-efl/ + * Tag: sg-memo-efl_0.1.0-31 + + -- X536 Gong Thu, 16 Sep 2010 09:58:22 +0800 + +sg-memo-efl (0.1.0-30) unstable; urgency=low + + * upload + * Git: 165.213.180.234:/git/slp/apps/sg-memo-efl/ + * Tag: sg-memo-efl_0.1.0-30 + + -- Canjiang Lu Thu, 16 Sep 2010 08:37:56 +0800 + +sg-memo-efl (0.1.0-29) unstable; urgency=low + + * upload + * Git: 165.213.180.234:/git/slp/apps/sg-memo-efl/ + * Tag: sg-memo-efl_0.1.0-29 + + -- Canjiang Lu Thu, 16 Sep 2010 08:21:05 +0800 + +sg-memo-efl (0.1.0-28) unstable; urgency=low + + * upload + * Git: 165.213.180.234:/git/slp/apps/sg-memo-efl/ + * Tag: sg-memo-efl_0.1.0-28 + + -- Canjiang Lu Sat, 11 Sep 2010 10:01:25 +0800 + +sg-memo-efl (0.1.0-27) unstable; urgency=low + + * Apply new UI gadget mode + * Git: 165.213.180.234:/git/slp/apps/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-27 + + -- Zhibin Zhou Tue, 10 Aug 2010 18:02:10 +0800 + +sg-memo-efl (0.1.0-26) unstable; urgency=low + + * Apply new UI gadget mode + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-26 + + -- Zhibin Zhou Thu, 05 Aug 2010 16:43:31 +0800 + +sg-memo-efl (0.1.0-25) unstable; urgency=low + + * Remove retm_if + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-25 + + -- Zhibin Zhou Sat, 24 Jul 2010 11:04:16 +0800 + +sg-memo-efl (0.1.0-24) unstable; urgency=low + + * Update + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-24 + + -- Zhibin Zhou Sat, 24 Jul 2010 07:55:38 +0800 + +sg-memo-efl (0.1.0-23) unstable; urgency=low + + * Update .postinst file according to new DAC policy + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-23 + + -- Zhibin Zhou Sat, 24 Jul 2010 07:42:46 +0800 + +sg-memo-efl (0.1.0-22) unstable; urgency=low + + * Update .postinst file according to new DAC policy + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-22 + + -- Zhibin Zhou Fri, 23 Jul 2010 23:16:50 +0800 + +sg-memo-efl (0.1.0-21) unstable; urgency=low + + * Remove libapputilinhouse + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-21 + + -- Zhibin Zhou Mon, 12 Jul 2010 13:52:10 +0800 + +sg-memo-efl (0.1.0-20) unstable; urgency=low + + * update isf + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-20 + + -- Canjiang Lu Thu, 08 Jul 2010 15:02:59 +0800 + +sg-memo-efl (0.1.0-19) unstable; urgency=low + + * update font name + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-19 + + -- Canjiang Lu Thu, 17 Jun 2010 03:30:26 +0800 + +sg-memo-efl (0.1.0-18) unstable; urgency=low + + * repackage for dlog update + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-18 + + -- Canjiang Lu Wed, 16 Jun 2010 04:26:45 +0800 + +sg-memo-efl (0.1.0-17) unstable; urgency=low + + * enable return parameters + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-17 + + -- Canjiang Lu Tue, 15 Jun 2010 10:47:54 +0800 + +sg-memo-efl (0.1.0-16) unstable; urgency=low + + * enable return parameters + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-16 + + -- Canjiang Lu Tue, 15 Jun 2010 09:20:42 +0800 + +sg-memo-efl (0.1.0-15) unstable; urgency=low + + * update version + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-15 + + -- Zhibin Zhou Mon, 14 Jun 2010 21:13:56 +0800 + +sg-memo-efl (0.1.0-14) unstable; urgency=low + + * Repackage + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-14 + + -- Zhibin Zhou Mon, 14 Jun 2010 20:51:04 +0800 + +sg-memo-efl (0.1.0-13) unstable; urgency=low + + * Remove applog.h + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-13 + + -- Zhibin Zhou Sat, 12 Jun 2010 09:46:31 +0800 + +sg-memo-efl (0.1.0-12) unstable; urgency=low + + * Remove UI prefixed api + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-12 + + -- Canjiang Lu Thu, 10 Jun 2010 13:43:21 +0800 + +sg-memo-efl (0.1.0-11) unstable; urgency=low + + * Remove elm_add_notify + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-11 + + -- Zhibin Zhou Wed, 09 Jun 2010 16:48:24 +0800 + +sg-memo-efl (0.1.0-10) unstable; urgency=low + + * Remove EFL dependency of input/out parameters + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-10 + + -- Canjiang Lu Wed, 02 Jun 2010 16:06:15 +0800 + +sg-memo-efl (0.1.0-9) unstable; urgency=low + + * Clear warnings + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-9 + + -- Canjiang Lu Wed, 02 Jun 2010 15:59:05 +0800 + +sg-memo-efl (0.1.0-8) unstable; urgency=low + + * Remove dependency with sysman + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-8 + + -- Canjiang Lu Wed, 02 Jun 2010 09:23:25 +0800 + +sg-memo-efl (0.1.0-7) unstable; urgency=low + + * Bind text when sg is launched + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-7 + + -- Canjiang Lu Tue, 01 Jun 2010 10:04:23 +0800 + +sg-memo-efl (0.1.0-6) unstable; urgency=low + + * Milestone of memo gadget + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-6 + + -- Canjiang Lu Fri, 28 May 2010 15:04:22 +0800 + +sg-memo-efl (0.1.0-5) unstable; urgency=low + + * Update version + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-efl + * Tag: sg-memo-efl_0.1.0-5 + + -- Canjiang Lu Wed, 26 May 2010 17:07:07 +0800 + +sg-memo-efl (0.1.0-4) unstable; urgency=low + + * Modification according to sg development guide + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-0 + * Tag: sg-memo-efl_0.1.0-4 + + -- Canjiang Lu Wed, 26 May 2010 16:04:20 +0800 + +sg-memo-efl (0.1.0-3) unstable; urgency=low + + * Adjust package according name rules + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-0 + * Tag: sg-memo-efl_0.1.0-3 + + -- Canjiang Lu Fri, 19 May 2010 17:28:33 +0900 + +sg-memo (0.1.0-2) unstable; urgency=low + + * Modified EDJ path for simulator + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-0 + * Tag: sg-memo_0.1.0-2 + + -- Jae-Yong Lee Fri, 14 May 2010 17:28:33 +0900 + +sg-memo (0.1.0-1) unstable; urgency=low + + * Initial release. + * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/sg-memo-0 + * Tag: sg-memo_0.1.0-1 - -- Canjiang Lu Sat, 17 Mar 2012 15:32:17 +0800 + -- Jae-Yong Lee Fri, 14 May 2010 10:40:21 +0900 diff --git a/debian/control b/debian/control index 58c2043..63d9d6e 100644 --- a/debian/control +++ b/debian/control @@ -1,8 +1,8 @@ Source: ug-memo-efl Section: misc Priority: extra -Maintainer: Zhou Zhibin , Lu Canjiang -Build-Depends: debhelper (>= 5), libappcore-efl-dev, libelm-dev, libui-gadget-dev, libecore-dev, libevas-dev, libslp-memo-dev, libug-contacts-dev, iniparser-dev, dlog-dev, libbundle-dev, libicu-dev +Maintainer: Zhou Zhibin , Lu Canjiang , Li Feng , Wei Hua +Build-Depends: debhelper (>= 5), libappcore-efl-dev, libelm-dev, libui-gadget-dev, libecore-dev, libevas-dev, libslp-memo-dev, libug-contacts-dev, iniparser-dev, dlog-dev, libbundle-dev, libicu-dev, libappsvc-dev Standards-Version: 0.1.0 Package: libug-memo-efl diff --git a/debian/libsg-memo-efl.install.in b/debian/libsg-memo-efl.install.in deleted file mode 100755 index e18df37..0000000 --- a/debian/libsg-memo-efl.install.in +++ /dev/null @@ -1,2 +0,0 @@ -/opt/ug/lib/* -/opt/ug/res/* diff --git a/edc/common.edc b/edc/common.edc index 90ae8a9..df85937 100644 --- a/edc/common.edc +++ b/edc/common.edc @@ -1,18 +1,20 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.org/license +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +*/ #define GENLIST_PART_BOTTOM_LINE \ part { \ @@ -23,7 +25,7 @@ part { \ min: 0 1; \ fixed: 0 1; \ visible: 1; \ - color: 87 87 87 255; \ + color: 169 169 169 255; \ rel1 { \ relative: 0.0 1.0; \ offset: 0 -1; \ @@ -36,39 +38,39 @@ styles style { name: "textblock_style_main"; - base: "font=Helvetica_Neue:style=Roman font_size=42 align=left color=#F9F9F9 wrap=char"; + base: "font=SLP:style=Roman text_class=slp_roman font_size=42 align=left color=#F9F9F9 wrap=char"; } } #define PART_TEXT_BLACK_LEFT(iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t, \ - iText, iFont, iSize)\ + iText, iFont, iCLass, iSize)\ PART_TEXT_REL(iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t, \ - iText, iFont, iSize, 0.0, 0.5, 0, 0, 0, 255) + iText, iFont, iClass, iSize, 0.0, 0.5, 0, 0, 0, 255) #define PART_TEXT_GRAY_RIGHT(iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t, \ - iText, iFont, iSize)\ + iText, iFont, iClass, iSize)\ PART_TEXT_REL(iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t, \ - iText, iFont, iSize, 1.0, 0.5, 85, 70, 58, 255) + iText, iFont, iClass, iSize, 1.0, 0.5, 85, 70, 58, 255) #define PART_TEXT_WHITE_LEFT(iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t, \ - iText, iFont, iSize)\ + iText, iFont, iClass, iSize)\ PART_TEXT_REL(iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t, \ - iText, iFont, iSize, 0.0, 0.5, 255, 255, 255, 255) + iText, iFont, iClass, iSize, 0.0, 0.5, 255, 255, 255, 255) #define PART_TEXT_GRAY_CENTER(iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t, \ - iText, iFont, iSize)\ + iText, iFont, iClass, iSize)\ PART_TEXT_REL(iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t, \ - iText, iFont, iSize, 0.5, 0.5, 85, 70, 58, 255) + iText, iFont, iClass, iSize, 0.5, 0.5, 85, 70, 58, 255) #define PART_TEXT_DETAIL(iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t, \ - iText, iFont, iSize)\ + iText, iFont, iClass, iSize)\ PART_TEXT_REL(iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t, \ - iText, iFont, iSize, 0.0, 0.5, 249, 249, 249, 255) + iText, iFont, iClass, iSize, 0.0, 0.5, 0, 0, 0, 255) #define PART_TEXT_DATE(iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t, \ - iText, iFont, iSize)\ + iText, iFont, iClass, iSize)\ PART_TEXT_REL(iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t, \ - iText, iFont, iSize, 0.0, 0.5, 100, 100, 100, 255) + iText, iFont, iClass, iSize, 0.0, 0.5, 124, 124, 124, 255) group{ name: "empty_layout"; diff --git a/edc/detail.edc b/edc/detail.edc index da0cfc8..94c11cb 100644 --- a/edc/detail.edc +++ b/edc/detail.edc @@ -1,18 +1,20 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.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. +* +*/ group{ name: "detail_frame"; @@ -35,6 +37,7 @@ group{ text { text: "date"; font: "SLP:style=Medium"; + text_class:"slp_medium"; size: 16; align: 1 0.5; } diff --git a/edc/doodle_editor.edc b/edc/doodle_editor.edc new file mode 100644 index 0000000..c9a914c --- /dev/null +++ b/edc/doodle_editor.edc @@ -0,0 +1,120 @@ +/* +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.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. +* +*/ + +group{ + name: "doodle_editor"; + parts{ + PART_BG("bg") /* 720 * unknown */ + PART_V_PIXEL_RECT("top_margin", 16, "bg", 0.0, 0.0) + PART_V_PIXEL_RECT("text.bg", 48, "top_margin", 1.0, 0.0) + PART_V_PIXEL_RECT("top_margin2", 10, "text.bg", 1.0, 0.0) + PART_RECT("_doodle.bg", 0.0, 1.0, "top_margin2", 1.0, 0.0, "bottom_margin2") + PART_V_PIXEL_RECT("bottom_margin2", 108, "bottom_margin", 0.0, 1.0) + PART_V_PIXEL_RECT("bottom_margin", 86, "bg", 1.0, 1.0) + PART_V_PIXEL_RECT("_bottom_margin", 108, "bg", 1.0, 1.0) + PART_V_PIXEL_RECT("tool.bg", IMF_HEIGHT, "bg", 1.0, 1.0) + /* layout */ + PART_V_PIXEL_RECT("doodle.bg", 700, "_doodle.bg", 0.5, 0.5) + PART_COLOR_RECT("doodle.bg.color", "doodle.bg", 255, 255, 255, 255) + PART_V_PIXEL_RECT("toolbar.bg", 86, "bg", 1.0, 1.0) + PART_V_PIXEL_RECT("toolbar.bg.up", 86, "tool.bg", 0.0, 1.0) + PART_V_PIXEL_RECT("comment.bg.up", 108, "tool.bg", 0.0, 1.0) + PART_V_PIXEL_RECT("comment.bg", 108, "bottom_margin", 0.0, 1.0) + PART_V_PIXEL_RECT("comment.bg.down", 108, "bg", 1.0, 1.0) + /* content */ + PART_TEXT_GRAY_RIGHT("elm.text.date", 16/720, 0.0, "text.bg", (720-16)/720, 1.0, "text.bg", "date", "SLP:style=Medium", "slp_medium", 32) + PART_SWALLOW_REL("elm.swallow.doodle", 16/720, 0.0, "doodle.bg", (720-16)/720, 1.0, "doodle.bg") + PART_SWALLOW("elm.swallow.toolbar", "toolbar.bg") + PART_SWALLOW("elm.swallow.tool", "tool.bg") + PART_SWALLOW("elm.swallow.comment", "comment.bg") + }/* end part */ + programs { + program { + name: "init"; + signal: "load"; + source: ""; + script { + SCRIPT_CUSTOM_PART("elm.swallow.toolbar"); + SCRIPT_CUSTOM_PART("elm.swallow.comment"); + SCRIPT_CUSTOM_PART("_doodle.bg"); + } + } /* end program */ + + program { + name: "abbrev"; + signal: "abbrev"; + source: "elm"; + script { + SCRIPT_SET_VISIBLE(elm.swallow.toolbar, 1) + SCRIPT_SET_VISIBLE(elm.swallow.comment, 0) + SCRIPT_SET_REL(elm.swallow.toolbar, 0.0, 0.0, "toolbar.bg.up", 1.0, 1.0, "toolbar.bg.up"); + SCRIPT_SET_REL("_doodle.bg", 0.0, 1.0, "top_margin2", 1.0, 0.0, "bottom_margin2") + } + } /* end program */ + program { + name: "expand"; + signal: "expand"; + source: "elm"; + script { + SCRIPT_SET_VISIBLE(elm.swallow.toolbar, 1) + SCRIPT_SET_VISIBLE(elm.swallow.comment, 1) + SCRIPT_SET_REL(elm.swallow.toolbar, 0.0, 0.0, "toolbar.bg", 1.0, 1.0, "toolbar.bg"); + SCRIPT_SET_REL(elm.swallow.comment, 0.0, 0.0, "comment.bg", 1.0, 1.0, "comment.bg"); + SCRIPT_SET_REL("_doodle.bg", 0.0, 1.0, "top_margin2", 1.0, 0.0, "bottom_margin2") + } + } /* end program */ + program { + name: "comment_abbrev"; + signal: "abbrev"; + source: "comment"; + script { + SCRIPT_SET_VISIBLE(elm.swallow.toolbar, 0) + SCRIPT_SET_VISIBLE(elm.swallow.comment, 1) + SCRIPT_SET_REL(elm.swallow.comment, 0.0, 0.0, "comment.bg.up", 1.0, 1.0, "comment.bg.up"); + SCRIPT_SET_REL("_doodle.bg", 0.0, 1.0, "top_margin2", 1.0, 0.0, "_bottom_margin") + } + } /* end program */ + program { + name: "comment_expand"; + signal: "expand"; + source: "comment"; + script { + SCRIPT_SET_VISIBLE(elm.swallow.toolbar, 0) + SCRIPT_SET_VISIBLE(elm.swallow.comment, 1) + SCRIPT_SET_REL(elm.swallow.comment, 0.0, 0.0, "comment.bg.down", 1.0, 1.0, "comment.bg.down"); + SCRIPT_SET_REL("_doodle.bg", 0.0, 1.0, "top_margin2", 1.0, 0.0, "_bottom_margin") + } + } /* end program */ + }/* end programs */ +} + +group{ + name: "doodle_comment"; + images { + image: "00_search_input_field_bg.png" COMP; + } + parts{ + PART_BG("bg") /* 720 * 67 */ + PART_COLOR_RECT("bg.color", "bg", 30, 25, 22, 255) + PART_RECT("image.bg", 16/720, 8/67, "bg", (720-16)/720, (67-9)/67, "bg") + PART_BORDER_IMAGE("image", "image.bg", "00_search_input_field_bg.png", 6, 6, 7, 5) + PART_V_PIXEL_RECT("editfield.bg", 50, "image.bg", 0.5, 0.5) + PART_SWALLOW_REL("elm.swallow.editfield", 10/460, 0.0, "editfield.bg", (460-10)/460, 1.0, "editfield.bg") + }/* end parts */ +}/* end group */ + diff --git a/edc/edit_list.edc b/edc/edit_list.edc index 64c11ed..8816372 100644 --- a/edc/edit_list.edc +++ b/edc/edit_list.edc @@ -1,18 +1,20 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.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. +* +*/ group{ name: "edit_list_frame"; @@ -31,7 +33,7 @@ group { PART_BG("bg"); /* 480 x 66 */ PART_COLOR_RECT("bg_color", "bg", 0, 0, 0, 255); PART_SWALLOW_REL("elm.swallow.check", 15/480, 8/66, "bg", 65/480, 58/66, "bg"); - PART_TEXT_WHITE_LEFT("elm.text.select.all", 75/480, 0.0, "bg", 1.0, 1.0, "bg", "Select all", "system_content", 25); + PART_TEXT_WHITE_LEFT("elm.text.select.all", 75/480, 0.0, "bg", 1.0, 1.0, "bg", "Select all", "SLP:style=Regular", "slp_regular", 25); PART_EVENT_RECT("event", "bg") } /* parts */ } /* group */ diff --git a/edc/edit_tool.edc b/edc/edit_tool.edc new file mode 100644 index 0000000..4bf35df --- /dev/null +++ b/edc/edit_tool.edc @@ -0,0 +1,100 @@ +/* +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.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. +* +*/ + +group{ + name: "color_selector"; + parts{ + PART_BG("bg") + PART_V_PIXEL_RECT("rect.up", 200, "bg", 0.0, 0.0) + PART_PIXEL_RECT("border.bg", (500+6), (160+5), 0.5, 0.5, "rect.up", 0.5, 0.5) + PART_PIXEL_RECT("color.bg", 500, 160, 0.5, 0.5, "rect.up", 0.5, 0.5) + PART_SWALLOW_REL("elm.swallow.color", 0.0, 0.0, "color.bg", 1.0, 1.0, "color.bg") + PART_EVENT_RECT("event", "rect.up") + PART_SWALLOW_REL("elm.swallow.selector", 4/480, 1.0, "rect.up", (480-4)/480, 1.0, "bg") + }/* end parts */ + programs { + program { + name: "init"; + signal: "load"; + source: ""; + script { + SCRIPT_CUSTOM_PART(bg); + SCRIPT_CUSTOM_PART(border.bg); + } + } /* end program */ + program + { + name: "black_theme"; + signal: "black"; + source: "elm"; + script { + SCRIPT_SET_COLOR(bg, 0, 0, 0, 255); + SCRIPT_SET_COLOR(border.bg, 255, 255, 255, 255); + } + } + program + { + name: "white_theme"; + signal: "white"; + source: "elm"; + script { + SCRIPT_SET_COLOR(bg, 255, 255, 255, 255); + SCRIPT_SET_COLOR(border.bg, 0, 0, 0, 255); + } + } + }/* end programs */ +}/* end group */ + +group{ + name: "pencil_size_selector"; + parts{ + PART_BG("bg") + PART_SWALLOW("bg.color", "bg") + PART_RECT("rect.up", 0.0, 0.0, "bg", 1.0, 0.5, "bg") + PART_PIXEL_RECT("pencil.bg", 300, 0, 0.5, 0.5, "rect.up", 0.5, 0.5) + PART_SWALLOW("elm.swallow.pencil", "pencil.bg") + PART_EVENT_RECT("event", "rect.up") + PART_SWALLOW_REL("elm.swallow.selector", 5/480, 0.5, "bg", (480-5)/480, 1.0, "bg") + }/* end parts */ +}/* end group */ + +group{ + name: "font_size_selector"; + parts{ + PART_BG("bg") + PART_SWALLOW("bg.color", "bg") + PART_RECT("rect.up", 0.0, 0.0, "bg", 1.0, 0.5, "bg") + PART_SWALLOW("elm.swallow.label", "rect.up") + PART_EVENT_RECT("event", "rect.up") + PART_SWALLOW_REL("elm.swallow.selector", 5/480, 0.5, "bg", (480-5)/480, 1.0, "bg") + }/* end parts */ +}/* end group */ + +group{ + name: "edit_toolbar"; + parts{ + PART_BG("bg") /* 720 x 86 */ + PART_COLOR_RECT("color", "bg", 204, 204, 204, 255) + PART_SWALLOW_REL("elm.swallow.btn1", (10)/720, 10/86, "bg", (10+74)/720, (86-10)/86, "bg") + PART_SWALLOW_REL("elm.swallow.btn2", (10+16+74)/720, 10/86, "bg", (10+16+74*2)/720, (86-10)/86, "bg") + PART_SWALLOW_REL("elm.swallow.btn3", (10+16*2+74*2)/720, 10/86, "bg", (10+16*2+74*3)/720, (86-10)/86, "bg") + PART_SWALLOW_REL("elm.swallow.btn4", (720-10-160)/720, 10/86, "bg", (720-10)/720, (86-10)/86, "bg") + PART_V_PIXEL_RECT("bottom_margin", 1, "bg", 1.0, 0.0) + PART_COLOR_RECT("bottom_margin_color", "bottom_margin", 204, 204, 204, 255) + }/* end parts */ +}/* end group */ diff --git a/edc/gl_edit_list.edc b/edc/gl_edit_list.edc index 464d943..b056cdb 100644 --- a/edc/gl_edit_list.edc +++ b/edc/gl_edit_list.edc @@ -1,18 +1,20 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.org/license +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +*/ #define EDIT_GL_STYLE(iStyle, iX2TextBlock) \ group { name: "elm/genlist/item/memo/edit/"iStyle"/default"; \ @@ -47,7 +49,7 @@ group { name: "elm/genlist/item/memo/edit/"iStyle"/default"; \ } \ } \ } \ - PART_TEXT_DATE("elm.text.date", (16+96+16)/720, (128-16-32)/128, "bg", (720-16)/720, (128-16)/128, "bg", "", "Helvetica Neue:style=Medium", 32) \ + PART_TEXT_DATE("elm.text.date", (16+96+16)/720, (128-16-32)/128, "bg", (720-16)/720, (128-16)/128, "bg", "", "SLP:style=Medium", "slp_medium", 32) \ PART_SWALLOW_REL("elm.swallow.doodle", (720-16-96)/720, 16/128, "bg", (720-16)/720, (128-16)/128, "bg") \ GENLIST_PART_BOTTOM_LINE \ PART_EVENT_RECT("event", "bg") \ @@ -59,7 +61,7 @@ group { name: "elm/genlist/item/memo/edit/"iStyle"/default"; \ source: "";\ script {\ SCRIPT_CUSTOM_PART(bg);\ - SCRIPT_SET_COLOR(bg, 0, 0, 0, 255);\ + SCRIPT_SET_COLOR(bg, 249, 249, 249, 255);\ }\ } /* end program */\ program \ @@ -68,7 +70,7 @@ group { name: "elm/genlist/item/memo/edit/"iStyle"/default"; \ signal: "elm,state,selected"; \ source: "elm"; \ script {\ - SCRIPT_SET_COLOR(bg, 50, 50, 50, 255);\ + SCRIPT_SET_COLOR(bg, 42, 137, 194, 255);\ }\ transition: LINEAR 0.1; \ } \ @@ -78,7 +80,7 @@ group { name: "elm/genlist/item/memo/edit/"iStyle"/default"; \ signal: "elm,state,unselected"; \ source: "elm"; \ script {\ - SCRIPT_SET_COLOR(bg, 0, 0, 0, 255);\ + SCRIPT_SET_COLOR(bg, 249, 249, 249, 255);\ }\ transition: LINEAR 0.1; \ }\ diff --git a/edc/selector.edc b/edc/selector.edc index 4f9bb58..2fd314e 100644 --- a/edc/selector.edc +++ b/edc/selector.edc @@ -1,18 +1,20 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.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. +* +*/ group{ name: "selector_frame"; diff --git a/edc/text_editor.edc b/edc/text_editor.edc new file mode 100644 index 0000000..d10df8b --- /dev/null +++ b/edc/text_editor.edc @@ -0,0 +1,62 @@ +/* +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.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. +* +*/ + +group{ + name: "text_editor"; + parts{ + PART_BG_EX("bg", 720, 0) /* 720 * unknown */ + PART_V_PIXEL_RECT("top_margin", 16, "bg", 0.0, 0.0) + PART_V_PIXEL_RECT("text.bg", 48, "top_margin", 1.0, 0.0) + PART_V_PIXEL_RECT("top_margin2", 10, "text.bg", 1.0, 0.0) + PART_V_PIXEL_RECT("toolbar.bg", 86, "tool.bg", 0.0, 1.0) + PART_V_PIXEL_RECT("tool.bg", 0, "bg", 1.0, 1.0) + /* content */ + PART_TEXT_GRAY_RIGHT("elm.text.date", 16/720, 0.0, "text.bg", (720-16)/720, 1.0, "text.bg", "date", "SLP:style=Medium", "slp_medium", 32) + PART_SWALLOW_REL("elm.swallow.text", 16/720, 1.0, "top_margin2", (720-16)/720, 0.0, "toolbar.bg") + PART_SWALLOW("elm.swallow.toolbar", "toolbar.bg") + PART_SWALLOW("elm.swallow.tool", "tool.bg") + }/* end part */ + programs { + program { + name: "init"; + signal: "load"; + source: ""; + script { + SCRIPT_CUSTOM_PART("tool.bg"); + SCRIPT_CUSTOM_PART("elm.swallow.text"); + } + } /* end program */ + + program { + name: "abbrev"; + signal: "abbrev"; + source: "elm"; + script { + set_state_val(PART:"tool.bg", STATE_MIN, 0, IMF_HEIGHT); + } + } /* end program */ + program { + name: "expand"; + signal: "expand"; + source: "elm"; + script { + set_state_val(PART:"tool.bg", STATE_MIN, 0, 0); + } + } /* end program */ + }/* end programs */ +} diff --git a/extend/extended-edc.h b/extend/extended-edc.h index db8894c..009c908 100644 --- a/extend/extended-edc.h +++ b/extend/extended-edc.h @@ -1,18 +1,20 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.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 __EXTENDED_EDC_H__ #define __EXTENDED_EDC_H__ @@ -250,7 +252,6 @@ part {\ state: "default" 0.0;\ rel1 { relative: 0.0 0.0; to: iTo; } \ rel2 { relative: 1.0 1.0; to: iTo; } \ - fixed: 1 1; \ } \ } \ @@ -293,7 +294,7 @@ part {\ } \ } \ -#define PART_TEXT(iName, iTo, iText, iFont, iSize,\ +#define PART_TEXT(iName, iTo, iText, iFont, iClass, iSize,\ iAx, iAy, iCr, iCg, iCb, iCa)\ part {\ name: iName;\ @@ -308,6 +309,7 @@ part {\ text {\ text: iText;\ font: iFont;\ + text_class: iClass;\ size: iSize;\ align: iAx iAy;\ } \ @@ -315,9 +317,9 @@ part {\ } \ #define PART_TEXT_REL(iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t,\ - iText, iFont, iSize, iAx, iAy, iCr, iCg, iCb, iCa)\ + iText, iFont, iClass, iSize, iAx, iAy, iCr, iCg, iCb, iCa)\ PART_RECT("_"iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t)\ -PART_TEXT(iName, "_"iName, iText, iFont, iSize, iAx, iAy, iCr, iCg, iCb, iCa)\ +PART_TEXT(iName, "_"iName, iText, iFont, iClass, iSize, iAx, iAy, iCr, iCg, iCb, iCa)\ /***********************************************************************/ /* script */ diff --git a/extend/extended-elm.c b/extend/extended-elm.c index 6722529..40b6ad8 100644 --- a/extend/extended-elm.c +++ b/extend/extended-elm.c @@ -1,18 +1,20 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.org/license +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +*/ #include diff --git a/extend/extended-elm.h b/extend/extended-elm.h index d6d8679..732627f 100644 --- a/extend/extended-elm.h +++ b/extend/extended-elm.h @@ -1,18 +1,20 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.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 __EXTENDED_ELM_H__ #define __EXTENDED_ELM_H__ diff --git a/extend/gravel.h b/extend/gravel.h index 013a404..5aa1500 100644 --- a/extend/gravel.h +++ b/extend/gravel.h @@ -1,18 +1,20 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.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 __GRAVEL_H__ #define __GRAVEL_H__ diff --git a/extend/supplement.c b/extend/supplement.c index e90f903..8725330 100644 --- a/extend/supplement.c +++ b/extend/supplement.c @@ -1,44 +1,50 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.org/license +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +*/ #include #include #include -static void _bundle_iterate_dump_cb(const char *k, const char *v, void *data) +static bool _service_iterate_dump_cb(service_h service, const char *key, void *user_data) { - LOGD("%s -> %s\n", k, v); + LOGD("%s -> %s\n", key, user_data); + return 0; } -void bundle_dump(bundle *b) +void service_dump(service_h service) { - if (b != NULL) { - bundle_iterate(b, _bundle_iterate_dump_cb, NULL); + if (service != NULL) { + service_foreach_extra_data(service, _service_iterate_dump_cb, NULL); } } -Eina_Bool bundle_key_check(bundle *b, const char *key, const char *val) +Eina_Bool service_key_check(service_h service, const char *key, const char *val) { - const char *str = bundle_get_val(b, key); - if (str != NULL) { - if (strcmp(str, val) == 0) { - return EINA_TRUE; - } - } - return EINA_FALSE; + char *str = NULL; + service_get_extra_data(service, key, &str); + if (str != NULL) { + if (strcmp(str, val) == 0) { + SFREE(str); + return EINA_TRUE; + } + SFREE(str); + } + return EINA_FALSE; } void evas_object_geometry_dump(Evas_Object *eo) diff --git a/extend/supplement.h b/extend/supplement.h index 1f1e7ec..d9a80ea 100644 --- a/extend/supplement.h +++ b/extend/supplement.h @@ -1,18 +1,20 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.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 __SUPPLEMENT_H__ #define __SUPPLEMENT_H__ @@ -45,8 +47,8 @@ do { \ evas_object_smart_callback_add(obj, event, evas_object_smart_event_hit, #obj "\t" event); /* extended functions */ -void bundle_dump(bundle *b); -Eina_Bool bundle_key_check(bundle *b, const char *key, const char *val); +void service_dump(service_h service); +Eina_Bool service_key_check(service_h service, const char *key, const char *val); void evas_object_geometry_dump(Evas_Object *eo); void evas_object_event_hit(void *data, Evas *e, Evas_Object *obj, void *event_info); void evas_object_smart_event_hit(void *data, Evas_Object *obj, void *event_info); diff --git a/include/memo-assist.h b/include/memo-assist.h index 7460a93..6d8fc82 100644 --- a/include/memo-assist.h +++ b/include/memo-assist.h @@ -1,18 +1,20 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.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 __MEMO_ASSIST_H__ #define __MEMO_ASSIST_H__ @@ -20,6 +22,8 @@ #include #include #include +#include + #define DOODLE_TITLE_PREFIX "Draw_" @@ -48,22 +52,34 @@ typedef void (*Memo_Component_Callback)(void *data, const char *msg, void *event typedef struct memo_data memo_data_t; typedef struct memo_data_list memo_data_list_t; +typedef enum { + MOUSE_EVENT_INVALID = 0, + MOUSE_EVENT_CLICK, + MOUSE_EVENT_DRAG_LEFT, + MOUSE_EVENT_DRAG_RIGHT, + MOUSE_EVENT_DRAG_UP, + MOUSE_EVENT_DRAG_DOWN, +} mouse_behaviour_t; + +#define MOUSE_POSITION_INVALID 9999 + char * strcasestr (const char *haystack, const char *needle); char * strptime (const char *s, const char *fmt, struct tm *tp); void icu_init(); char *memo_get_doodle_title(); void memo_time_format(char *buf, int len, time_t time); time_t memo_get_binary_release_date(); +mouse_behaviour_t mouse_event_identify(int startx, int starty, int endx, int endy); +void evas_object_flick_callback_add(Evas_Object *obj, Evas_Smart_Cb on_flick, void *data); void memo_com_dummy_cb(void *data, const char *msg, void *event); void memo_create_yes_no_popup(Evas_Object *win, const char *msg, Evas_Smart_Cb on_yes, Evas_Smart_Cb on_no, void *data); void memo_tool_btn_focus_set(Evas_Object *eo, Eina_Bool status); -void *memo_load_font_size_selector(Evas_Object *parent, bundle *bd, Memo_Component_Callback cb, void *data); +void *memo_load_font_size_selector(Evas_Object *parent, service_h service, Memo_Component_Callback cb, void *data); void memo_del_font_size_selector(void *h_fss); -void *memo_load_color_selector(Evas_Object *parent, bundle *bd, Memo_Component_Callback cb, void *data); +void *memo_load_color_selector(Evas_Object *parent, service_h service, Memo_Component_Callback cb, void *data); void memo_del_color_selector(void *h_cs); -void *memo_load_pencil_size_selector(Evas_Object *parent, bundle *bd, Memo_Component_Callback cb, void *data); +void *memo_load_pencil_size_selector(Evas_Object *parent, service_h service, Memo_Component_Callback cb, void *data); void memo_del_pencil_size_selector(void *h_pss); -Eina_Bool memo_black_theme_check(); void memo_navigator_pop(Evas_Object *navi); Elm_Object_Item *memo_naviframe_item_push(Evas_Object *obj, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style); diff --git a/include/memo-efl.h b/include/memo-efl.h index 227cf6e..13d1ba1 100644 --- a/include/memo-efl.h +++ b/include/memo-efl.h @@ -1,25 +1,27 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ - +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.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 __memo_efl_H__ #define __memo_efl_H__ #include #include #include +#include #include #include @@ -38,13 +40,16 @@ typedef struct ug_data { Evas_Object *base; - struct ui_gadget *ug; + ui_gadget_h ug; char buf[MEMO_BUFFER_SIZE]; /* for temporarily usage only */ void *h_ug; Elm_Theme *th; /* customized theme for UG */ }ug_data_t; -void *memo_load_select_view(ug_data_t *ugd, bundle *data); -void *memo_load_detail_view(ug_data_t *ugd, bundle *data); +Eina_Bool edit_view_pre_condition_check(service_h service); +void *memo_load_edit_view(ug_data_t *ugd, service_h service); +void memo_del_edit_view(void *h_ev); +void *memo_load_select_view(ug_data_t *ugd, service_h service); +void *memo_load_detail_view(ug_data_t *ugd, service_h service); #endif /* __memo_efl_H__ */ diff --git a/include/memo-genlist.h b/include/memo-genlist.h index 44ce099..ec210d9 100644 --- a/include/memo-genlist.h +++ b/include/memo-genlist.h @@ -1,18 +1,20 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.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 __MEMO_GENLIST_H__ #define __MEMO_GENLIST_H__ diff --git a/include/memo_autolink.h b/include/memo_autolink.h new file mode 100644 index 0000000..1664972 --- /dev/null +++ b/include/memo_autolink.h @@ -0,0 +1,44 @@ +/* +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.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 __MEMO_AUTOLINK_H__ +#define __MEMO_AUTOLINK_H__ + +enum anchor_t { + NOT_ANCHOR = 0, + ANCHOR_PHONE, + ANCHOR_EMAIL, + ANCHOR_URL, +}; + +struct anchor_popup_item_t { + char *label; + void (*response) (void *data, Evas_Object *obj, void *event_info); + const char *domain; /* for i18n */ +}; + +typedef struct autolink_data_t { + Evas_Object *win_main; + Evas_Object *popup; + enum anchor_t type; + char *info; +} autolink_data; + +GString *autolink_add_anchor(const char *content); +void autolink_anchor_clicked_cb(void *data, Evas_Object *obj, void *event_info); + +#endif /* __MEMO_AUTOLINK_H__ */ diff --git a/include/memo_doodle_editor.h b/include/memo_doodle_editor.h new file mode 100644 index 0000000..9244490 --- /dev/null +++ b/include/memo_doodle_editor.h @@ -0,0 +1,28 @@ +/* +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.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 __MEMO_DOODLE_EDITOR_H__ +#define __MEMO_DOODLE_EDITOR_H__ + +void memo_doodle_editor_time_format_update(void *h_de); +void memo_doodle_editor_cancel(void *h_de); +void memo_doodle_editor_save(void *h_de); +void *memo_load_doodle_editor(Evas_Object *win, Evas_Object *parent, service_h service, Memo_Component_Callback cb, void *data); +void memo_destroy_doodle_editor(void *h_de); + +#endif /* __MEMO_DOODLE_EDITOR_H__ */ diff --git a/include/memo_string.h b/include/memo_string.h index 89e4520..87e65b9 100644 --- a/include/memo_string.h +++ b/include/memo_string.h @@ -1,18 +1,20 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.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 __MEMO_STRING_H__ #define __MEMO_STRING_H__ @@ -59,6 +61,6 @@ #define MEMO_I18N_EDIT_DRAWING _("Edit drawing") /* Edit drawing */ #define MEMO_I18N_NEW_DRAWING _("New drawing") /* New drawing */ #define MEMO_I18N_NEW_NOTE _("New note") /* New note */ -#define MEMO_I18N_WELCOME_TO_TIZEN_MEMO _("Welcome to Tizen Memo") /* Welcome to Tizen Memo */ +#define MEMO_I18N_WELCOME_TO_TIZEN_MEMO _("Welcome to Tizen Memo") /* Welcome to Tizen Memo */ #endif /* __MEMO_STRING_H__ */ diff --git a/include/memo_text_editor.h b/include/memo_text_editor.h index 7cd4cd8..d7eb23f 100644 --- a/include/memo_text_editor.h +++ b/include/memo_text_editor.h @@ -1,18 +1,20 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.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 __MEMO_TEXT_EDITOR_H__ #define __MEMO_TEXT_EDITOR_H__ @@ -20,7 +22,7 @@ void memo_text_editor_time_format_update(void *h_de); void memo_text_editor_cancel(void *h_te); void memo_text_editor_save(void *h_te); -void *memo_load_text_editor(Evas_Object *win, Evas_Object *parent, bundle *bd, Memo_Component_Callback cb, void *data); +void *memo_load_text_editor(Evas_Object *win, Evas_Object *parent, service_h service, Memo_Component_Callback cb, void *data); void memo_destroy_text_editor(void *h_te); #endif /* __MEMO_TEXT_EDITOR_H__ */ diff --git a/include/memo_ug.h b/include/memo_ug.h index b072aad..f0359ff 100644 --- a/include/memo_ug.h +++ b/include/memo_ug.h @@ -1,25 +1,27 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ - +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.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 __MEMO_SG_H__ #define __MEMO_SG_H__ #include //#include #include +#include #include #include #include @@ -37,7 +39,7 @@ #define AUL_NAME_VEDIO_CALL PACKAGE_PREFIX".vtmain" /* UG Function Declaration*/ -void ug_launch_common(bundle *bd, char *ug_name); +void ug_launch_common(service_h service, char *ug_name); void ug_launch_common_var(char *ug_name, ...); #endif /* __MEMO_SG_H__ */ diff --git a/memo.edc b/memo.edc index 6d782da..d3c7a36 100644 --- a/memo.edc +++ b/memo.edc @@ -1,18 +1,20 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.org/license +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +*/ #include @@ -20,6 +22,9 @@ collections { #include #include #include + #include + #include + #include #include #include } diff --git a/packaging/sg-memo-efl.spec b/packaging/ug-memo-efl.spec similarity index 60% rename from packaging/sg-memo-efl.spec rename to packaging/ug-memo-efl.spec index 974f21f..eeab794 100644 --- a/packaging/sg-memo-efl.spec +++ b/packaging/ug-memo-efl.spec @@ -1,25 +1,26 @@ -Name: sg-memo-efl +#sbs-git:slp/apps/u/ug-memo-efl ug-memo-efl 0.1.1 f3ff27176aa784c4e09fa856638f75d8d4dac14d +Name: ug-memo-efl Summary: Memo Public Shared-Gadget (EFL) -Version: 0.1.0 -Release: 1 +Version: 0.1.1 +Release: 38 Group: misc -License: Flora Software License -Source0: sg-memo-efl-0.1.0.tar.gz +License: TO_BE_FILL +Source0: %{name}-%{version}.tar.gz BuildRequires: pkgconfig(appcore-efl) BuildRequires: pkgconfig(elementary) -BuildRequires: pkgconfig(ui-gadget) BuildRequires: pkgconfig(ecore-input) BuildRequires: pkgconfig(evas) BuildRequires: pkgconfig(memo) BuildRequires: pkgconfig(iniparser) BuildRequires: pkgconfig(dlog) +BuildRequires: pkgconfig(appsvc) BuildRequires: pkgconfig(bundle) BuildRequires: pkgconfig(icu-i18n) +BuildRequires: pkgconfig(ui-gadget-1) BuildRequires: libug-contacts-devel BuildRequires: cmake -BuildRequires: gettext-devel -BuildRequires: edje-bin -BuildRequires: embryo-bin +BuildRequires: gettext-tools +BuildRequires: edje-tools %description Memo Public Shared-Gadget (EFL). @@ -35,9 +36,17 @@ make %{?jobs:-j%jobs} %install rm -rf %{buildroot} %make_install - + + +%remove_docs + +%post +mkdir -p /opt/ug/bin/ +ln -sf /usr/bin/ug-client /opt/ug/bin/ug-memo-efl + %files %defattr(-,root,root,-) /opt/ug/lib/* /opt/ug/res/* +/opt/share/applications/*.desktop diff --git a/scripts/copyright b/scripts/copyright new file mode 100644 index 0000000..7283a25 --- /dev/null +++ b/scripts/copyright @@ -0,0 +1,17 @@ +/* +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.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/scripts/str.in b/scripts/str.in index c142a0b..22e63b1 100644 --- a/scripts/str.in +++ b/scripts/str.in @@ -32,7 +32,7 @@ Share Text Video call Voice call -Welcome to Tizen Memo +Welcome to Samsung Memo Yes 1 memo selected %d memos selected diff --git a/scripts/string.sh b/scripts/string.sh index 4e845d6..a7804cf 100755 --- a/scripts/string.sh +++ b/scripts/string.sh @@ -1,5 +1,5 @@ SYS_MO="$HOME/sbs/target-armel/usr/share/locale/en/LC_MESSAGES/sys_string.mo" -APP_MO="$HOME/sbs/target-armel/opt/apps/org.tizen.memo/res/locale/en/LC_MESSAGES/memo.mo" +APP_MO="$HOME/sbs/target-armel/opt/apps/com.samsung.memo/res/locale/en/LC_MESSAGES/memo.mo" TEMP_STR="./temp" IN="str.in" APP_NAME="memo" diff --git a/src/edit.c b/src/edit.c new file mode 100644 index 0000000..feb4d5e --- /dev/null +++ b/src/edit.c @@ -0,0 +1,199 @@ +/* +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.org/license +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +typedef struct __edit_view_t { + ug_data_t *ugd; + Evas_Object *navigator; + Elm_Object_Item *navi_it; + Evas_Object *ctrl_bar; + Evas_Object *body_main; /* content */ + Evas_Object *l_btn; + Evas_Object *r_btn; + Eina_Bool drawing; /* drawing or text mode */ + + /* add more variables here */ + void *h_ed; +} edit_view_t; + +static void _text_editor_callback(void *data, const char *msg, void *event); +static void _doodle_editor_callback(void *data, const char *msg, void *event); +extern service_h text_service; + +static void _on_left_btn_clicked(void *data, Evas_Object *obj, void *event_info) +{ + edit_view_t *ev = (edit_view_t *)data; + if (ev->drawing) { + memo_doodle_editor_cancel(ev->h_ed); + } else { + memo_text_editor_cancel(ev->h_ed); + } +} + +static void _on_right_btn_clicked(void *data, Evas_Object *obj, void *event_info) +{ + edit_view_t *ev = (edit_view_t *)data; + if (ev->drawing) { + memo_doodle_editor_save(ev->h_ed); + } else { + memo_text_editor_save(ev->h_ed); + } +} +static void _text_editor_callback(void *data, const char *msg, void *event) +{ + edit_view_t *ev = (edit_view_t *)data; + if (strcmp(msg, "layout") == 0) { + elm_object_part_content_set(ev->body_main, "elm.swallow.content", (Evas_Object *)event); + } else if (strcmp(msg, "title") == 0) { + elm_object_item_text_set(ev->navi_it, (const char *)event); + } else if (strcmp(msg, "savable") == 0) { + elm_object_disabled_set(ev->r_btn, (int)event==0? EINA_TRUE:EINA_FALSE); + } else if (strcmp(msg, "save") == 0) { + ug_send_result(ev->ugd->ug,text_service); + service_destroy(text_service); + ug_destroy_me(ev->ugd->ug); + } else if (strcmp(msg, "cancel") == 0) { + ug_destroy_me(ev->ugd->ug); + } else if (strcmp(msg, "drawing") == 0) { + elm_object_part_content_unset(ev->body_main, "elm.swallow.content"); + memo_destroy_text_editor(ev->h_ed); + ev->h_ed = memo_load_doodle_editor(ug_get_window(), ev->body_main, NULL, _doodle_editor_callback, ev); + ev->drawing = EINA_TRUE; + } +} + +static void _doodle_editor_callback(void *data, const char *msg, void *event) +{ + edit_view_t *ev = (edit_view_t *)data; + if (strcmp(msg, "layout") == 0) { + elm_object_part_content_set(ev->body_main, "elm.swallow.content", (Evas_Object *)event); + } else if (strcmp(msg, "title") == 0) { + elm_object_item_text_set(ev->navi_it, (const char *)event); + } else if (strcmp(msg, "savable") == 0) { + elm_object_disabled_set(ev->r_btn, (int)event==0? EINA_TRUE:EINA_FALSE); + } else if (strcmp(msg, "save") == 0) { + ug_destroy_me(ev->ugd->ug); + } else if (strcmp(msg, "cancel") == 0) { + ug_destroy_me(ev->ugd->ug); + } else if (strcmp(msg, "text") == 0) { + elm_object_part_content_unset(ev->body_main, "elm.swallow.content"); + memo_destroy_doodle_editor(ev->h_ed); + ev->h_ed = memo_load_text_editor(ug_get_window(), ev->body_main, NULL, _text_editor_callback, ev); + ev->drawing = EINA_FALSE; + } +} + +static void _create_edit_layout(edit_view_t *ev, service_h data) +{ + ug_data_t *ugd = ev->ugd; + + /* add navigationbar */ + ev->navigator = elm_naviframe_add(ugd->base); + elm_object_part_content_set(ugd->base, "elm.swallow.content", ev->navigator); + + /* custom body main here */ + ev->body_main = elm_layout_create(ev->navigator, EDJ_FILE, "empty_layout"); + /* compose */ + elm_naviframe_prev_btn_auto_pushed_set(ev->navigator, EINA_FALSE); + Elm_Object_Item *navi_it = elm_naviframe_item_push(ev->navigator, MEMO_I18N_MEMO, NULL, NULL, ev->body_main, NULL); + ev->navi_it = navi_it; + /* buttons */ + ev->l_btn = elm_navigator_btn_create(ev->navigator, MEMO_I18N_CANCEL, + ICONDIR "/01_header_icon_cancel.png", "navigationbar_control/left", + _on_left_btn_clicked, ev); + elm_object_item_part_content_set(navi_it, "title_left_btn", ev->l_btn); + ev->r_btn = elm_navigator_btn_create(ev->navigator, MEMO_I18N_DONE, + ICONDIR "/01_header_icon_done.png", "navigationbar_control/right", + _on_right_btn_clicked, ev); + elm_object_item_part_content_set(navi_it, "title_right_btn", ev->r_btn); + + /* load editor */ + service_h service = NULL; + service_create(&service); + + service_add_extra_data(service, "toggle", "disable"); + if (service_key_check(data, "type", "draw")) { + ev->h_ed = memo_load_doodle_editor(ug_get_window(), ev->body_main, service, _doodle_editor_callback, ev); + ev->drawing = EINA_TRUE; + } else { + char *str = NULL; + service_get_extra_data(data, "text", &str); + if (str != NULL) { /* set init string */ + service_add_extra_data(service, "init_str", str); + SFREE(str); + } + ev->h_ed = memo_load_text_editor(ug_get_window(), ev->body_main, service, _text_editor_callback, ev); + ev->drawing = EINA_FALSE; + } + service_destroy(service); +} + +Eina_Bool edit_view_pre_condition_check(service_h service) +{ + char *str = NULL; + service_get_extra_data(service, "type", &str); + if (str != NULL) { + if (!strcmp(str, "edit")) { + SFREE(str); + return EINA_TRUE; + } else if (!strcmp(str, "draw")) { + SFREE(str); + return EINA_TRUE; + } + SFREE(str); + } + return EINA_FALSE; +} + +void *memo_load_edit_view(ug_data_t *ugd, service_h service) +{ + edit_view_t *ev = SMALLOC(edit_view_t); + RETVIF(ev == NULL, NULL); + ev->ugd = ugd; + + _create_edit_layout(ev, service); + return (void *)ev; +} + +void memo_del_edit_view(void *h_ev) +{ + edit_view_t *ev = (edit_view_t *) h_ev; + elm_object_part_content_unset(ev->body_main, "elm.swallow.content"); + if (ev->drawing) { + memo_destroy_doodle_editor(ev->h_ed); + } else { + memo_destroy_text_editor(ev->h_ed); + } + evas_object_del(ev->navigator); + SFREE(ev); +} + diff --git a/src/memo-assist.c b/src/memo-assist.c index 957653b..00d3755 100644 --- a/src/memo-assist.c +++ b/src/memo-assist.c @@ -1,18 +1,20 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.org/license +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +*/ #include #include @@ -150,11 +152,441 @@ time_t memo_get_binary_release_date() return timelocal(&time); } +/** + * mouse_event_identify + * + * @brief + * + * @param [in] startx + * + * @param [in] starty + * + * @param [in] endx + * + * @param [in] endy + * + * @return + * + * @exception None + * + * @remark None + * + * @see + * + */ +mouse_behaviour_t mouse_event_identify(int startx, int starty, int endx, int endy) +{ + int gapx = 0; + int gapy = 0; + + if ((startx == MOUSE_POSITION_INVALID) + || (starty == MOUSE_POSITION_INVALID) + || (endx == MOUSE_POSITION_INVALID) + || (endy == MOUSE_POSITION_INVALID)) { + return MOUSE_EVENT_INVALID; + } + + gapx = endx - startx; + gapy = endy - starty; + if ((abs(gapx) <= 10) && (abs(gapy) <= 10)) { /* click */ + return MOUSE_EVENT_CLICK; + } else if (abs(gapx) > abs(gapy)) { /* horizonal drag */ + return gapx > 0 ? MOUSE_EVENT_DRAG_RIGHT : MOUSE_EVENT_DRAG_LEFT; + } else { /* vertical drag */ + return gapy > 0 ? MOUSE_EVENT_DRAG_DOWN : MOUSE_EVENT_DRAG_UP; + } +} + +static void _evas_object_on_mouse_down(void *data, Evas *e, Evas_Object *evas_obj, void *event_info) +{ + Evas_Event_Mouse_Down *ev = (Evas_Event_Mouse_Down *)event_info; + evas_object_data_set(evas_obj, "startx", (const void *)ev->output.x); + evas_object_data_set(evas_obj, "starty", (const void *)ev->output.y); +} + +static void _evas_object_on_mouse_up(void *data, Evas *e, Evas_Object *evas_obj, void *event_info) +{ + Evas_Event_Mouse_Down *ev = (Evas_Event_Mouse_Down *)event_info; + int startx = (int)evas_object_data_get(evas_obj, "startx"); + int starty = (int)evas_object_data_get(evas_obj, "starty"); + Evas_Smart_Cb on_flick = (Evas_Smart_Cb)evas_object_data_get(evas_obj, "on_flick"); + mouse_behaviour_t mbt = mouse_event_identify(startx, starty, ev->output.x, ev->output.y); + evas_object_data_set(evas_obj, "startx", (const void *)MOUSE_POSITION_INVALID); + evas_object_data_set(evas_obj, "starty", (const void *)MOUSE_POSITION_INVALID); + if (on_flick != NULL) { + on_flick(data, evas_obj, (void *)mbt); + } +} + +void evas_object_flick_callback_add(Evas_Object *obj, Evas_Smart_Cb on_flick, void *data) +{ + evas_object_data_set(obj, "startx", (const void *)MOUSE_POSITION_INVALID); + evas_object_data_set(obj, "starty", (const void *)MOUSE_POSITION_INVALID); + evas_object_data_set(obj, "on_flick", (const void *)on_flick); + evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_DOWN, _evas_object_on_mouse_down, data); + evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_UP, _evas_object_on_mouse_up, data); +} + void memo_com_dummy_cb(void *data, const char *msg, void *event) { LOGD("msg : %s\n", msg); } +typedef struct __pop_data_t { + Evas_Smart_Cb on_yes; + Evas_Smart_Cb on_no; + void *user_data; + Evas_Object *pop; +} pop_data_t; + +static void _on_yes_cb(void *data, Evas_Object *obj, void *event_info) +{ + pop_data_t *pData = (pop_data_t *)data; + if (pData->on_yes != NULL) { + pData->on_yes(pData->user_data, obj, event_info); + } + evas_object_del(pData->pop); + SFREE(pData); +} + +static void _on_no_cb(void *data, Evas_Object *obj, void *event_info) +{ + pop_data_t *pData = (pop_data_t *)data; + if (pData->on_no != NULL) { + pData->on_no(pData->user_data, obj, event_info); + } + evas_object_del(pData->pop); + SFREE(pData); +} + +/** + * memo_create_yes_no_popup + * + * @brief + * + * @param [in] win + * + * @param [in] msg + * + * @param [in] on_yes + * + * @param [in] on_no + * + * @param [in] data + * + * @return + * + * @exception None + * + * @remark None + * + * @see + * + */ +void memo_create_yes_no_popup(Evas_Object *win, const char *msg, Evas_Smart_Cb on_yes, Evas_Smart_Cb on_no, void *data) +{ + pop_data_t *pd = SMALLOC(pop_data_t); + RETIF(pd == NULL); + + pd->on_yes = on_yes; + pd->on_no = on_no; + pd->user_data = data; + Evas_Object *popup = elm_popup_add(win); + pd->pop = popup; + evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_text_set(popup, msg); + Evas_Object *btn1 = elm_button_add(popup); + elm_object_text_set(btn1, MEMO_I18N_YES); + elm_object_part_content_set(popup, "button1", btn1); + evas_object_smart_callback_add(btn1, "clicked", _on_yes_cb, pd); + Evas_Object *btn2 = elm_button_add(popup); + elm_object_text_set(btn2, MEMO_I18N_NO); + elm_object_part_content_set(popup, "button2", btn2); + evas_object_smart_callback_add(btn2, "clicked", _on_no_cb, pd); + evas_object_show(popup); +} + +void memo_tool_btn_focus_set(Evas_Object *eo, Eina_Bool status) +{ + edje_object_signal_emit(elm_layout_edje_get(eo), (status ? "focus" : "normal"), "elm"); +} + +static void _set_bg(Evas_Object *obj, service_h service) +{ + unsigned char *color = NULL; + int bg_color = 0xFFFFFFFF; /* ARGB */ + char *s = NULL; + service_get_extra_data(service, "bg_color" , &s); + if (s != NULL) { + bg_color = atoi(s); + SFREE(s); + } + color = (unsigned char *)&bg_color; + evas_object_color_set(obj, color[2], color[1], color[0], color[3]); +} + +typedef struct __font_size_selector_t { + Evas_Object *parent; + Memo_Component_Callback cb; + void *data; + /* content */ + Evas_Object *body_main; + Evas_Object *slider; + Evas_Object *label; + Evas_Object *event_rect; /* for sweep */ + /* other */ + int min; + int max; + int current; +}font_size_selector_t; + +static void _on_font_size_change_cb(void *data, Evas_Object *obj, void *event_info) +{ + font_size_selector_t *fss = (font_size_selector_t *)data; + fss->current = elm_slider_value_get(fss->slider); + char buf[MEMO_BUFFER_SIZE]; + snprintf(buf, MEMO_BUFFER_SIZE, "Abc", fss->current); + elm_object_text_set(fss->label, buf); + fss->cb(fss->data, "change", (void *)fss->current); +} + +static void _fss_on_flick(void *data, Evas_Object *evas_obj, void *event_info) +{ + font_size_selector_t *fss = (font_size_selector_t *)data; + if ((mouse_behaviour_t)event_info == MOUSE_EVENT_DRAG_DOWN) { + fss->cb(fss->data, "flick,down", (void *)fss->current); + } +} + +void *memo_load_font_size_selector(Evas_Object *parent, service_h service, Memo_Component_Callback cb, void *data) +{ + font_size_selector_t *fss = SMALLOC(font_size_selector_t); + RETVIF(fss==NULL, NULL); + service_dump(service); + fss->parent = parent; + fss->cb = (cb==NULL ? memo_com_dummy_cb : cb); /* make sure cb is not null, no need to check legitimacy of cb when call */ + fss->data = data; + + /* init */ + fss->min = 20; + fss->max = 60; + fss->current = 30; + char *s = NULL; + service_get_extra_data(service, "current", &s); + if (s != NULL) { + fss->current = atoi(s); + SFREE(s); + } + + fss->body_main = elm_layout_create(fss->parent, EDJ_FILE, "font_size_selector"); + fss->cb(fss->data, "layout", fss->body_main); + + /* background */ + Evas_Object *bg = evas_object_rectangle_add(evas_object_evas_get(parent)); + _set_bg(bg, service); + elm_object_part_content_set(fss->body_main, "bg.color", bg); + /* slider */ + fss->slider = elm_slider_add(fss->body_main); + elm_object_style_set(fss->slider, "expanded_indicator_button"); + elm_slider_indicator_show_set(fss->slider, EINA_TRUE); + elm_slider_min_max_set(fss->slider, fss->min, fss->max); + elm_slider_indicator_format_set(fss->slider, "%1.0f"); + elm_slider_value_set(fss->slider, fss->current); + evas_object_smart_callback_add(fss->slider, "changed", _on_font_size_change_cb, fss); + elm_object_part_content_set(fss->body_main, "elm.swallow.selector", fss->slider); + /* preview text */ + fss->label = elm_label_add(fss->body_main); + char buf[MEMO_BUFFER_SIZE]; + snprintf(buf, MEMO_BUFFER_SIZE, "Abc", fss->current); + elm_object_text_set(fss->label, buf); + elm_object_part_content_set(fss->body_main, "elm.swallow.label", fss->label); + /* for flick event */ + fss->event_rect = (Evas_Object *)edje_object_part_object_get(elm_layout_edje_get(fss->body_main), "event"); + evas_object_flick_callback_add(fss->event_rect, _fss_on_flick, fss); + + return (void *)fss; +} + +void memo_del_font_size_selector(void *h_fss) +{ + font_size_selector_t *fss = (font_size_selector_t *)h_fss; + evas_object_del(fss->body_main); + SFREE(fss); +} + +typedef struct __color_selector_t { + Evas_Object *parent; + Memo_Component_Callback cb; + void *data; + /* content */ + Evas_Object *body_main; + Evas_Object *selector; + Evas_Object *rect; /* color rect */ + Evas_Object *event_rect; /* for sweep */ + /* other */ + int color; /* ARGB */ +}color_selector_t; + +static void _on_color_change_cb(void *data, Evas_Object *obj, void *event_info) +{ + int r, g, b, a; + color_selector_t *cs = (color_selector_t *)data; + elm_colorselector_color_get(cs->selector, &r, &g, &b, &a); + evas_object_color_set(cs->rect, r, g, b, a); + int color = ARGB_JOIN(a, r, g, b); + if (cs->color != color) { + cs->color = color; + cs->cb(cs->data, "change", (void *)cs->color); + } +} + +static void _cs_on_flick(void *data, Evas_Object *evas_obj, void *event_info) +{ + color_selector_t *cs = (color_selector_t *)data; + if ((mouse_behaviour_t)event_info == MOUSE_EVENT_DRAG_DOWN) { + cs->cb(cs->data, "flick,down", (void *)cs->color); + } +} + +void *memo_load_color_selector(Evas_Object *parent, service_h service, Memo_Component_Callback cb, void *data) +{ + color_selector_t *cs = SMALLOC(color_selector_t); + RETVIF(cs==NULL, NULL); + service_dump(service); + cs->parent = parent; + cs->cb = (cb==NULL ? memo_com_dummy_cb : cb); /* make sure cb is not null, no need to check legitimacy of cb when call */ + cs->data = data; + + /* init */ + cs->color = 0xff000000; + char *s = NULL; + service_get_extra_data(service, "color" , &s); + if (s != NULL) { + cs->color = atoi(s); + SFREE(s); + } + cs->body_main = elm_layout_create(cs->parent, EDJ_FILE, "color_selector"); + cs->cb(cs->data, "layout", cs->body_main); + + /* background */ + service_get_extra_data(service, "bg_color", &s); + if (s != NULL) { + edje_object_signal_emit(elm_layout_edje_get(cs->body_main), "white", "elm"); + SFREE(s); + } else { + edje_object_signal_emit(elm_layout_edje_get(cs->body_main), "black", "elm"); + } + /* selector */ + cs->selector = elm_colorselector_add(cs->body_main); + elm_colorselector_mode_set(cs->selector, ELM_COLORSELECTOR_COMPONENTS); + elm_object_part_content_set(cs->body_main, "elm.swallow.selector", cs->selector); + unsigned char *color = (unsigned char *)&cs->color; + elm_colorselector_color_set(cs->selector, color[2], color[1], color[0], color[3]); + evas_object_smart_callback_add(cs->selector, "changed", _on_color_change_cb, cs); + /* preview color rect */ + cs->rect = evas_object_rectangle_add(evas_object_evas_get(parent)); + evas_object_color_set(cs->rect, color[2], color[1], color[0], color[3]); + elm_object_part_content_set(cs->body_main, "elm.swallow.color", cs->rect); + /* for flick event */ + cs->event_rect = (Evas_Object *)edje_object_part_object_get(elm_layout_edje_get(cs->body_main), "event"); + evas_object_flick_callback_add(cs->event_rect, _cs_on_flick, cs); + + return (void *)cs; +} + +void memo_del_color_selector(void *h_cs) +{ + color_selector_t *cs = (color_selector_t *)h_cs; + evas_object_del(cs->body_main); + SFREE(cs); +} + +typedef struct __pencil_size_selector_t { + Evas_Object *parent; + Memo_Component_Callback cb; + void *data; + /* content */ + Evas_Object *body_main; + Evas_Object *slider; + Evas_Object *rect; /* previw rect */ + Evas_Object *event_rect; /* for sweep */ + /* other */ + int min; + int max; + int current; +}pencil_size_selector_t; + +static void _on_pencil_size_change_cb(void *data, Evas_Object *obj, void *event_info) +{ + pencil_size_selector_t *pss = (pencil_size_selector_t *)data; + pss->current = elm_slider_value_get(pss->slider); + evas_object_size_hint_min_set(pss->rect, 0, pss->current); + pss->cb(pss->data, "change", (void *)pss->current); +} + +static void _pss_on_flick(void *data, Evas_Object *evas_obj, void *event_info) +{ + pencil_size_selector_t *pss = (pencil_size_selector_t *)data; + if ((mouse_behaviour_t)event_info == MOUSE_EVENT_DRAG_DOWN) { + pss->cb(pss->data, "flick,down", (void *)pss->current); + } +} + +void *memo_load_pencil_size_selector(Evas_Object *parent, service_h service, Memo_Component_Callback cb, void *data) +{ + pencil_size_selector_t *pss = SMALLOC(pencil_size_selector_t); + RETVIF(pss==NULL, NULL); + service_dump(service); + pss->parent = parent; + pss->cb = (cb==NULL ? memo_com_dummy_cb : cb); /* make sure cb is not null, no need to check legitimacy of cb when call */ + pss->data = data; + + /* init */ + pss->min = 1; + pss->max = 8; + pss->current = 8; + char *s = NULL; + service_get_extra_data(service, "current", &s); + if (s != NULL) { + pss->current = atoi(s); + SFREE(s); + } + + pss->body_main = elm_layout_create(pss->parent, EDJ_FILE, "pencil_size_selector"); + pss->cb(pss->data, "layout", pss->body_main); + + /* background */ + Evas_Object *bg = evas_object_rectangle_add(evas_object_evas_get(parent)); + _set_bg(bg, service); + elm_object_part_content_set(pss->body_main, "bg.color", bg); + /* slider */ + pss->slider = elm_slider_add(pss->body_main); + elm_object_style_set(pss->slider, "expanded_indicator_button"); + elm_slider_indicator_show_set(pss->slider, EINA_TRUE); + elm_slider_min_max_set(pss->slider, pss->min, pss->max); + elm_slider_indicator_format_set(pss->slider, "%1.0f"); + elm_slider_value_set(pss->slider, pss->current); + evas_object_smart_callback_add(pss->slider, "changed", _on_pencil_size_change_cb, pss); + elm_object_part_content_set(pss->body_main, "elm.swallow.selector", pss->slider); + /* preview size rect */ + pss->rect = evas_object_rectangle_add(evas_object_evas_get(parent)); + evas_object_color_set(pss->rect, 0, 0, 0, 255); + evas_object_size_hint_min_set(pss->rect, 0, pss->current); + elm_object_part_content_set(pss->body_main, "elm.swallow.pencil", pss->rect); + /* for flick event */ + pss->event_rect = (Evas_Object *)edje_object_part_object_get(elm_layout_edje_get(pss->body_main), "event"); + evas_object_flick_callback_add(pss->event_rect, _pss_on_flick, pss); + + return (void *)pss; +} + +void memo_del_pencil_size_selector(void *h_pss) +{ + pencil_size_selector_t *pss = (pencil_size_selector_t *)h_pss; + evas_object_del(pss->body_main); + SFREE(pss); +} + void memo_navigator_pop(Evas_Object *navi) { Elm_Object_Item *top_it = elm_naviframe_top_item_get(navi); diff --git a/src/memo-efl.c b/src/memo-efl.c index e7ab194..8b690a5 100644 --- a/src/memo-efl.c +++ b/src/memo-efl.c @@ -1,19 +1,20 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ - +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.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 UG_MODULE_API #define UG_MODULE_API __attribute__ ((visibility("default"))) #endif @@ -23,6 +24,8 @@ #include #include #include "memo-efl.h" +#include "gravel.h" + static Evas_Object *create_fullview(Evas_Object *parent, struct ug_data *ugd) { @@ -76,92 +79,95 @@ void memo_ug_hide_cb(void *data, Evas_Object *obj, void *event_info) ug_destroy_me(data); } -static void *on_create(struct ui_gadget *ug, enum ug_mode mode, bundle *data, void *priv) +static void *on_create(ui_gadget_h ug, enum ug_mode mode, service_h service, void *priv) { - Evas_Object *parent; - struct ug_data *ugd; - const char *index = NULL; - - if (!ug || !priv) - return NULL; - - ugd = priv; - ugd->ug = ug; - - bundle_dump(data); - - /* theme extension */ - ugd->th = elm_theme_new(); - elm_theme_ref_set(ugd->th, NULL); - elm_theme_extension_add(ugd->th, EDJ_FILE); - - /* open database */ - memo_init(NULL); - - /* i18n */ - bindtextdomain("memo", "/opt/ug/res/locale"); - - parent = ug_get_parent_layout(ug); - if (!parent) - return NULL; - - index = bundle_get_val(data, "index"); - if (index != NULL) {/* legitimacy check of memo record */ - memo_data_t *md = memo_get_data(atoi(index)); - if (md == NULL) { - if (mode == UG_MODE_FULLVIEW) - ugd->base = create_error_popup_layout(parent, TRUE); - else - ugd->base = create_error_popup_layout(parent, FALSE); - - Evas_Object *popup; - popup = elm_popup_add(ugd->base); - evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_object_text_set(popup, dgettext("sys_string", "IDS_COM_POP_FILE_NOT_FOUND")); - elm_popup_timeout_set(popup, 1.5); - evas_object_show(popup); - ugd->ug = ug; - evas_object_smart_callback_add(popup, "timeout", memo_ug_hide_cb, ugd->ug); - - return ugd->base; - } else { - memo_free_data(md); - } - } - - if (mode == UG_MODE_FULLVIEW) - ugd->base = create_fullview(parent, ugd); - else - ugd->base = create_frameview(parent, ugd); - - if (ugd->base) { - if (bundle_key_check(data, "type", "select")) { - memo_load_select_view(ugd, data); - } else if (index != NULL) { - memo_load_detail_view(ugd, data); - } else { - memo_load_select_view(ugd, data); - } - } - - return ugd->base; + Evas_Object *parent; + struct ug_data *ugd; + char *index = NULL; + + if (!ug || !priv) + return NULL; + + ugd = priv; + ugd->ug = ug; + + service_dump(service); + + /* theme extension */ + ugd->th = elm_theme_new(); + elm_theme_ref_set(ugd->th, NULL); + elm_theme_extension_add(ugd->th, EDJ_FILE); + + /* open database */ + memo_init(NULL); + + /* i18n */ + bindtextdomain("memo", "/opt/ug/res/locale"); + + parent = ug_get_parent_layout(ug); + if (!parent) + return NULL; + + service_get_extra_data(service, "index", &index); + if (index != NULL) {/* legitimacy check of memo record */ + memo_data_t *md = memo_get_data(atoi(index)); + if (md == NULL) { + if (mode == UG_MODE_FULLVIEW) + ugd->base = create_error_popup_layout(parent, TRUE); + else + ugd->base = create_error_popup_layout(parent, FALSE); + + Evas_Object *popup; + popup = elm_popup_add(ugd->base); + evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_text_set(popup, dgettext("sys_string", "IDS_COM_POP_FILE_NOT_FOUND")); + elm_popup_timeout_set(popup, 1.5); + evas_object_show(popup); + ugd->ug = ug; + evas_object_smart_callback_add(popup, "timeout", memo_ug_hide_cb, ugd->ug); + SFREE(index); + return ugd->base; + } else { + memo_free_data(md); + } + } + + if (mode == UG_MODE_FULLVIEW) + ugd->base = create_fullview(parent, ugd); + else + ugd->base = create_frameview(parent, ugd); + + if (ugd->base) { + if (edit_view_pre_condition_check(service)) { + ugd->h_ug = memo_load_edit_view(ugd, service); + } else if (service_key_check(service, "type", "select")) { + memo_load_select_view(ugd, service); + } else if (index != NULL) { + SFREE(index); + memo_load_detail_view(ugd, service); + } else { + memo_load_select_view(ugd, service); + } + } + SFREE(index); + return ugd->base; } -static void on_start(struct ui_gadget *ug, bundle *data, void *priv) +static void on_start(ui_gadget_h ug, service_h service, void *priv) { } -static void on_pause(struct ui_gadget *ug, bundle *data, void *priv) +static void on_pause(ui_gadget_h ug, service_h service, void *priv) { } -static void on_resume(struct ui_gadget *ug, bundle *data, void *priv) +static void on_resume(ui_gadget_h ug, service_h service, void *priv) { } -static void on_destroy(struct ui_gadget *ug, bundle *data, void *priv) +static void on_destroy(ui_gadget_h ug, service_h service, void *priv) { struct ug_data *ugd; @@ -178,15 +184,19 @@ static void on_destroy(struct ui_gadget *ug, bundle *data, void *priv) elm_theme_free(ugd->th); ugd->th = NULL; + if (ugd->h_ug != NULL) { + memo_del_edit_view(ugd->h_ug); + ugd->h_ug = NULL; + } evas_object_del(ugd->base); ugd->base = NULL; } -static void on_message(struct ui_gadget *ug, bundle *msg, bundle *data, void *priv) +static void on_message(ui_gadget_h ug, service_h msg, service_h service, void *priv) { } -static void on_event(struct ui_gadget *ug, enum ug_event event, bundle *data, void *priv) +static void on_event(ui_gadget_h ug, enum ug_event event, service_h service, void *priv) { switch (event) { case UG_EVENT_LOW_MEMORY: @@ -208,7 +218,7 @@ static void on_event(struct ui_gadget *ug, enum ug_event event, bundle *data, vo } } -static void on_key_event(struct ui_gadget *ug, enum ug_key_event event, bundle *data, void *priv) +static void on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h service, void *priv) { if (!ug) return; diff --git a/src/memo-genlist.c b/src/memo-genlist.c index 8c085d3..4226377 100644 --- a/src/memo-genlist.c +++ b/src/memo-genlist.c @@ -1,18 +1,20 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.org/license +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +*/ #include #include diff --git a/src/memo_autolink.c b/src/memo_autolink.c new file mode 100644 index 0000000..3473dec --- /dev/null +++ b/src/memo_autolink.c @@ -0,0 +1,547 @@ +/* +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.org/license +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static void _autolink_popup_response_cb(void *data, Evas_Object *obj, void *event_info); +/* BEGIN CONVERTE BETWEEN enum anchor_t AND string */ + +static char *_autolink_anchor_type_to_string(enum anchor_t type) +{ + switch (type) { + case ANCHOR_EMAIL: + return "email"; + case ANCHOR_PHONE: + return "phone_num"; + case ANCHOR_URL: + return "url"; + default: + return ""; + } +} + +/* END CONVERTE BETWEEN enum anchor_t AND string */ + +/* BEGIN POPUP CALLBACK */ + +static void _autolink_send_email_selected_cb(void *data, Evas_Object *obj, void *event_info) +{ + struct autolink_data_t *ald = (struct autolink_data_t *)data; + service_h service = NULL; + service_create(&service); + service_add_extra_data(service, "RUN_TYPE", "5"); + service_add_extra_data(service, "TO", ald->info); + + ug_launch_common(service, UG_NAME_EMAIL); + _autolink_popup_response_cb(ald, ald->popup, NULL); +} + +static void _autolink_send_message_selected_cb(void *data, Evas_Object *obj, void *event_info) +{ + struct autolink_data_t *ald = (struct autolink_data_t *)data; + + ug_launch_common_var(UG_NAME_MESSAGE, "TO", ald->info, NULL); + _autolink_popup_response_cb(ald, ald->popup, NULL); +} + +static void _autolink_vioce_call_selected_cb(void *data, Evas_Object *obj, void *event_info) +{ + struct autolink_data_t *ald = (struct autolink_data_t *)data; + bundle *bd = bundle_create(); + char telnum[255] = {0,}; + + appsvc_set_operation(bd, APPSVC_OPERATION_CALL); + snprintf(telnum, sizeof(telnum), "tel:%s", ald->info); + appsvc_set_uri(bd, telnum); + appsvc_run_service(bd, 0, NULL, NULL); + + bundle_free(bd); + _autolink_popup_response_cb(ald, ald->popup, NULL); +} + +static void _autolink_video_call_selected_cb(void *data, Evas_Object *obj, void *event_info) +{ + struct autolink_data_t *ald = (struct autolink_data_t *)data; + service_h service = NULL; + service_create(&service); + service_add_extra_data(service, "KEY_CALL_TYPE", "mo"); + service_add_extra_data(service, "KEY_CALL_HANDLE", "1"); + service_add_extra_data(service, "KEY_CALLING_PARTY_NUMBER", ald->info); + service_add_extra_data(service, "KEY_CLI_CAUSE", "-1"); + service_add_extra_data(service, "KEY_FORWARDED", "-1"); + service_set_package(service, AUL_NAME_VEDIO_CALL); + service_send_launch_request(service, NULL, NULL); + + service_destroy(service); + _autolink_popup_response_cb(ald, ald->popup, NULL); +} + +static void _autolink_email_add_to_contact_selected_cb(void *data, Evas_Object *obj, + void *event_info) +{ + struct autolink_data_t *ald = (struct autolink_data_t *)data; + + char buf[10]; + snprintf(buf, sizeof(buf), "%d", CT_UG_REQUEST_ADD_WITH_EMAIL); + + service_h service = NULL; + service_create(&service); + service_add_extra_data(service, CT_UG_BUNDLE_TYPE, buf); + service_add_extra_data(service, CT_UG_BUNDLE_EMAIL, ald->info); + + ug_launch_common(service, UG_CONTACTS_DETAILS); + _autolink_popup_response_cb(ald, ald->popup, NULL); +} + +static void _autolink_phone_add_to_contact_selected_cb(void *data, Evas_Object *obj, + void *event_info) +{ + struct autolink_data_t *ald = (struct autolink_data_t *)data; + + char buf[10]; + snprintf(buf, sizeof(buf), "%d", CT_UG_REQUEST_ADD_WITH_NUM); + + service_h service = NULL; + service_create(&service); + service_add_extra_data(service, CT_UG_BUNDLE_TYPE, buf); + service_add_extra_data(service, CT_UG_BUNDLE_NUM, ald->info); + + ug_launch_common(service, UG_CONTACTS_DETAILS); + _autolink_popup_response_cb(ald, ald->popup, NULL); +} + +/* END POPUP CALLBACK */ + +static struct anchor_popup_item_t g_email_list[] = { + {"IDS_MEMO_OPT_SEND_EMAIL", _autolink_send_email_selected_cb, "memo"}, + {"IDS_MEMO_BODY_ADD_TO_CONTACT", _autolink_email_add_to_contact_selected_cb, "memo"}, +}; + +static struct anchor_popup_item_t g_phone_list[] = { + {"IDS_COM_BODY_VOICE_CALL", _autolink_vioce_call_selected_cb, "sys_string"}, + {"IDS_COM_BODY_SEND_MESSAGE", _autolink_send_message_selected_cb, "sys_string"}, + {"IDS_COM_BODY_VIDEO_CALL", _autolink_video_call_selected_cb, "sys_string"}, + {"IDS_MEMO_BODY_ADD_TO_CONTACT", _autolink_phone_add_to_contact_selected_cb, "memo"}, +}; + +static char *_autolink_gl_label_get(void *data, Evas_Object *obj, const char *part) +{ + char *label = (char *)data; + if (strcmp(part, "elm.text") == 0) { + return strdup(label); + } + return NULL; +} + +static void _autolink_popup_response_cb(void *data, Evas_Object *obj, void *event_info) +{ + PFUNC_ENTER; + + assert(data != NULL); + struct autolink_data_t *ald = (struct autolink_data_t *)data; + if (ald->popup != NULL) { + evas_object_del(ald->popup); + } + + assert(ald->info != NULL); + free(ald->info); + free(ald); + + PFUNC_LEAVE; +} + +void _autolink_popup_show(char *title, struct autolink_data_t *ald) +{ + struct anchor_popup_item_t *list = NULL; + int count = 0; + Evas_Object *box = NULL; + + switch (ald->type) { + case ANCHOR_EMAIL: + list = g_email_list; + count = ARRAY_SIZE(g_email_list); + break; + case ANCHOR_PHONE: + list = g_phone_list; + count = ARRAY_SIZE(g_phone_list); + break; + default: + break; + } + + Evas_Object *popup = elm_popup_add(ald->win_main); + ald->popup = popup; + elm_object_part_text_set(popup, "title,text", title); + Evas_Object *btn1 = elm_button_add(popup); + elm_object_text_set(btn1, MEMO_I18N_CLOSE); + elm_object_part_content_set(popup, "button1", btn1); + evas_object_smart_callback_add(btn1, "clicked", _autolink_popup_response_cb, ald); + evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + static Elm_Genlist_Item_Class itc; + memset(&itc, 0, sizeof(Elm_Genlist_Item_Class)); + itc.item_style = "1text"; + itc.func.text_get = _autolink_gl_label_get; + + Evas_Object *genlist = elm_genlist_add(popup); + evas_object_smart_callback_add(genlist, "selected", NULL, NULL); + evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + + int i = 0; + for (i = 0; i < count; ++i) { + elm_genlist_item_append(genlist, &itc, dgettext(list[i].domain, list[i].label), + NULL, ELM_GENLIST_ITEM_NONE, list[i].response, ald); + } + + evas_object_show(genlist); + box = elm_box_add(popup); + evas_object_size_hint_min_set(box, 0, (count>3 ? 3 : count)*71); + elm_box_pack_end(box, genlist); + evas_object_show(box); + elm_object_content_set(popup, box); + evas_object_show(popup); +} + +void autolink_anchor_clicked_cb(void *data, Evas_Object *obj, void *event_info) +{ + Elm_Entry_Anchor_Info *ei = (Elm_Entry_Anchor_Info *)event_info; + autolink_data *ald = SMALLOC(autolink_data); + RETIF(ald == NULL); + + int info_len = strlen(ei->name) + 1; + ald->info = calloc(1, info_len); + if (ald->info == NULL) { + SFREE(ald); + return; + } + + ald->win_main = (Evas_Object *)data; + /* retrieve anchor info, eg `url|www phone_num|8888 email|abc@k.com` */ + switch (ei->name[0]) { + case 'u': + ald->type = ANCHOR_URL; + break; + case 'p': + ald->type = ANCHOR_PHONE; + break; + case 'e': + ald->type = ANCHOR_EMAIL; + break; + default : + ald->type = NOT_ANCHOR; + break; + } + const char *start = ei->name + strlen(_autolink_anchor_type_to_string(ald->type)) +1; + const char *end = strchr(ei->name, ' '); + strncpy(ald->info, start, end - start); + LOGD("Anchor clicked (%s)\n", ald->info); + + if ((ald->type == ANCHOR_EMAIL) || (ald->type == ANCHOR_PHONE)){ + _autolink_popup_show(ald->info, ald); + return; + } + + if (ald->type == ANCHOR_URL) { + aul_open_content(ald->info); /* launch browser */ + } + SFREE(ald->info); + SFREE(ald); +} + +static Eina_Bool str_is_begin_with(const char *str, const char *prefix) +{ + if (strlen(str) < strlen(prefix)) { + return EINA_FALSE; + } + + int i = 0; + for (i = 0; i < strlen(prefix); ++i) { + if (str[i] != prefix[i]) { + return EINA_FALSE; + } + } + + return EINA_TRUE; +} + +/* TYPE CHECKER BEGIN */ +/* + * [Checker Function Specification] + * These function get target type from beginning of string. + * The only parameter str is the string that want to be checked. + * Let's assume the returned value is r. There are 3 cases: + * r > 0 : From beginning to r of str match the target type. + * r = 0 : Str doesn't have target type, no longer check. + * r < 0 : It doesn't match from beginning, but from -r position maybe matched. + * It will be checked next time. + */ +static int _autolink_url_checker(const char* str) +{ + char *prefix[] = {"http://", "www.", "wap."}; + + int i = 0; + for (i = 0; i < ARRAY_SIZE(prefix); ++i) { + if (str_is_begin_with(str, prefix[i])) { /* Begin with specified prefix */ + int j = 0; + while(str[j] != '\0' && !isspace(str[j])) { + if (str[j] == '<') { /* tag begin */ + break; + } + j++; + } + + if(j == strlen(prefix[i])) { /* only with prefix alone */ + break; + } else { + return j; + } + } + } + + /* not matched, get next position */ +#if 0 /* Need correct */ + int next = 0; + char *p = NULL; + for (i = 0; i < ARRAY_SIZE(prefix); ++i) { + p = strstr(str, prefix[i]); + if (p != NULL) { + if (next == 0) { + next = p - str; + } else if (next > p - str) { + next = p - str; + } + } + } +#endif + + return -1; +} + +static int _autolink_email_checker(const char* str) +{ + char *p = NULL; + p = strchr(str, '@'); + + if (NULL == p) { + return 0; + } else if (p == str) { /* '@' at beginning */ + return -1; + } + + char next = p[1]; + if (next == '@') { /* consecutive '@' */ + return -(p + 2 - str); + } else if (next == '.') { /* "@." */ + return -(p + 2 - str); + } else if (next == '\0') { /* '@' at end of string */ + return -(p + 1 - str); + } else if (isspace(next) || next == '<') { /* '@' at end of word */ + return -(p + 2 - str); + } + + /* check if valid before @ */ + char *q = p; + while (q >= str) { + if (isspace(*q)) { + return -(q + 1 - str); + } + + if (*q == '>' || *q == '/') { /* tag end and other illega character */ + return -(q + 1 - str); + } + + if (*q == '.' && ( q == str || *(q - 1) == '.')) { + return -(q + 1 - str); + } + + q--; + } + + /* get the end position of email */ + q = p + 1; + while (*q != '\0' && !isspace(*q)) { + if (*q == '.' && *(q + 1) == '.') { + break; + } + + if (*q == '<') { /* tag begin */ + break; + } + + q++; + } + return q - str; +} + +static int _autolink_phone_checker(const char *str) +{ + /* search beginning */ + int i = 0; + for (i = 0; str[i] != '\0'; ++i) { + /* digit, '+', '*' and '#' at the beginning of phone is valid. */ + if (isdigit(str[i]) || str[i] == '+' || str[i] == '*' || str[i] == '#') { + break; + } + } + + if (i > 0) { + return -i; + } + + for (i = 1; str[i] != '\0'; ++i) { + if (isdigit(str[i]) || str[i] == '*' || str[i] == '#') { + /* NOP */ + } else if (str[i] == '-') { + if (str[i - 1] == '-' || str[i - 1] == ' ') { /* "--" or " -" */ + i -= 1; + break; + } + } else if (str[i] == ' ') { + if (str[i - 1] == '-') { /* "- " */ + i -= 1; + break; + } else if (str[i - 1] == ' ' && isdigit(str[i + 1])) { /* consecutive ' ' */ + int j = 0; + while (isdigit(str[i + 1 + j])) { ++j; } + if (j > 5) { + while (str[i] == ' ') { i--; } + return i + 1; + } + } + } else { /* other character */ + break; + } + } + + int len = i; + if (len < 3) { + return -len; + } else { + return len; + } +} + +/* TYEP CHECKER END */ + +static void _autolink_box_anchor(GString *text, char *type, char *content) +{ + char *buf = NULL; + if (strcmp(type, "phone_num") == 0) { /* remove '-' and ' ' in phone num. */ + buf = (char *)malloc(strlen(content) + 1); + RETIF(buf == NULL); + int i = 0, j = 0; + while (content[i] != '\0') { + if (content[i] == '-' || content[i] == ' ') { + ++i; + } else { + buf[j] = content[i]; + ++i; + ++j; + } + } + buf[j] = '\0'; + } else { + buf = content; + } + + g_string_append_printf(text, + "%s", + type, buf, content); + + if (buf != content) { + free(buf); + } +} + +GString *autolink_add_anchor(const char *content) +{ + assert(content != NULL); + + const char *p = content; + char *gt = NULL; + GString *text = g_string_new(""); + GString *buf = g_string_new(""); + + struct checker_t { + int (*check)(const char* str); + char *type; + Eina_Bool invoke; + } checkers[] = { + {_autolink_url_checker, "url", EINA_TRUE}, + {_autolink_email_checker, "email", EINA_TRUE}, + {_autolink_phone_checker, "phone_num", EINA_TRUE}, + }; + + while (*p != '\0') { + + if (p[0] == '<') { /* tag begin */ + gt = strchr(p, '>'); /* search tag end */ + assert(gt != NULL); /* assert '<' and '>' are matched */ + g_string_append_len(text, p, gt - p + 1); + p = gt + 1; + } + + int i = 0; + int r = 0; + int next_pos = -1; + for (i = 0; i < ARRAY_SIZE(checkers); ++i) { + if (checkers[i].invoke == EINA_TRUE) { + r = checkers[i].check(p); + if (r == 0) { /* no longer check */ + checkers[i].invoke = EINA_FALSE; + } else if (r > 0) { /* Get */ + g_string_assign(buf, ""); /* reset buffer */ + g_string_append_len(buf, p, r); + _autolink_box_anchor(text, checkers[i].type, buf->str); + next_pos = r; + break; + } else { /* r < 0 */ + if (next_pos <= 0 || next_pos > -r) { + next_pos = -r; + } + } + } + } + + if (next_pos < 0) { + g_string_append(text, p); + break; + } else if ( i == ARRAY_SIZE(checkers)) { + g_string_append_len(text, p, next_pos); + } + + p += next_pos; + } + + g_string_free(buf, TRUE); + printf("\t\t********** %s\n", text->str); + + return text; +} diff --git a/src/memo_doodle_editor.c b/src/memo_doodle_editor.c new file mode 100644 index 0000000..20b950a --- /dev/null +++ b/src/memo_doodle_editor.c @@ -0,0 +1,586 @@ +/* +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.org/license +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +typedef struct __doodle_editor_t { + Evas_Object *win; + Evas_Object *parent; + Memo_Component_Callback cb; + void *data; + memo_data_t *record; + char buf[MEMO_BUFFER_SIZE]; /* for temporarily usage only */ + Eina_Bool savable; + Eina_Bool erase; /* erase mode */ + Eina_Bool comment; /* edit comment mode */ + Eina_Bool doodle_init; + Eina_Bool stroke_down; /* see comment in _on_doodle_move_cb */ + int stroke_size; + int stroke_color; + + /* content */ + Evas_Object *body_main; + Evas_Object *doodle; + Evas_Object *toolbar; + Evas_Object *btn_size; + void *h_ss; + Evas_Object *btn_color; + void *h_cs; + Evas_Object *edit_field; + + /* entry */ + Evas_Object *entry; + Ecore_IMF_Context *imf_context; +} doodle_editor_t; + +static void _stroke_size_selector_del(doodle_editor_t *de); +static void _stroke_color_selector_del(doodle_editor_t *de); + +static void _save_record(doodle_editor_t *de) +{ + memo_begin_trans(); + if (de->record->id != -1) { + memo_mod_data(de->record); + } else { + de->record->content = memo_get_doodle_title(); + memo_add_data(de->record); + } + /* save doodle to file */ + snprintf(de->buf, MEMO_BUFFER_SIZE, DOODLEDIR "/%d.png", (int)de->record->id); + evas_object_image_save(de->doodle, de->buf, NULL, NULL); + memo_end_trans(); +} + +static void _on_save_yes(void *data, Evas_Object *obj, void *event_info) +{ + doodle_editor_t *de = (doodle_editor_t *)data; + _save_record(de); + de->cb(de->data, "save", NULL); +} + +static void _on_save_no(void *data, Evas_Object *obj, void *event_info) +{ + doodle_editor_t *de = (doodle_editor_t *)data; + de->cb(de->data, "cancel", NULL); +} + +static Eina_Bool _launch_yes_no_popup(void *data) +{ + doodle_editor_t *de = (doodle_editor_t *)data; + memo_create_yes_no_popup(de->win, MEMO_I18N_SAVE_MEMO, _on_save_yes, _on_save_no, de); + return EINA_FALSE; +} + +static Eina_Bool _comment_savable(doodle_editor_t *de) +{ + const char *text = elm_entry_entry_get(de->entry); + Eina_Bool savable = EINA_TRUE; + + if (strcmp(text, "") == 0) { + savable = EINA_FALSE; + } else if (de->record->comment != NULL) { /* check if same as init string */ + if (strcmp(de->record->comment, text)==0) { + savable = EINA_FALSE; + } + } + return savable; +} + +static void _stroke_size_selector_callback(void *data, const char *msg, void *event) +{ + doodle_editor_t *de = (doodle_editor_t *)data; + if (strcmp(msg, "layout") == 0) { + elm_object_part_content_set(de->body_main, "elm.swallow.tool", (Evas_Object *)event); + } else if (strcmp(msg, "change") == 0) { + de->stroke_size = (int)event; + } else if (strcmp(msg, "flick,down") == 0) { + _stroke_size_selector_del(de); + edje_object_signal_emit(elm_layout_edje_get(de->body_main), "expand", "elm"); + } +} + +static void _stroke_size_selector_del(doodle_editor_t *de) +{ + if (de->h_ss != NULL) { + elm_object_part_content_unset(de->body_main, "elm.swallow.tool"); + memo_del_pencil_size_selector(de->h_ss); + de->h_ss = NULL; + memo_tool_btn_focus_set(de->btn_size, EINA_FALSE); + } +} + +static void _on_stroke_size_btn_up(void *data, Evas *e, Evas_Object *evas_obj, void *event_info) +{ + doodle_editor_t *de = (doodle_editor_t *)data; + if (de->h_ss != NULL) { /* stroke size selector already open */ + return; + } + if (de->h_cs != NULL) { /* destroy stroke color selector */ + _stroke_color_selector_del(de); + } + if (de->erase) { /* deselect eraser */ + de->erase = EINA_FALSE; + Evas_Object *eo = (Evas_Object *)elm_object_part_content_get(de->toolbar, "elm.swallow.btn3"); + memo_tool_btn_focus_set(eo, de->erase); + } + /* load stroke size selector */ + service_h service = NULL; + service_create(&service); + snprintf(de->buf, MEMO_BUFFER_SIZE, "%d", de->stroke_size); + service_add_extra_data(service, "current", de->buf); + snprintf(de->buf, MEMO_BUFFER_SIZE, "%d", 0xFFFFFFFF); + service_add_extra_data(service, "bg_color", de->buf); + de->h_ss = memo_load_pencil_size_selector(de->body_main, service, _stroke_size_selector_callback, de); + service_destroy(service); + memo_tool_btn_focus_set(de->btn_size, EINA_TRUE); + edje_object_signal_emit(elm_layout_edje_get(de->body_main), "abbrev", "elm"); +} + +void _stroke_color_selector_callback(void *data, const char *msg, void *event) +{ + doodle_editor_t *de = (doodle_editor_t *)data; + if (strcmp(msg, "layout") == 0) { + elm_object_part_content_set(de->body_main, "elm.swallow.tool", (Evas_Object *)event); + } else if (strcmp(msg, "change") == 0) { + de->stroke_color = (int)event; + } else if (strcmp(msg, "flick,down") == 0) { + _stroke_color_selector_del(de); + edje_object_signal_emit(elm_layout_edje_get(de->body_main), "expand", "elm"); + } +} + +static void _stroke_color_selector_del(doodle_editor_t *de) +{ + if (de->h_cs != NULL) { + elm_object_part_content_unset(de->body_main, "elm.swallow.tool"); + memo_del_color_selector(de->h_cs); + memo_tool_btn_focus_set(de->btn_color, EINA_FALSE); + de->h_cs = NULL; + } +} + +static void _on_stroke_color_btn_up(void *data, Evas *e, Evas_Object *evas_obj, void *event_info) +{ + doodle_editor_t *de = (doodle_editor_t *)data; + if (de->h_cs!= NULL) { /* stroke color selector already open */ + return; + } + if (de->h_ss!= NULL) { /* destroy stroke size selector */ + _stroke_size_selector_del(de); + } + if (de->erase) { /* deselect eraser */ + de->erase = EINA_FALSE; + Evas_Object *eo = (Evas_Object *)elm_object_part_content_get(de->toolbar, "elm.swallow.btn3"); + memo_tool_btn_focus_set(eo, de->erase); + } + /* load stroke color selector */ + service_h service = NULL; + service_create(&service); + snprintf(de->buf, MEMO_BUFFER_SIZE, "%d", de->stroke_color); + service_add_extra_data(service, "color", de->buf); + snprintf(de->buf, MEMO_BUFFER_SIZE, "%d", 0xFFFFFFFF); + service_add_extra_data(service, "bg_color", de->buf); + de->h_cs = memo_load_color_selector(de->body_main, service, _stroke_color_selector_callback, de); + service_destroy(service); + memo_tool_btn_focus_set(de->btn_color, EINA_TRUE); + edje_object_signal_emit(elm_layout_edje_get(de->body_main), "abbrev", "elm"); +} + +static void _input_panel_event_callback(void *data, Ecore_IMF_Context *ctx, int value) +{ + doodle_editor_t *de = (doodle_editor_t *)data; + if (value == ECORE_IMF_INPUT_PANEL_STATE_HIDE) { + if (de->comment) { + edje_object_signal_emit(elm_layout_edje_get(de->body_main), "expand", "comment"); + } + } else if (value == ECORE_IMF_INPUT_PANEL_STATE_SHOW) { + edje_object_signal_emit(elm_layout_edje_get(de->body_main), "abbrev", "comment"); + if (!de->comment) { /* first shift to comment mode */ + if (de->record->comment == NULL) { /* remove DUMMY_COMMENT */ + elm_entry_entry_set(de->entry, ""); + } + de->cb(de->data, "savable", (void *)0); + } + de->comment = EINA_TRUE; + de->cb(de->data, "title", de->record->comment == NULL ? MEMO_I18N_ADD_COMMENT : MEMO_I18N_EDIT_COMMENT); + } +} + +static void _on_entry_content_change(void *data, Evas_Object *obj, void *event_info) +{ + doodle_editor_t *de = (doodle_editor_t *)data; + if (elm_object_focus_get(de->edit_field)) { + if (elm_entry_is_empty(obj)) { + elm_object_signal_emit(de->edit_field, "elm,state,eraser,hide", "elm"); + } else { + elm_object_signal_emit(de->edit_field, "elm,state,eraser,show", "elm"); + } + } + RETIF(!de->comment); + Eina_Bool savable = _comment_savable(de); + de->cb(de->data, "savable", (void *)(savable?1:0)); +} + +// Focused callback will show X marked button and hide guidetext +static void _focused_cb(void *data, Evas_Object *obj, void *event_info) +{ + if (!elm_entry_is_empty(obj)) + elm_object_signal_emit(data, "elm,state,eraser,show", "elm"); + elm_object_signal_emit(data, "elm,state,guidetext,hide", "elm"); +} + +// Unfocused callback will show guidetext and hide X marked button +static void _unfocused_cb(void *data, Evas_Object *obj, void *event_info) +{ + if (elm_entry_is_empty(obj)) + elm_object_signal_emit(data, "elm,state,guidetext,show", "elm"); + elm_object_signal_emit(data, "elm,state,eraser,hide", "elm"); +} + +// When X marked button is clicked, empty entry’s contents +static void _eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + elm_entry_entry_set(data, ""); +} + +static void _draw_argb32(int *img, int w, int h, int x, int y, int size, int color) +{ + int cx, cy, cw, ch; + int i, j; + + cx = x; + cy = y; + cw = size; + ch = size; + CLIP_RECT_TO_RECT(cx, cy, cw, ch, 0, 0, w, h); + for (i = 0; i < ch; i++) { + for (j = 0; j < cw; j++) { + memcpy(img + (i + cy) * w + (cx + j), &color, 4); + } + } +} + +static void _on_doodle_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + doodle_editor_t *de = (doodle_editor_t *)data; + if (de->comment) { + return; + } + if (de->h_ss!= NULL) { /* destroy stroke size selector */ + _stroke_size_selector_del(de); + } + if (de->h_cs != NULL) { /* destroy stroke color selector */ + _stroke_color_selector_del(de); + } + edje_object_signal_emit(elm_layout_edje_get(de->body_main), "expand", "elm"); + de->stroke_down = EINA_TRUE; + de->record->has_doodle = 1; + if (!de->erase) { + de->savable = EINA_TRUE; + } else if (de->record->id != -1) { /* edit existing doodle with eraser */ + de->savable = EINA_TRUE; + } + de->cb(de->data, "savable", (void *)(de->savable?1:0)); +} + +static void _on_doodle_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + doodle_editor_t *de = (doodle_editor_t *)data; + Evas_Event_Mouse_Move *event = (Evas_Event_Mouse_Move *)event_info; + int *img_data = NULL; + Evas_Coord x, y, w, h; + int px = 0; + int py = 0; + int i = 0; + int gap_max = 0; + int gap_x = 0; + int gap_y = 0; + int color = 0; + + /* a little mouse move events will be received before mouse down event, + if those mouse move event is not filtered, + a line (from last up point to current move point) will be draw */ + if (!de->stroke_down) { + return; + } + + color = de->erase ? 0xFFFFFFFF : de->stroke_color; + evas_object_geometry_get(de->doodle, &x, &y, &w, &h); + img_data = evas_object_image_data_get(de->doodle, 1); + gap_x = event->cur.output.x - event->prev.output.x; + gap_y = event->cur.output.y - event->prev.output.y; + gap_max = MAX(abs(gap_x), abs(gap_y)); + + for (i = 0; i < gap_max; i++) { + px = event->prev.output.x + i * gap_x / gap_max; + py = event->prev.output.y + i * gap_y / gap_max; + /* mouse position in image */ + px -= x; + py -= y; + _draw_argb32(img_data, w, h, px, py, de->stroke_size, color); + } + evas_object_image_data_update_add(de->doodle, 0, 0, w, h); +} + +static void _on_doodle_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + doodle_editor_t *de = (doodle_editor_t *)data; + de->stroke_down = EINA_FALSE; +} + +/* this function must be execute only once + * in resize callback we will get the actual size of doodle + * we need to transfer origin image data to fit the actual canvas size + */ +static void _on_doodle_resize_cb(void *data, Evas_Object *obj, void *event_info) +{ + doodle_editor_t *de = (doodle_editor_t *)data; + Evas_Coord w, h; + int *img_data = NULL; + + if (de->doodle_init) { /* reenter control */ + return; + } else { + de->doodle_init = EINA_TRUE; + evas_object_geometry_get(de->doodle, NULL, NULL, &w, &h); + evas_object_image_size_set(de->doodle, w, h); + img_data = evas_object_image_data_get(de->doodle, 1); + if (img_data != NULL) { /* set background color as white */ + memset(img_data, 0xFFFFFFFF, sizeof(int)*w*h); + evas_object_image_data_update_add(de->doodle, 0, 0, w, h); + } + } +} + +static void _on_eraser_up(void *data, Evas *e, Evas_Object *evas_obj, void *event_info) +{ + doodle_editor_t *de = (doodle_editor_t *)data; + if (de->h_ss!= NULL) { /* destroy stroke size selector */ + _stroke_size_selector_del(de); + } + if (de->h_cs != NULL) { /* destroy stroke color selector */ + _stroke_color_selector_del(de); + } + de->erase = !(de->erase); + Evas_Object *eo = (Evas_Object *)elm_object_part_content_get(de->toolbar, "elm.swallow.btn3"); + memo_tool_btn_focus_set(eo, de->erase); + edje_object_signal_emit(elm_layout_edje_get(de->body_main), "expand", "elm"); +} + +static void _on_yes(void *data, Evas_Object *obj, void *event_info) +{ + doodle_editor_t *de = (doodle_editor_t *)data; + _save_record(de); + de->cb(de->data, "text", NULL); +} + +static void _on_no(void *data, Evas_Object *obj, void *event_info) +{ + doodle_editor_t *de = (doodle_editor_t *)data; + de->cb(de->data, "text", NULL); +} + +static void _on_text_mode(void *data, Evas_Object *obj, void *event_info) +{ + doodle_editor_t *de = (doodle_editor_t *)data; + if (de->savable) { /* modified, need user confirmation */ + memo_create_yes_no_popup(de->parent, MEMO_I18N_SAVE_MEMO, _on_yes, _on_no, de); + } else { + de->cb(de->data, "text", NULL); + } +} + +static void _create_doodle_editor_layout(doodle_editor_t *de, service_h service) +{ + de->body_main = elm_layout_create(de->parent, EDJ_FILE, "doodle_editor"); + de->cb(de->data, "layout", de->body_main); + /* title */ + de->cb(de->data, "title", de->record->id==-1 ? MEMO_I18N_NEW_DRAWING : MEMO_I18N_EDIT_DRAWING); + /* date */ + memo_time_format(de->buf, MEMO_BUFFER_SIZE, de->record->modi_time); + edje_object_part_text_set(elm_layout_edje_get(de->body_main), "elm.text.date", de->buf); + + /* toolbar */ + de->toolbar = elm_swallowed_layout(de->body_main, "elm.swallow.toolbar", EDJ_FILE, "edit_toolbar"); + de->btn_size = elm_swallowed_layout(de->toolbar, "elm.swallow.btn1", EDJ_DIR"/black/memo.edj", "tl_stroke_size"); + evas_object_event_callback_add(de->btn_size, EVAS_CALLBACK_MOUSE_UP, _on_stroke_size_btn_up, de); + de->btn_color = elm_swallowed_layout(de->toolbar, "elm.swallow.btn2", EDJ_DIR"/black/memo.edj", "tl_stroke_color"); + evas_object_event_callback_add(de->btn_color, EVAS_CALLBACK_MOUSE_UP, _on_stroke_color_btn_up, de); + Evas_Object *eo = elm_swallowed_layout(de->toolbar, "elm.swallow.btn3", EDJ_DIR"/black/memo.edj", "tl_stroke_eraser"); + evas_object_event_callback_add(eo, EVAS_CALLBACK_MOUSE_UP, _on_eraser_up, de); + if (!service_key_check(service, "toggle", "disable")) { + elm_swallowed_button(de->toolbar, "elm.swallow.btn4", MEMO_I18N_TEXT, _on_text_mode, de); + } + + /* doodle */ + Evas *evas = evas_object_evas_get(de->parent); + de->doodle = evas_object_image_filled_add(evas); + evas_object_image_colorspace_set(de->doodle, EVAS_COLORSPACE_ARGB8888); + evas_object_image_alpha_set(de->doodle, 1); + /* doodle data */ + if (de->record->has_doodle == 1) { + snprintf(de->buf, MEMO_BUFFER_SIZE, DOODLEDIR "/%d.png", (int)de->record->id); + evas_object_image_file_set(de->doodle, de->buf, NULL); + } else { + evas_object_render_flush_hook(de->doodle, _on_doodle_resize_cb, de); + } + evas_object_event_callback_add(de->doodle, EVAS_CALLBACK_MOUSE_DOWN, _on_doodle_down_cb, de); + evas_object_event_callback_add(de->doodle, EVAS_CALLBACK_MOUSE_MOVE, _on_doodle_move_cb, de); + evas_object_event_callback_add(de->doodle, EVAS_CALLBACK_MOUSE_UP, _on_doodle_up_cb, de); + evas_object_show(de->doodle); + elm_object_part_content_set(de->body_main, "elm.swallow.doodle", de->doodle); + + /* comment */ + eo = elm_swallowed_layout(de->body_main, "elm.swallow.comment", EDJ_FILE, "doodle_comment"); + //EditField + Evas_Object *layout = elm_layout_add(eo); + elm_layout_theme_set(layout, "layout", "editfield", "default"); + elm_object_part_content_set(eo, "elm.swallow.editfield", layout); + Evas_Object *ef = elm_entry_add(eo); + elm_object_part_content_set(layout, "elm.swallow.content", ef); + de->edit_field = layout; + + elm_object_style_set(ef, "font_color_black"); + elm_entry_single_line_set(ef, EINA_TRUE); + elm_entry_scrollable_set(ef, EINA_TRUE); + evas_object_size_hint_weight_set(ef, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(ef, EVAS_HINT_EXPAND, 0.5); + + de->entry = ef; + elm_entry_cnp_mode_set(de->entry, ELM_CNP_MODE_PLAINTEXT); + de->imf_context = elm_entry_imf_context_get(de->entry); + /* if not hide explicitly, seems hide event of sweep down can not be received */ + ecore_imf_context_input_panel_hide(de->imf_context); + elm_entry_entry_set(de->entry, de->record->comment == NULL ? MEMO_I18N_ADD_COMMENT : de->record->comment); + ecore_imf_context_input_panel_event_callback_add(de->imf_context, ECORE_IMF_INPUT_PANEL_STATE_EVENT, + _input_panel_event_callback, de); + evas_object_smart_callback_add(de->entry, "changed", _on_entry_content_change, de); + evas_object_smart_callback_add(de->entry, "preedit,changed", _on_entry_content_change, de); + evas_object_smart_callback_add(de->entry, "focused", _focused_cb, layout); + evas_object_smart_callback_add(de->entry, "unfocused", _unfocused_cb, layout); + elm_object_signal_callback_add(layout, "elm,eraser,clicked", "elm", _eraser_clicked_cb, de->entry); + + /* savable */ + de->cb(de->data, "savable", (void *)(de->savable?1:0)); +} + +void memo_doodle_editor_time_format_update(void *h_de) +{ + doodle_editor_t *de = (doodle_editor_t *)h_de; + memo_time_format(de->buf, MEMO_BUFFER_SIZE, de->record->modi_time); + edje_object_part_text_set(elm_layout_edje_get(de->body_main), "elm.text.date", de->buf); +} + +void memo_doodle_editor_cancel(void *h_de) +{ + doodle_editor_t *de = (doodle_editor_t *)h_de; + if (de->comment) { + de->comment = EINA_FALSE; + ecore_imf_context_input_panel_hide(de->imf_context); + edje_object_signal_emit(elm_layout_edje_get(de->body_main), "expand", "elm"); + if (de->record->comment == NULL) { + elm_entry_entry_set(de->entry, MEMO_I18N_ADD_COMMENT); + } else { /* recover origin comment */ + elm_entry_entry_set(de->entry, de->record->comment); + } + de->cb(de->data, "title", de->record->id==-1 ? MEMO_I18N_NEW_DRAWING : MEMO_I18N_EDIT_DRAWING); + de->cb(de->data, "savable", (void *)(de->savable?1:0)); + de->cb(de->data, "comment cancel", NULL); + } else { + if (!de->savable) { /* not modified, return directly */ + de->cb(de->data, "cancel", NULL); + } else { + _launch_yes_no_popup(de); + } + } +} + +void memo_doodle_editor_save(void *h_de) +{ + doodle_editor_t *de = (doodle_editor_t *)h_de; + if (de->comment) { + de->comment = EINA_FALSE; + ecore_imf_context_input_panel_hide(de->imf_context); + edje_object_signal_emit(elm_layout_edje_get(de->body_main), "expand", "elm"); + Eina_Bool savable = _comment_savable(de); + if (savable) { + de->record->comment = strdup(elm_entry_entry_get(de->entry)); + if (de->record->id != -1) { /* when edit existing, modification of comment will make record savable */ + de->savable = EINA_TRUE; + } + } + de->cb(de->data, "title", de->record->id==-1 ? MEMO_I18N_NEW_DRAWING : MEMO_I18N_EDIT_DRAWING); + de->cb(de->data, "savable", (void *)(de->savable?1:0)); + elm_object_focus_set(de->edit_field, EINA_FALSE); /* when disable done button, focus may reset to edit field */ + de->cb(de->data, "comment done", NULL); + } else { + _save_record(de); + de->cb(de->data, "save", NULL); + } +} + +void *memo_load_doodle_editor(Evas_Object *win, Evas_Object *parent, service_h service, Memo_Component_Callback cb, void *data) +{ + doodle_editor_t *de = SMALLOC(doodle_editor_t); + RETVIF(de==NULL, NULL); + service_dump(service); + de->win = win; + de->parent = parent; + de->cb = (cb==NULL ? memo_com_dummy_cb : cb); /* make sure cb is not null, no need to check legitimacy of cb when call */ + de->data = data; + + /* init */ + const char *s = NULL; + service_get_extra_data(service, "index", &s); + if (s == NULL) { + de->record = memo_create_data(); + de->record->id = -1; + de->record->modi_time = time((time_t *) 0); + } else { /* load item */ + de->record = memo_get_data(atoi(s)); + SFREE(s); + } + de->stroke_size = 8; + de->stroke_color = 0xff000000; + + _create_doodle_editor_layout(de, service); + return (void *)de; +} + +void memo_destroy_doodle_editor(void *h_de) +{ + doodle_editor_t *de = (doodle_editor_t *)h_de; + if (de->h_ss!= NULL) { /* destroy stroke size selector */ + _stroke_size_selector_del(de); + } + if (de->h_cs != NULL) { /* destroy stroke color selector */ + _stroke_color_selector_del(de); + } + memo_free_data(de->record); + evas_object_del(de->body_main); + SFREE(de); +} diff --git a/src/memo_text_editor.c b/src/memo_text_editor.c new file mode 100644 index 0000000..fa4172c --- /dev/null +++ b/src/memo_text_editor.c @@ -0,0 +1,420 @@ +/* +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.org/license +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +typedef struct __text_editor_t { + Evas_Object *win; + Evas_Object *parent; + Memo_Component_Callback cb; + void *data; + memo_data_t *record; + char buf[MEMO_BUFFER_SIZE]; /* for temporarily usage only */ + Eina_Bool savable; + + /* content */ + Evas_Object *body_main; + Evas_Object *toolbar; + Evas_Object *btn_size; + void *h_fss; + Evas_Object *btn_color; + void *h_fcs; + + /* entry */ + Evas_Object *entry; + Ecore_IMF_Context *imf_context; + Elm_Entry_Filter_Limit_Size limit_filter_data; + + /* original font information */ + int init_fsize; + int init_fcolor; +} text_editor_t; + +static void _font_size_selector_del(text_editor_t *te); +static void _font_color_selector_del(text_editor_t *te); +service_h text_service = NULL; +static void _save_record(text_editor_t *te) +{ + if (te->record->content != NULL) { + SFREE(te->record->content); + } + + /* content will be freed automatically in memo_free_data when editor destoried */ + te->record->content = elm_entry_markup_to_utf8(elm_entry_entry_get(te->entry)); + /* records synced from KIES has no font info, apply font enforce policy here to overwrite default font info */ + te->record->font_respect = 1; + if (te->record->id != -1) { + memo_mod_data(te->record); + } else { + memo_add_data(te->record); + } +} + +static void _on_save_yes(void *data, Evas_Object *obj, void *event_info) +{ + text_editor_t *te = (text_editor_t *)data; + _save_record(te); + te->cb(te->data, "save", NULL); +} + +static void _on_save_no(void *data, Evas_Object *obj, void *event_info) +{ + text_editor_t *te = (text_editor_t *)data; + te->cb(te->data, "cancel", NULL); +} + +static Eina_Bool _launch_yes_no_popup(void *data) +{ + text_editor_t *te = (text_editor_t *)data; + memo_create_yes_no_popup(te->win, MEMO_I18N_SAVE_MEMO, _on_save_yes, _on_save_no, te); + return EINA_FALSE; +} + +static void _entry_content_update(text_editor_t *te) +{ + unsigned char *color = (unsigned char *)&te->record->font_color; + char *content = elm_entry_markup_to_utf8(elm_entry_entry_get(te->entry)); + char *markup = elm_entry_utf8_to_markup(content); + snprintf(te->buf, MEMO_BUFFER_SIZE, + "", te->record->font_size, color[2], color[1], + color[0]); + elm_entry_entry_set(te->entry, te->buf); + elm_entry_entry_insert(te->entry, markup); + SFREE(content); + SFREE(markup); +} + +static void _font_size_selector_callback(void *data, const char *msg, void *event) +{ + text_editor_t *te = (text_editor_t *)data; + if (strcmp(msg, "layout") == 0) { + elm_object_part_content_set(te->body_main, "elm.swallow.tool", (Evas_Object *)event); + } else if (strcmp(msg, "change") == 0) { + te->record->font_size = (int)event; + _entry_content_update(te); + } else if (strcmp(msg, "flick,down") == 0) { + _font_size_selector_del(te); + edje_object_signal_emit(elm_layout_edje_get(te->body_main), "expand", "elm"); + } +} + +static void _font_size_selector_del(text_editor_t *te) +{ + if (te->h_fss != NULL) { + elm_object_part_content_unset(te->body_main, "elm.swallow.tool"); + memo_del_font_size_selector(te->h_fss); + te->h_fss = NULL; + memo_tool_btn_focus_set(te->btn_size, EINA_FALSE); + } +} + +static void _on_font_size_btn_up(void *data, Evas *e, Evas_Object *evas_obj, void *event_info) +{ + text_editor_t *te = (text_editor_t *)data; + if (te->h_fss != NULL) { /* font size selector already open */ + return; + } + if (te->h_fcs != NULL) { /* destroy font color selector */ + _font_color_selector_del(te); + } + /* load font size selector */ + service_h service = NULL; + service_create(&service); + snprintf(te->buf, MEMO_BUFFER_SIZE, "%d", te->record->font_size); + service_add_extra_data(service, "current", te->buf); + snprintf(te->buf, MEMO_BUFFER_SIZE, "%d", 0xFFFFFFFF); + service_add_extra_data(service, "bg_color", te->buf); + te->h_fss = memo_load_font_size_selector(te->body_main, service, _font_size_selector_callback, te); + service_destroy(service); + memo_tool_btn_focus_set(te->btn_size, EINA_TRUE); + edje_object_signal_emit(elm_layout_edje_get(te->body_main), "abbrev", "elm"); + /* hide input panel */ + ecore_imf_context_input_panel_hide(te->imf_context); +} + +void _font_color_selector_callback(void *data, const char *msg, void *event) +{ + text_editor_t *te = (text_editor_t *)data; + if (strcmp(msg, "layout") == 0) { + elm_object_part_content_set(te->body_main, "elm.swallow.tool", (Evas_Object *)event); + } else if (strcmp(msg, "change") == 0) { + LOGD("%s : %x\n", msg, (int)event); + te->record->font_color = (int)event; + _entry_content_update(te); + } else if (strcmp(msg, "flick,down") == 0) { + _font_color_selector_del(te); + edje_object_signal_emit(elm_layout_edje_get(te->body_main), "expand", "elm"); + } +} + +static void _font_color_selector_del(text_editor_t *te) +{ + if (te->h_fcs != NULL) { + elm_object_part_content_unset(te->body_main, "elm.swallow.tool"); + memo_del_color_selector(te->h_fcs); + memo_tool_btn_focus_set(te->btn_color, EINA_FALSE); + te->h_fcs = NULL; + } +} + +static void _on_font_color_btn_up(void *data, Evas *e, Evas_Object *evas_obj, void *event_info) +{ + text_editor_t *te = (text_editor_t *)data; + if (te->h_fcs!= NULL) { /* font color selector already open */ + return; + } + if (te->h_fss!= NULL) { /* destroy font size selector */ + _font_size_selector_del(te); + } + /* load font color selector */ + service_h service = NULL; + service_create(&service); + snprintf(te->buf, MEMO_BUFFER_SIZE, "%d", te->record->font_color); + service_add_extra_data(service, "color", te->buf); + snprintf(te->buf, MEMO_BUFFER_SIZE, "%d", 0xFFFFFFFF); + service_add_extra_data(service, "bg_color", te->buf); + te->h_fcs = memo_load_color_selector(te->body_main, service, _font_color_selector_callback, te); + service_destroy(service); + memo_tool_btn_focus_set(te->btn_color, EINA_TRUE); + edje_object_signal_emit(elm_layout_edje_get(te->body_main), "abbrev", "elm"); + /* hide input panel */ + ecore_imf_context_input_panel_hide(te->imf_context); +} + +static void _input_panel_event_callback(void *data, Ecore_IMF_Context *ctx, int value) +{ + text_editor_t *te = (text_editor_t *)data; + if (value == ECORE_IMF_INPUT_PANEL_STATE_HIDE) { + if ((te->h_fss==NULL) && (te->h_fcs==NULL)) { /* hide by sweep donw */ + edje_object_signal_emit(elm_layout_edje_get(te->body_main), "expand", "elm"); + } + } else if (value == ECORE_IMF_INPUT_PANEL_STATE_SHOW) { + edje_object_signal_emit(elm_layout_edje_get(te->body_main), "abbrev", "elm"); + } +} + +static void _on_entry_clicked(void *data, Evas_Object *obj, void *event_info) +{ + text_editor_t *te = (text_editor_t *)data; + if (te->h_fss!= NULL) { /* destroy font size selector */ + _font_size_selector_del(te); + } + if (te->h_fcs != NULL) { /* destroy font color selector */ + _font_color_selector_del(te); + } +} + +static void _on_entry_content_change(void *data, Evas_Object *obj, void *event_info) +{ + text_editor_t *te = (text_editor_t *)data; + unsigned char *color = (unsigned char *)&te->record->font_color; + + const char *text = elm_entry_entry_get(te->entry); + char *content = elm_entry_markup_to_utf8(text); + te->savable = EINA_TRUE; + if (strcmp(content, "") == 0) { + te->savable = EINA_FALSE; + } else if (te->record->content != NULL) { /* check if same as init string */ + if ((te->init_fsize==te->record->font_size) + && (te->init_fcolor==te->record->font_color) + && (strcmp(te->record->content, content)==0)) { + te->savable = EINA_FALSE; + } + } + te->cb(te->data, "savable", (void *)(te->savable?1:0)); + + /* after paste/cut, the font size/color information may be cleared */ + snprintf(te->buf, MEMO_BUFFER_SIZE, "", + te->record->font_size, color[2], color[1], color[0]); + if (text[0] == '\0') { /* no content */ + elm_entry_entry_insert(te->entry, te->buf); + } else if (text[0] != '<') { /* insert font information */ + elm_entry_cursor_begin_set(te->entry); + elm_entry_entry_insert(te->entry, te->buf); + elm_entry_cursor_end_set(te->entry); + } + SFREE(content); +} + +static void _on_yes(void *data, Evas_Object *obj, void *event_info) +{ + text_editor_t *te = (text_editor_t *)data; + _save_record(te); + te->cb(te->data, "drawing", NULL); +} + +static void _on_no(void *data, Evas_Object *obj, void *event_info) +{ + text_editor_t *te = (text_editor_t *)data; + te->cb(te->data, "drawing", NULL); +} + +static void _on_drawing_mode(void *data, Evas_Object *obj, void *event_info) +{ + text_editor_t *te = (text_editor_t *)data; + if (te->savable) { /* modified, need user confirmation */ + memo_create_yes_no_popup(te->parent, MEMO_I18N_SAVE_MEMO, _on_yes, _on_no, te); + } else { + te->cb(te->data, "drawing", NULL); + } +} + +static void _create_text_editor_layout(text_editor_t *te, service_h service) +{ + te->body_main = elm_layout_create(te->parent, EDJ_FILE, "text_editor"); + te->cb(te->data, "layout", te->body_main); + /* title */ + te->cb(te->data, "title", te->record->id==-1 ? MEMO_I18N_NEW_NOTE : MEMO_I18N_EDIT_NOTE); + /* date */ + memo_time_format(te->buf, MEMO_BUFFER_SIZE, te->record->modi_time); + edje_object_part_text_set(elm_layout_edje_get(te->body_main), "elm.text.date", te->buf); + /* toolbar */ + te->toolbar = elm_swallowed_layout(te->body_main, "elm.swallow.toolbar", EDJ_FILE, "edit_toolbar"); + te->btn_size = elm_swallowed_layout(te->toolbar, "elm.swallow.btn1", EDJ_DIR"/white/memo.edj", "tl_font_size"); + evas_object_event_callback_add(te->btn_size, EVAS_CALLBACK_MOUSE_UP, _on_font_size_btn_up, te); + te->btn_color = elm_swallowed_layout(te->toolbar, "elm.swallow.btn2", EDJ_DIR"/white/memo.edj", "tl_font_color"); + evas_object_event_callback_add(te->btn_color, EVAS_CALLBACK_MOUSE_UP, _on_font_color_btn_up, te); + if (!service_key_check(service, "toggle", "disable")) { + elm_swallowed_button(te->toolbar, "elm.swallow.btn4", MEMO_I18N_DRAWING, _on_drawing_mode, te); + } + /* entry */ + Evas_Object *sc = elm_swallowed_scroller(te->body_main, "elm.swallow.text"); + unsigned char *color = (unsigned char *)&te->record->font_color; + snprintf(te->buf, MEMO_BUFFER_SIZE, "", + te->record->font_size, color[2], color[1], color[0]); + te->entry = elm_entry_create(te->body_main, te->buf); + elm_entry_input_panel_enabled_set(te->entry, EINA_TRUE); + evas_object_size_hint_align_set(te->entry, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_weight_set(te->entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_entry_autocapital_type_set(te->entry, ELM_AUTOCAPITAL_TYPE_SENTENCE); + elm_object_content_set(sc, te->entry); + evas_object_smart_callback_add(te->entry, "changed", _on_entry_content_change, te); + evas_object_smart_callback_add(te->entry, "preedit,changed", _on_entry_content_change, te); + evas_object_smart_callback_add(te->entry, "clicked", _on_entry_clicked, te); + /* limit size */ + elm_entry_markup_filter_append(te->entry, elm_entry_filter_limit_size, &te->limit_filter_data); + /* entry content */ + if (te->record->content != NULL) { + char *content = elm_entry_utf8_to_markup(te->record->content); + elm_entry_entry_insert(te->entry, content); + SFREE(content); + } else { /* set init string */ + char *str = NULL; + service_get_extra_data(service, "init_str", &str); + if (str != NULL) { + elm_entry_entry_insert(te->entry, str); + SFREE(str); + } + } + elm_object_focus_set(te->entry, EINA_TRUE); + /* imf context */ + te->imf_context = elm_entry_imf_context_get(te->entry); + ecore_imf_context_input_panel_event_callback_add(te->imf_context, + ECORE_IMF_INPUT_PANEL_STATE_EVENT, _input_panel_event_callback, te); + /* savable */ + te->cb(te->data, "savable", (void *)(te->savable?1:0)); +} + +void memo_text_editor_time_format_update(void *h_te) +{ + text_editor_t *te = (text_editor_t *)h_te; + memo_time_format(te->buf, MEMO_BUFFER_SIZE, te->record->modi_time); + edje_object_part_text_set(elm_layout_edje_get(te->body_main), "elm.text.date", te->buf); +} + +void memo_text_editor_cancel(void *h_te) +{ + text_editor_t *te = (text_editor_t *)h_te; + if (!te->savable) { /* not modified, return directly */ + te->cb(te->data, "cancel", NULL); + } else { + /* hide imf, otherwise popup will be covered by imf */ + if (te->imf_context != NULL) { + ecore_imf_context_input_panel_hide(te->imf_context); + } + _launch_yes_no_popup(te); + } +} +void memo_text_editor_save(void *h_te) +{ + text_editor_t *te = (text_editor_t *)h_te; + service_create(&text_service); + service_add_extra_data(text_service, "ug_text", te->data); + _save_record(te); + te->cb(te->data, "save", NULL); +} + +void *memo_load_text_editor(Evas_Object *win, Evas_Object *parent, service_h service, Memo_Component_Callback cb, void *data) +{ + text_editor_t *te = SMALLOC(text_editor_t); + RETVIF(te==NULL, NULL); + service_dump(service); + te->win = win; + te->parent = parent; + te->cb = (cb==NULL ? memo_com_dummy_cb : cb); /* make sure cb is not null, no need to check legitimacy of cb when call */ + te->data = data; + + /* init */ + const char *s = NULL; + service_get_extra_data(service, "index", &s); + if (s == NULL) { + te->record = memo_create_data(); + te->record->id = -1; + te->record->modi_time = time((time_t *) 0); + te->record->font_size = 44; + te->record->font_color = 0xff000000; + } else { /* load item */ + te->record = memo_get_data(atoi(s)); + SFREE(s); + } + te->init_fsize = te->record->font_size; + te->init_fcolor = te->record->font_color; + /* limitation */ + te->limit_filter_data.max_char_count = 0; + te->limit_filter_data.max_byte_count = 1000; + + _create_text_editor_layout(te, service); + return (void *)te; +} + +void memo_destroy_text_editor(void *h_te) +{ + text_editor_t *te = (text_editor_t *)h_te; + ecore_imf_context_input_panel_event_callback_del(te->imf_context, + ECORE_IMF_INPUT_PANEL_STATE_EVENT, _input_panel_event_callback); + ecore_imf_context_input_panel_hide(te->imf_context); + if (te->h_fss!= NULL) { /* destroy font size selector */ + _font_size_selector_del(te); + } + if (te->h_fcs != NULL) { /* destroy font color selector */ + _font_color_selector_del(te); + } + memo_free_data(te->record); + evas_object_del(te->body_main); + SFREE(te); +} diff --git a/src/memo_ug.c b/src/memo_ug.c index ed1b8d1..31fc2ca 100644 --- a/src/memo_ug.c +++ b/src/memo_ug.c @@ -1,19 +1,20 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ - +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.org/license +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +*/ #include #include #include @@ -21,7 +22,7 @@ #include #include "memo_ug.h" -static void _ug_layout_cb(struct ui_gadget *ug, enum ug_mode mode, void *priv) +static void _ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv) { Evas_Object *base, *win; base = (Evas_Object *)ug_get_layout(ug); @@ -43,12 +44,12 @@ static void _ug_layout_cb(struct ui_gadget *ug, enum ug_mode mode, void *priv) } } -static void _ug_result_cb(ui_gadget_t *ug, bundle *result, void *priv) +static void _ug_result_cb(ui_gadget_h ug, service_h service, void *priv) { - bundle_dump(result); + service_dump(service); } -static void _ug_destroy_cb(struct ui_gadget *ug, void *priv) +static void _ug_destroy_cb(ui_gadget_h ug, void *priv) { if (ug != NULL) { ug_destroy(ug); @@ -61,11 +62,11 @@ static void _ug_destroy_cb(struct ui_gadget *ug, void *priv) * @description * This is a basic function which designed to invoke any ui gadget. * - * @param[in] bd a bundle type which will send to ug directly + * @param[in] service a service type which will send to ug directly * @param[in] ug_name UG name marco defined in memo_ug.h * @return void */ -void ug_launch_common(bundle *bd, char *ug_name) +void ug_launch_common(service_h service, char *ug_name) { ug_cbs_t cbs={0, }; @@ -74,8 +75,8 @@ void ug_launch_common(bundle *bd, char *ug_name) cbs.result_cb = _ug_result_cb; cbs.priv = NULL; - ug_create(NULL, ug_name, UG_MODE_FULLVIEW, bd, &cbs); - bundle_free(bd); + ug_create(NULL, ug_name, UG_MODE_FULLVIEW, service, &cbs); + service_destroy(service); } /** @@ -94,23 +95,24 @@ void ug_launch_common(bundle *bd, char *ug_name) */ void ug_launch_common_var(char *ug_name, ...) { - char *key = NULL; - char *val = NULL; - bundle *bd = bundle_create(); + char *key = NULL; + char *val = NULL; + service_h service = NULL; + service_create(&service); - va_list ap; - va_start(ap, ug_name); - while (1) { - key = va_arg(ap, char *); - val = va_arg(ap, char *); + va_list ap; + va_start(ap, ug_name); + while (1) { + key = va_arg(ap, char *); + val = va_arg(ap, char *); - if (key == NULL || val == NULL) { - break; - } - bundle_add(bd, key, val); - } - va_end(ap); + if (key == NULL || val == NULL) { + break; + } + service_add_extra_data(service, key, val); + } + va_end(ap); - ug_launch_common(bd, ug_name); + ug_launch_common(service, ug_name); } diff --git a/src/ug-detail.c b/src/ug-detail.c index 234c47b..a9439f4 100644 --- a/src/ug-detail.c +++ b/src/ug-detail.c @@ -1,18 +1,20 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.org/license +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +*/ #include #include @@ -27,6 +29,7 @@ #include #include #include +#include #include typedef struct __detail_view_t { @@ -74,26 +77,34 @@ static void _create_detail_layout(detail_view_t *dv) edje_object_part_text_set(_EDJ(dv->body_main), "elm.text.date", ugd->buf); /* content */ if(md->has_doodle) { - snprintf(ugd->buf, MEMO_BUFFER_SIZE, DOODLEDIR"/%d.png", (int)md->id); + snprintf(ugd->buf, MEMO_BUFFER_SIZE, "/opt/apps/org.tizen.memo/data/doodle/%d.png", (int)md->id); content = elm_swallowed_icon(dv->body_main, "elm.swallow.content", ugd->buf); } else { char buf[MEMO_BUFFER_SIZE]; - Evas_Object *sc = NULL; - sc = elm_swallowed_scroller(dv->body_main, "elm.swallow.content"); + GString *text = + autolink_add_anchor(elm_entry_utf8_to_markup + (md->content)); unsigned char *color = (unsigned char *)&md->font_color; snprintf(buf, MEMO_BUFFER_SIZE, "", md->font_size, color[2], color[1], color[0]); - content = elm_entry_create(dv->body_main, buf); - elm_entry_entry_insert(content, elm_entry_utf8_to_markup(md->content)); - dv->content = strdup(elm_entry_entry_get(content)); + g_string_prepend(text, buf); + + Evas_Object *sc = NULL; + sc = elm_swallowed_scroller(dv->body_main, "elm.swallow.content"); + content = elm_entry_create(dv->body_main, text->str); + dv->content = strdup(text->str); + evas_object_smart_callback_add(content, "anchor,clicked", autolink_anchor_clicked_cb, ug_get_parent_layout(ugd->ug)); evas_object_size_hint_weight_set(content, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(content, EVAS_HINT_FILL, EVAS_HINT_EXPAND); elm_entry_editable_set(content, EINA_FALSE); - elm_entry_autocapital_type_set(content, ELM_AUTOCAPITAL_TYPE_SENTENCE); + elm_entry_autocapital_type_set(content, ELM_AUTOCAPITAL_TYPE_SENTENCE); elm_object_content_set(sc, content); dv->entry = content; evas_object_render_flush_hook(dv->entry, _on_entry_resize, dv); + + g_string_free(text, TRUE); + edje_object_signal_emit(_EDJ(dv->body_main), "sig_text_mode", ""); } memo_free_data(md); @@ -106,17 +117,18 @@ static void _create_detail_layout(detail_view_t *dv) elm_object_item_part_content_set(navi_it, "controlbar", ctrl_bar); } -void *memo_load_detail_view(ug_data_t *ugd, bundle *data) +void *memo_load_detail_view(ug_data_t *ugd, service_h service) { detail_view_t *dv = SMALLOC(detail_view_t); RETVIF(dv == NULL, NULL); dv->ugd = ugd; /* init */ - const char *str; - str = bundle_get_val(data, "index"); + char *str = NULL;; + service_get_extra_data(service, "index", &str); if (str != NULL) { dv->index = atoi(str); + SFREE(str); } else { SFREE(dv); return NULL; diff --git a/src/ug-select.c b/src/ug-select.c index fdef4b5..1d083cc 100644 --- a/src/ug-select.c +++ b/src/ug-select.c @@ -1,18 +1,20 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.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.tizenopensource.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. - */ +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.org/license +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +*/ #include #include @@ -43,6 +45,8 @@ typedef struct __select_view_t { int total; Evas_Object *selectioninfo; Evas_Object *selectioninfo_layout; + + Eina_Bool is_textonly; } select_view_t; static void memo_data_iterate_cb (memo_data_t *md, void *user_data); @@ -70,7 +74,7 @@ static void _on_add(void *data, Evas_Object *obj, void *event_info) RETIF(data == NULL); select_view_t *sv = (select_view_t *)data; ug_data_t *ugd = sv->ugd; - bundle *b = NULL; + service_h service = NULL; Elm_Object_Item *it; gl_data_t *gld = NULL; int c_text = 0; @@ -78,7 +82,7 @@ static void _on_add(void *data, Evas_Object *obj, void *event_info) char path[MEMO_BUFFER_SIZE] = {0}; memo_data_t *md = NULL; - b = bundle_create(); + service_create(&service); it = elm_genlist_first_item_get(sv->genlist); while (it != NULL) { gld = (gl_data_t *)elm_object_item_data_get(it); @@ -87,12 +91,12 @@ static void _on_add(void *data, Evas_Object *obj, void *event_info) if (gld->has_doodle) { c_image++; snprintf(ugd->buf, MEMO_BUFFER_SIZE, "image%d", c_image); - snprintf(path, MEMO_BUFFER_SIZE, DOODLEDIR"/%d.png", gld->index); - bundle_add(b, ugd->buf, path); + snprintf(path, MEMO_BUFFER_SIZE, "/opt/apps/org.tizen.memo/data/doodle/%d.png", gld->index); + service_add_extra_data(service, ugd->buf, path); } else { c_text++; snprintf(ugd->buf, MEMO_BUFFER_SIZE, "text%d", c_text); - bundle_add(b, ugd->buf, md->content); + service_add_extra_data(service, ugd->buf, md->content); } } memo_free_data(md); @@ -100,12 +104,12 @@ static void _on_add(void *data, Evas_Object *obj, void *event_info) } snprintf(ugd->buf, MEMO_BUFFER_SIZE, "%d", c_image); - bundle_add(b, "image", ugd->buf); + service_add_extra_data(service, "image", ugd->buf); snprintf(ugd->buf, MEMO_BUFFER_SIZE, "%d", c_text); - bundle_add(b, "text", ugd->buf); - ug_send_result(ugd->ug, b); - bundle_dump(b); - bundle_free(b); + service_add_extra_data(service, "text", ugd->buf); + ug_send_result(ugd->ug, service); + service_dump(service); + service_destroy(service); memo_unsubscribe_change(_on_data_update); ug_destroy_me(ugd->ug); } @@ -166,13 +170,16 @@ static void memo_data_iterate_cb (memo_data_t *md, void *user_data) RETIF(gld == NULL); memo_gld_init(gld, md, sv, NULL); if (md->has_doodle) { - elm_genlist_item_append(sv->genlist, &sv->itc_draw,(void *)gld, - NULL, ELM_GENLIST_ITEM_NONE, _on_item_select_cb, NULL); + if (!sv->is_textonly) { + elm_genlist_item_append(sv->genlist, &sv->itc_draw,(void *)gld, + NULL, ELM_GENLIST_ITEM_NONE, _on_item_select_cb, NULL); + sv->total++; + } } else { elm_genlist_item_append(sv->genlist, &sv->itc,(void *)gld, NULL, ELM_GENLIST_ITEM_NONE, _on_item_select_cb, NULL); + sv->total++; } - sv->total++; } static void _create_select_layout(select_view_t *sv) @@ -204,11 +211,12 @@ static void _create_select_layout(select_view_t *sv) elm_object_item_disabled_set(sv->r_btn, EINA_TRUE); /* disable add defaultly */ } -void *memo_load_select_view(ug_data_t *ugd, bundle *data) +void *memo_load_select_view(ug_data_t *ugd, service_h service) { select_view_t *sv = SMALLOC(select_view_t); RETVIF(sv == NULL, NULL); sv->ugd = ugd; + sv->is_textonly = service_key_check(service, "type", "textonly"); /* date update hooker */ memo_subscribe_change(_on_data_update, sv); diff --git a/theme/CMakeLists.txt b/theme/CMakeLists.txt new file mode 100644 index 0000000..990eec3 --- /dev/null +++ b/theme/CMakeLists.txt @@ -0,0 +1,18 @@ +SET(THFILES white black) + +FOREACH(thfile ${THFILES}) + SET(src ${CMAKE_CURRENT_SOURCE_DIR}/${thfile}/memo.edc) + SET(obj ${CMAKE_CURRENT_BINARY_DIR}/${thfile}.edj) + MESSAGE("THEME: ${thfile}") + ADD_CUSTOM_COMMAND( + OUTPUT ${obj} + COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/${thfile}/images + ${src} ${obj} DEPENDS ${src} + ) + INSTALL(FILES ${obj} + DESTINATION ${EDJDIR}/${thfile} RENAME memo.edj) + SET(edjFiles ${edjFiles} ${obj}) +ENDFOREACH(thfile) + +MESSAGE(".edj files: ${edjFiles}") +ADD_CUSTOM_TARGET(th ALL DEPENDS ${edjFiles}) diff --git a/theme/black/images/00_picker_btn_normal.png b/theme/black/images/00_picker_btn_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..9dc73c475ed9c13045d7dd9af4ec27ae68e0b57c GIT binary patch literal 2981 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 bJiZ425!E*>M&6GE00000NkvXXu0mjfja7qw literal 0 HcmV?d00001 diff --git a/theme/black/images/00_picker_btn_press.png b/theme/black/images/00_picker_btn_press.png new file mode 100644 index 0000000000000000000000000000000000000000..f65239f57b7ba89815ab0d39ce8cef1acb3fa2e5 GIT binary patch literal 2986 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 literal 0 HcmV?d00001 diff --git a/theme/black/images/P02_icon_eraser_press.png b/theme/black/images/P02_icon_eraser_press.png new file mode 100644 index 0000000000000000000000000000000000000000..0cab0382d9671482ab566fc6e89f6222302a5941 GIT binary patch literal 3629 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 literal 0 HcmV?d00001 diff --git a/theme/black/images/P02_icon_font_color.png b/theme/black/images/P02_icon_font_color.png new file mode 100644 index 0000000000000000000000000000000000000000..a2bd5b47ad5d2868451c61c3dcefff4213d3a7bf GIT binary patch literal 4021 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 bL-F?je-o}+Rp=Oy00000NkvXXu0mjf#|?-S literal 0 HcmV?d00001 diff --git a/theme/black/images/P02_icon_font_color_press.png b/theme/black/images/P02_icon_font_color_press.png new file mode 100644 index 0000000000000000000000000000000000000000..a2bd5b47ad5d2868451c61c3dcefff4213d3a7bf GIT binary patch literal 4021 zcmV;m4@&TfP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000EwNklBEGk5iP*5O>B%%Z{r=6W$VXei*{X;qe2j!p~l!J0m4$6gta!?M+K{=?A3xBsxl;`;ja0+NX z!tr*1Ii=LnFlW>&j~I!;`P;)j^_oL6iyE#*Z7*6wU85dy-RW$~+J}<4yO~kxT?RN0 zOatOB?Z760tzuCrHLa97HfYmIDWQ}SgMR0?(Z|q1ZBF_5!JtmxV<6pa4D!3J4k)EM zN~zOIscB$gFWyJZ4}f+plu{=*VYP-GstYXbHqvcaot;j_-7MzEhM@4z4gRpyJro`Z5w4$46}Cq zGr%v`k5^~*<<$G?;Cro1)-PwW-Y#T?QbbtcVFz7XPhdlVi3KK+sjkcO*WOA`?JKAY zkAK|EW%XiDrfDYYWTHkXDrgb(p#<1KU?PD|1iCKKsfTXJH-G+UVs_s^X`#;KvXbU9 zAr}dyj44Hk!NUrP6<|FuVIRv>`d}uJm`I-b;j<^2BVWuvIdZABVzRbxdT0?+ijdq? z5g4laHv-!u@C2qRC?`CMNssKXPxe%Rsd$uiFD(=K2K}9q(S=$M#!q-Q!!re1DoPoW z>ly%!;ws9l5e86>OY%b=`IJv~SdmQy=t!ay4;_26BM+4aNlO}qwB=x$Ny;)rQnKbx z66+fnCHk2(74)Gd1M;x|qa-@=Frk-zbM@I4uspI*YhjA824M|7-C(^OBhVYH6%#~d zmq>T1SFf;kG-S0ElTQZZV~Qg2vA)Fm9>x=J=f>!0L9HhBEsy=kOH9u_NprT?W_pe= zR1tv%5MaE2n^v%K5LO#4e%*MD$@nL#+(gkMAjhXbU=UaY28r&DbVl_mbc_d9LaCq( z`z@=(pU*%xaTK+Fh^OOAOmT%OT@t#)tRm6)6nK=~(1&SU%#o_~Ae`B|xc6`Hm?o+Xp)mX~v&^yov z>WxD-4kiH;fUzD~S>u)+XN5^tnB*@Ga*HumNy&&G^yP`x&}S4t5i?)LT+VBd*FaaG ztb>jEJsay$lrbB!4gx$%BpOAJlHl~);)Bk8PSL*4@pR}j3gGwEcJ`!rcOKv#U!ZO$TUvRZr$Y|~@Z~$=Y+mPBQKM5<`&jt> zo~;#V6Hu6l%p|PSV2yO)L-G3DHm1~>ZC=8zJc$rH{igW#2X`-gVN(+`t81K~L5mP% zToOcUgz8pD`5Q|$|N6q`;>G_=H)}0t| zYFaYXsUNN{f15V8yyyYc4FBId=*z&XN~z9JK<&41n+p!gK{+S~<)9pt3kT((9F&9F bL-F?je-o}+Rp=Oy00000NkvXXu0mjf#|?-S literal 0 HcmV?d00001 diff --git a/theme/black/images/P02_icon_font_size.png b/theme/black/images/P02_icon_font_size.png new file mode 100644 index 0000000000000000000000000000000000000000..52931cb7db89fff40655d50186d94c03660cfa02 GIT binary patch literal 3229 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 P00000NkvXXu0mjf%4Yr1 literal 0 HcmV?d00001 diff --git a/theme/black/images/P02_icon_font_size_press.png b/theme/black/images/P02_icon_font_size_press.png new file mode 100644 index 0000000000000000000000000000000000000000..52931cb7db89fff40655d50186d94c03660cfa02 GIT binary patch literal 3229 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 P00000NkvXXu0mjf%4Yr1 literal 0 HcmV?d00001 diff --git a/theme/black/images/P02_icon_font_type.png b/theme/black/images/P02_icon_font_type.png new file mode 100644 index 0000000000000000000000000000000000000000..abd2499bed123b3f2ef282b24ba1c2e9717d33c9 GIT binary patch literal 3342 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 Y0Nw$C*`tR0kN^Mx07*qoM6N<$f~Hnd4*&oF literal 0 HcmV?d00001 diff --git a/theme/black/images/P02_icon_font_type_press.png b/theme/black/images/P02_icon_font_type_press.png new file mode 100644 index 0000000000000000000000000000000000000000..abd2499bed123b3f2ef282b24ba1c2e9717d33c9 GIT binary patch literal 3342 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 Y0Nw$C*`tR0kN^Mx07*qoM6N<$f~Hnd4*&oF literal 0 HcmV?d00001 diff --git a/theme/black/images/P02_icon_stroke.png b/theme/black/images/P02_icon_stroke.png new file mode 100644 index 0000000000000000000000000000000000000000..656b7888533e30a5421b3dfc1be6be16a32ed0f9 GIT binary patch literal 2928 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 + +collections { + #include <../common.edc> +} diff --git a/theme/common.edc b/theme/common.edc new file mode 100644 index 0000000..eb5852f --- /dev/null +++ b/theme/common.edc @@ -0,0 +1,71 @@ +/* +* +* Copyright 2012 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.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.tizenopensource.org/license +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +*/ + +#define ICON_BUTTON(iName, img_default, img_focus)\ +group {\ + name: iName;\ + images{\ + image: img_default COMP;\ + image: img_focus COMP;\ + image: "00_picker_btn_press.png" COMP;\ + image: "00_picker_btn_normal.png" COMP;\ + }\ + parts {\ + PART_BG("bg")\ + PART_BORDER_IMAGE("image_bg", "bg", "00_picker_btn_normal.png", 4, 4, 0, 0)\ + PART_IMAGE("image_icon", "bg", img_default)\ + PART_EVENT_RECT("event", "bg")\ + }/* end parts */\ +\ + programs {\ + program {\ + name: "init";\ + signal: "load";\ + source: "";\ + script {\ + SCRIPT_CUSTOM_PART("image_bg");\ + SCRIPT_CUSTOM_PART("image_icon");\ + }\ + } /* end program */\ + program {\ + name: "focus";\ + signal: "focus";\ + source: "elm";\ + script {\ + SCRIPT_SET_IMAGE("image_bg", "00_picker_btn_press.png");\ + SCRIPT_SET_IMAGE("image_icon", img_focus);\ + }\ + } /* end program */\ + program {\ + name: "normal";\ + signal: "normal";\ + source: "elm";\ + script {\ + SCRIPT_SET_IMAGE("image_bg", "00_picker_btn_normal.png");\ + SCRIPT_SET_IMAGE("image_icon", img_default);\ + }\ + } /* end program */\ + }/* end programs */\ +} + +ICON_BUTTON("tl_font_size", "P02_icon_font_size.png", "P02_icon_font_size_press.png") +ICON_BUTTON("tl_font_color", "P02_icon_font_color.png", "P02_icon_font_color_press.png") +ICON_BUTTON("tl_stroke_size", "P02_icon_stroke.png", "P02_icon_stroke_press.png") +ICON_BUTTON("tl_stroke_color", "P02_icon_color.png", "P02_icon_color_focus.png") +ICON_BUTTON("tl_stroke_eraser", "P02_icon_eraser.png", "P02_icon_eraser_press.png") + diff --git a/theme/white/images/00_picker_btn_normal.png b/theme/white/images/00_picker_btn_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..df4433ec92f202f54c32f7f7d68264c3edcf5a7d GIT binary patch literal 3227 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 N002ovPDHLkV1gtk05kvq literal 0 HcmV?d00001 diff --git a/theme/white/images/00_picker_btn_press.png b/theme/white/images/00_picker_btn_press.png new file mode 100644 index 0000000000000000000000000000000000000000..83284d1116a08e59f5463e07fe3e65e045861415 GIT binary patch literal 891 zcmeAS@N?(olHy`uVBq!ia0vp^0zhoU!3-pmJXhy2FfeWi@Ck916c+gZ|G$TU2$12b zBjjl)>aH*Bsw?ECCkzzvFcfjq74kF^1+ryC1%M<3x$BEeN!J3hKhINl)DihOPuX~>SG?(${(rRe|Dl}!2QvO2E&hM9=0%sppT+9G7OMW7 zukvr1#?J++|MtZF+v4?awb{QFy8o7G{abDFW3I}-J+a^CD!=NH`Zh=T{Uq71vy}d= zxBW6x@%?1kAM;fHt+o2MT<7z2g_k{&pQg#bn<(>dx!%WV^8ZiPeVi)yZ@KP=DRO_8 zYQFB1{}R2y?|)_g{&-LR$<Qr{N_{a%?X5_TRp7b+ay4*RsD^Z$d9SX+*5G z4>RXG-8BFD1@!_6F^e@Eh9cKm6}VP2wR0bAKQ!;aLx%?iDg_b(7IQdc&b1hDEoN%Z zJ~;o-+5-wMz#G#&oQxuEEPU-u?b40T`yY5G zdVY{&V-@Amko%~?=oM)8ZT+DXN7YrU)bC^kc(0E&e|agPDXLjABPXlOA}Z>3L)onM po5uZov)V7+yvi$4RrT^8^ZJJSVFx$OPY1>bgQu&X%Q~loCIHI{h~)qP literal 0 HcmV?d00001 diff --git a/theme/white/images/P02_icon_color.png b/theme/white/images/P02_icon_color.png new file mode 100644 index 0000000000000000000000000000000000000000..23a7fe7d1901038564ca157bc9dacc6dc96392b4 GIT binary patch literal 4261 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 literal 0 HcmV?d00001 diff --git a/theme/white/images/P02_icon_eraser_press.png b/theme/white/images/P02_icon_eraser_press.png new file mode 100644 index 0000000000000000000000000000000000000000..82e1ce1d822016af5ba72fceefee92ff2f377a9d GIT binary patch literal 3252 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 b$lCz`)2{rV{G_Cq00000NkvXXu0mjf&|%#w literal 0 HcmV?d00001 diff --git a/theme/white/images/P02_icon_font_color_press.png b/theme/white/images/P02_icon_font_color_press.png new file mode 100644 index 0000000000000000000000000000000000000000..2e75f621bd4be0485094f9bfe2ca1baf413ea47f GIT binary patch literal 3581 zcmVKLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z11d>GK~#9!?3hnz6jvO_KW}Dsc6N4mb~o9C-I7qF9#RjIv>+60Np2z{d#(tI;90$h zUPSDzl@tonBAAvS6ml^1&_bam!GIUh)Qj{WsIgT@%)iZUcK+?_A(N8EELq4V-G%wV zz|8x-Kc9K?eZTj9BcznHqA9efh2SB02p)nr*0cun@gXn_eB3~;^j?6cfqo#>YEn@F zuN9>t0Ri~HL*Pf?Rp1lAG2p_cHopSj0hQo62Al#;1ow4}D&|M$SZQB(mL5iAXw zFWe8*v)Q}F3BcM5@Vcb(d-lc|Td|%vN@BnjCQ_`uuhaz66jYPSKHpNtXTEGd)1XMT zbMT+KM)#G~wxN>R!K%`Zqa^W!z6P!fyrhEHuHbg4co}v0_0;K}rqFm%&s}qsSlU(M z_(Dg;!SrW=zwj-A)1^{55W((_;ASHfd2pc%CjWo%Xs%GvEGk+GM~$zoKJP6ZJj2PW ztbU|Z?lrJ;5j;!7Gqplf%=og|nO3SE5#OQc<|yhp0D8*zSsskBFp#8@GjQV?)u={Q zQ<@_juEecPB?tMFqf{n;YwkE+NKFyEN!yj186QzuXi&|e! zA$J|ToMz06QgC8mr=XOFV(*&oC5HjXGDDJi3`*$O6LpN+2}Cy}61xI^-7_iJNw71p zng>6~F3V1aIlUVI2ZK0E7?iHpF}qzm1>bfhjeaYpD;dt(8L->HO9ev$t{bC7hGjZ} zEBnnQZf=}$9XPZ_xBG$kPNX8X`^~(5R{3m17TgTOZX0PbKuTgH7D<@1B-OdaBy$(< zaPo(sSwD~mJ_jz>==yu$9xxjuBD({=Zl64o1uXhVNOZG^8C!T^>I-8()3>;x+N~h* z)q~_$ZtM7pI00000NkvXXu0mjf DJc-s< literal 0 HcmV?d00001 diff --git a/theme/white/images/P02_icon_font_size.png b/theme/white/images/P02_icon_font_size.png new file mode 100644 index 0000000000000000000000000000000000000000..b397b98da71910536a7511885433531111525be0 GIT binary patch literal 3226 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 M07*qoM6N<$f~IsO?*IS* literal 0 HcmV?d00001 diff --git a/theme/white/images/P02_icon_font_size_press.png b/theme/white/images/P02_icon_font_size_press.png new file mode 100644 index 0000000000000000000000000000000000000000..4966066f0eb879889af46ce98b87bbc405f4c0ad GIT binary patch literal 3199 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 literal 0 HcmV?d00001 diff --git a/theme/white/images/P02_icon_font_type.png b/theme/white/images/P02_icon_font_type.png new file mode 100644 index 0000000000000000000000000000000000000000..10d9186bc65b7979eedd0f9ddae625b0d60c60b4 GIT binary patch literal 3372 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 literal 0 HcmV?d00001 diff --git a/theme/white/images/P02_icon_font_type_press.png b/theme/white/images/P02_icon_font_type_press.png new file mode 100644 index 0000000000000000000000000000000000000000..abd2499bed123b3f2ef282b24ba1c2e9717d33c9 GIT binary patch literal 3342 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 Y0Nw$C*`tR0kN^Mx07*qoM6N<$f~Hnd4*&oF literal 0 HcmV?d00001 diff --git a/theme/white/images/P02_icon_stroke.png b/theme/white/images/P02_icon_stroke.png new file mode 100644 index 0000000000000000000000000000000000000000..5a317a876f7f8653137b73fe3555939afeca3708 GIT binary patch literal 2944 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 + +collections { + #include <../common.edc> +} diff --git a/ug-memo-efl.desktop b/ug-memo-efl.desktop new file mode 100644 index 0000000..e5b1a32 --- /dev/null +++ b/ug-memo-efl.desktop @@ -0,0 +1,11 @@ +Name=ug-memo-efl +Exec=/opt/ug/bin/ug-memo-efl +Icon= +Type=Application +Version=0.1.0-0 +NoDisplay=true +X-TIZEN-Multiple=true +X-TIZEN-TaskManage=false +X-TIZEN-Removable=false +X-TIZEN-SVC=http://tizen.org/appsvc/operation/test|NULL|NULL + -- 2.7.4