From a914248a31229bb81ed4ede970ca23e2490e0387 Mon Sep 17 00:00:00 2001 From: Jisung Ahn Date: Tue, 21 Aug 2012 21:33:06 +0900 Subject: [PATCH] initial upload Change-Id: Ie9df15e2a3ce6a47e65f48aa0cfb43c2622b74d7 --- CMakeLists.txt | 52 +- NOTICE | 0 common/CMakeLists.txt | 36 +- common/NOTICE | 1 - common/include/debug.h | 76 +- common/include/ivug-debug.h | 108 +- common/include/ivug-mouse-event.h | 43 +- common/include/statistics.h | 79 +- common/src/debug.c | 57 +- common/src/ivug-mouse-event.c | 300 ++- common/src/statistics.c | 188 +- debian/changelog | 8 - debian/compat | 1 - debian/control | 42 - debian/libug-image-viewer-efl.install.in | 3 - debian/libug-image-viewer-efl.postinst | 8 - debian/rules | 132 -- main/CMakeLists.txt | 177 +- main/NOTICE | 1 - main/layout/genlist/genlist_group_index.edc | 35 +- main/layout/genlist/genlist_macro.edc | 32 +- main/layout/genlist/genlist_size.edc | 31 +- main/layout/genlist/genlist_styles.edc | 194 +- main/layout/genlist/genlist_textblock_styles.edc | 79 +- main/layout/genlist/ivug-genlist.edc | 47 +- main/layout/images/T01_btn_cancel.png | Bin 4800 -> 0 bytes main/layout/images/T01_btn_cancel_press.png | Bin 4898 -> 0 bytes main/layout/images/T01_btn_ok.png | Bin 5070 -> 0 bytes main/layout/images/T01_btn_ok_dim.png | Bin 4515 -> 0 bytes main/layout/images/T01_btn_ok_press.png | Bin 5156 -> 0 bytes .../images/gray-theme/00_winset_btn_prev.png | Bin 3258 -> 0 bytes .../images/gray-theme/I01_control_top_bg.png | Bin 2814 -> 0 bytes .../images/gray-theme/T01_Option_header_bt.png | Bin 3064 -> 0 bytes .../images/gray-theme/T01_Option_header_bt_dim.png | Bin 24351 -> 0 bytes .../gray-theme/T01_Option_header_bt_press.png | Bin 2996 -> 0 bytes main/layout/images/gray-theme/T01_btn_prev.png | Bin 3228 -> 0 bytes .../images/gray-theme/T01_control_top_arrow.png | Bin 3055 -> 0 bytes .../images/gray-theme/T01_control_top_bg.png | Bin 2812 -> 0 bytes main/layout/images/gray-theme/T01_title_btn.png | Bin 3129 -> 0 bytes .../images/gray-theme/T01_title_btn_press.png | Bin 3126 -> 0 bytes main/layout/images/gray-theme/T01_toolbar_bg.png | Bin 2797 -> 0 bytes .../layout/images/gray-theme/T01_toolbar_press.png | Bin 2877 -> 0 bytes main/layout/images/gray-theme/magnifier.png | Bin 5126 -> 0 bytes main/layout/images/gray-theme/magnifier_line.png | Bin 4153 -> 0 bytes .../layout/images/gray-theme/magnifier_noarrow.png | Bin 9467 -> 0 bytes .../images/gray-theme/magnifier_noarrow_line.png | Bin 9530 -> 0 bytes .../images/gray-theme/reader_handler_down.png | Bin 6139 -> 0 bytes .../layout/images/gray-theme/reader_handler_up.png | Bin 3454 -> 0 bytes .../images/gray-theme/reader_longtap_blue.png | Bin 2802 -> 0 bytes main/layout/ivug-base.edc | 53 +- main/layout/ivug-button.edc | 1332 ------------ main/layout/ivug-details.edc | 38 +- main/layout/ivug-effect.edc | 31 +- main/layout/ivug-icons.edc | 38 +- main/layout/ivug-main.edc | 168 +- main/layout/ivug-naviframe.edc | 2242 ++++++++++++++++++-- main/layout/ivug-selectioninfo.edc | 64 +- main/layout/ivug-setas.edc | 388 ++-- main/layout/ivug-slider.edc | 79 +- main/layout/ivug-toolbar.edc | 886 -------- .../01_Control icon/T01_controlbar_icon_info.png | Bin 3273 -> 0 bytes main/res/images/T01_Nocontents_broken.png | Bin 4880 -> 0 bytes main/res/po/CMakeLists.txt | 3 +- main/res/po/POTFILES.in | 2 +- main/res/po/de_DE.po | 27 + main/res/po/el_GR.po | 27 + main/res/po/en.po | 27 + main/res/po/es_ES.po | 27 + main/res/po/fr_FR.po | 27 + main/res/po/it_IT.po | 27 + main/res/po/ja_JP.po | 43 +- main/res/po/ko_KR.po | 27 + main/res/po/nl_NL.po | 29 +- main/res/po/pt_PT.po | 27 + main/res/po/ru_RU.po | 27 + main/res/po/tr_TR.po | 27 + main/res/po/zh_CN.po | 27 + main/res/po/zh_HK.po | 29 +- main/res/po/zh_TW.po | 29 +- main/src/common/ivug-common.h | 42 - main/src/common/ivug-config.c | 200 -- main/src/common/ivug-config.h | 50 - main/src/common/ivug-datatypes.h | 32 - main/src/common/ivug-define.h | 60 - main/src/common/ivug-string.h | 112 - main/src/control/ivug-ext-ug.c | 75 - main/src/control/ivug-ext-ug.h | 34 - main/src/control/ivug-main.c | 258 --- main/src/control/ivug-main.h | 44 - main/src/control/ivug-parameter.c | 271 ++- main/src/control/ivug-parameter.h | 87 +- main/src/control/ivug-uuid.c | 94 - main/src/control/ivug-uuid.h | 52 - main/src/data/ivug-data-filter.c | 101 - main/src/data/ivug-data-filter.h | 56 - main/src/data/ivug-data-list.c | 282 --- main/src/data/ivug-data-list.h | 40 - main/src/data/ivug-data-priv.h | 61 - main/src/data/ivug-data-shuffle.c | 238 --- main/src/data/ivug-data-shuffle.h | 54 - main/src/data/ivug-data.c | 683 ------ main/src/data/ivug-data.h | 85 - main/src/data/ivug-mediadata.c | 301 --- main/src/data/ivug-mediadata.h | 87 - main/src/effect/include/ivug-anim.h | 56 - main/src/effect/include/ivug-effect.h | 90 - main/src/effect/ivug-anim.c | 178 -- main/src/effect/ivug-effect.c | 201 -- main/src/effect/ivug-slide.c | 107 - main/src/effect/template.c | 83 - main/src/ug-image-viewer.c | 387 +++- main/src/ug-image-viewer.h | 35 +- main/src/util/ivug-file-info.c | 403 ---- main/src/util/ivug-file-info.h | 57 - main/src/util/ivug-listpopup.c | 274 --- main/src/util/ivug-listpopup.h | 81 - main/src/util/ivug-util.c | 286 --- main/src/util/ivug-util.h | 78 - main/src/util/ivug-widget.c | 209 -- main/src/util/ivug-widget.h | 68 - main/src/view/ivug-detail-info.c | 437 ---- main/src/view/ivug-detail-info.h | 80 - main/src/view/ivug-details-view.c | 300 ++- main/src/view/ivug-details-view.h | 64 - main/src/view/ivug-main-view.c | 1837 ---------------- main/src/view/ivug-main-view.h | 133 -- main/src/view/ivug-popup.c | 262 --- main/src/view/ivug-popup.h | 60 - main/src/view/ivug-setas-view.c | 1013 ++++----- main/src/view/ivug-setas-view.h | 97 - main/src/view/ivug-slider-item.c | 703 ------ main/src/view/ivug-slider-item.h | 137 -- main/src/view/ivug-slider-mouse.c | 439 ---- main/src/view/ivug-slider-priv.h | 164 -- main/src/view/ivug-slider-slideshow.c | 334 --- main/src/view/ivug-slider.c | 1245 ----------- main/src/view/ivug-slider.h | 95 - packaging/ug-image-viewer-efl.spec | 81 +- 138 files changed, 5294 insertions(+), 15660 deletions(-) mode change 100644 => 100755 NOTICE delete mode 100755 common/NOTICE delete mode 100755 debian/changelog delete mode 100755 debian/compat delete mode 100755 debian/control delete mode 100755 debian/libug-image-viewer-efl.install.in delete mode 100755 debian/libug-image-viewer-efl.postinst delete mode 100755 debian/rules delete mode 100755 main/NOTICE delete mode 100755 main/layout/images/T01_btn_cancel.png delete mode 100755 main/layout/images/T01_btn_cancel_press.png delete mode 100755 main/layout/images/T01_btn_ok.png delete mode 100755 main/layout/images/T01_btn_ok_dim.png delete mode 100755 main/layout/images/T01_btn_ok_press.png delete mode 100755 main/layout/images/gray-theme/00_winset_btn_prev.png delete mode 100755 main/layout/images/gray-theme/I01_control_top_bg.png delete mode 100755 main/layout/images/gray-theme/T01_Option_header_bt.png delete mode 100755 main/layout/images/gray-theme/T01_Option_header_bt_dim.png delete mode 100755 main/layout/images/gray-theme/T01_Option_header_bt_press.png delete mode 100755 main/layout/images/gray-theme/T01_btn_prev.png delete mode 100755 main/layout/images/gray-theme/T01_control_top_arrow.png delete mode 100755 main/layout/images/gray-theme/T01_control_top_bg.png delete mode 100755 main/layout/images/gray-theme/T01_title_btn.png delete mode 100755 main/layout/images/gray-theme/T01_title_btn_press.png delete mode 100755 main/layout/images/gray-theme/T01_toolbar_bg.png delete mode 100755 main/layout/images/gray-theme/T01_toolbar_press.png delete mode 100755 main/layout/images/gray-theme/magnifier.png delete mode 100755 main/layout/images/gray-theme/magnifier_line.png delete mode 100755 main/layout/images/gray-theme/magnifier_noarrow.png delete mode 100755 main/layout/images/gray-theme/magnifier_noarrow_line.png delete mode 100755 main/layout/images/gray-theme/reader_handler_down.png delete mode 100755 main/layout/images/gray-theme/reader_handler_up.png delete mode 100755 main/layout/images/gray-theme/reader_longtap_blue.png delete mode 100755 main/layout/ivug-button.edc delete mode 100755 main/layout/ivug-toolbar.edc delete mode 100755 main/res/images/01_Control icon/T01_controlbar_icon_info.png delete mode 100755 main/res/images/T01_Nocontents_broken.png delete mode 100755 main/src/common/ivug-common.h delete mode 100755 main/src/common/ivug-config.c delete mode 100755 main/src/common/ivug-config.h delete mode 100755 main/src/common/ivug-datatypes.h delete mode 100755 main/src/common/ivug-define.h delete mode 100755 main/src/common/ivug-string.h delete mode 100755 main/src/control/ivug-ext-ug.c delete mode 100755 main/src/control/ivug-ext-ug.h delete mode 100755 main/src/control/ivug-main.c delete mode 100755 main/src/control/ivug-main.h delete mode 100755 main/src/control/ivug-uuid.c delete mode 100755 main/src/control/ivug-uuid.h delete mode 100755 main/src/data/ivug-data-filter.c delete mode 100755 main/src/data/ivug-data-filter.h delete mode 100755 main/src/data/ivug-data-list.c delete mode 100755 main/src/data/ivug-data-list.h delete mode 100755 main/src/data/ivug-data-priv.h delete mode 100755 main/src/data/ivug-data-shuffle.c delete mode 100755 main/src/data/ivug-data-shuffle.h delete mode 100755 main/src/data/ivug-data.c delete mode 100755 main/src/data/ivug-data.h delete mode 100755 main/src/data/ivug-mediadata.c delete mode 100755 main/src/data/ivug-mediadata.h delete mode 100755 main/src/effect/include/ivug-anim.h delete mode 100755 main/src/effect/include/ivug-effect.h delete mode 100755 main/src/effect/ivug-anim.c delete mode 100755 main/src/effect/ivug-effect.c delete mode 100755 main/src/effect/ivug-slide.c delete mode 100755 main/src/effect/template.c delete mode 100755 main/src/util/ivug-file-info.c delete mode 100755 main/src/util/ivug-file-info.h delete mode 100755 main/src/util/ivug-listpopup.c delete mode 100755 main/src/util/ivug-listpopup.h delete mode 100755 main/src/util/ivug-util.c delete mode 100755 main/src/util/ivug-util.h delete mode 100755 main/src/util/ivug-widget.c delete mode 100755 main/src/util/ivug-widget.h delete mode 100755 main/src/view/ivug-detail-info.c delete mode 100755 main/src/view/ivug-detail-info.h delete mode 100755 main/src/view/ivug-details-view.h delete mode 100755 main/src/view/ivug-main-view.c delete mode 100755 main/src/view/ivug-main-view.h delete mode 100755 main/src/view/ivug-popup.c delete mode 100755 main/src/view/ivug-popup.h delete mode 100755 main/src/view/ivug-setas-view.h delete mode 100755 main/src/view/ivug-slider-item.c delete mode 100755 main/src/view/ivug-slider-item.h delete mode 100755 main/src/view/ivug-slider-mouse.c delete mode 100755 main/src/view/ivug-slider-priv.h delete mode 100755 main/src/view/ivug-slider-slideshow.c delete mode 100755 main/src/view/ivug-slider.c delete mode 100755 main/src/view/ivug-slider.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 8a20194..9b7858c 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,10 +1,52 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.6) -SET(CMAKE_SOURCE_COMMON_DIR "${CMAKE_SOURCE_DIR}/common") -SET(CMAKE_SOURCE_WIDGET_DIR "${CMAKE_SOURCE_DIR}/widget") -SET(CMAKE_SOURCE_MAIN_DIR "${CMAKE_SOURCE_DIR}/main") +SET(IVUG_PACKAGE_NAME "ug-image-viewer-efl") -ADD_SUBDIRECTORY(common) -ADD_SUBDIRECTORY(main) +# BUILD_TC can have TRUE or FALSE +SET(BUILD_TC FALSE) + +IF("${ARCH}" STREQUAL "arm") + ADD_DEFINITIONS("-DTARGET") +ENDIF("${ARCH}" STREQUAL "arm") + +ADD_DEFINITIONS("-DDATADIR=\"${CMAKE_DATA_DIR}\"") +ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"") +ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"") +ADD_DEFINITIONS("-DPACKAGE=\"${IVUG_PACKAGE_NAME}\"") + +SET(IVUG_SOURCE_COMMON_DIR "${CMAKE_SOURCE_DIR}/common") +SET(IVUG_SOURCE_WIDGET_DIR "${CMAKE_SOURCE_DIR}/widget") +SET(IVUG_SOURCE_MAIN_DIR "${CMAKE_SOURCE_DIR}/main") +SET(IVUG_SOURCE_MEDIA_DIR "${CMAKE_SOURCE_DIR}/medialist") +SET(IVUG_SOURCE_SLIDESHOW_DIR "${CMAKE_SOURCE_DIR}/slideshow") +SET(IVUG_SOURCE_FEATURE_DIR "${CMAKE_SOURCE_DIR}/feature") +FUNCTION (BUILD_EDJ _in _out _base _dir) + ADD_CUSTOM_TARGET(${_out} + COMMAND + edje_cc -id ${_base}/${_dir} + ${CMAKE_CURRENT_SOURCE_DIR}/${_base}/${_in} + ${CMAKE_CURRENT_SOURCE_DIR}/${_base}/${_out} + DEPENDS + ${CMAKE_CURRENT_SOURCE_DIR}/${_base}/${_in} + ) + ADD_DEPENDENCIES(${PROJECT_NAME} ${_out}) + INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${_base}/${_out} DESTINATION ${CMAKE_INSTALL_PREFIX}/res/edje/${IVUG_PACKAGE_NAME}) +ENDFUNCTION (BUILD_EDJ) + +INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/res/images/ DESTINATION ${CMAKE_INSTALL_PREFIX}/res/images/${IVUG_PACKAGE_NAME}) + +#CONFIGURE_FILE(${IVUG_PACKAGE_NAME}.desktop.in ${CMAKE_BINARY_DIR}/${IVUG_PACKAGE_NAME}.desktop) +#INSTALL(FILES ${CMAKE_BINARY_DIR}/${IVUG_PACKAGE_NAME}.desktop DESTINATION /opt/share/applications) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/res/manifest/${IVUG_PACKAGE_NAME}.xml DESTINATION /opt/share/packages) + +ADD_SUBDIRECTORY(main) +ADD_SUBDIRECTORY(common) +ADD_SUBDIRECTORY(medialist) +ADD_SUBDIRECTORY(widget) +ADD_SUBDIRECTORY(slideshow) +ADD_SUBDIRECTORY(feature) +IF (BUILD_TC) + ADD_SUBDIRECTORY(TC) +ENDIF() diff --git a/NOTICE b/NOTICE old mode 100644 new mode 100755 diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index fca8475..f51ffea 100755 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -8,33 +8,55 @@ SET(SRCS src/ivug-mouse-event.c src/debug.c src/statistics.c + src/ivug-uuid.c + src/ivug-util.c + src/ivug-drm.c + src/ivug-file-info.c + src/ivug-callback.c + src/ivug-config.c + src/ivug-message.c + src/ivug-exif.c + src/ivug-db.c ) INCLUDE_DIRECTORIES( - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}/include + ${CMAKE_SOURCE_DIR}/include + include + src ) +MESSAGE("Checking " ${PROJECT_NAME} ) + INCLUDE(FindPkgConfig) -pkg_check_modules(commonpkgs REQUIRED +pkg_check_modules(${PROJECT_NAME}_pkgs REQUIRED elementary evas - ui-gadget + ecore-evas + ecore-file + efreet-mime dlog + drm-client + libexif + vconf + capi-system-power + capi-media-metadata-extractor + capi-content-mime-type + capi-content-media-content ) -FOREACH(flag ${commonpkgs_CFLAGS}) +FOREACH(flag ${${PROJECT_NAME}_pkgs_CFLAGS}) SET(EXTRA_CXXFLAGS "${EXTRA_CXXFLAGS} ${flag}") ENDFOREACH(flag) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CXXFLAGS} -Wall") -SET(CMAKE_C_FLAGS ${CMAKE_CXX_FLAGS}) +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_CXX_FLAGS}") ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"") ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS}) SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${VERSION} ) -TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${commonpkgs_LDFLAGS} -lm ) + +TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${${PROJECT_NAME}_pkgs_LDFLAGS}) INSTALL(TARGETS ${PROJECT_NAME} DESTINATION lib) diff --git a/common/NOTICE b/common/NOTICE deleted file mode 100755 index ded3804..0000000 --- a/common/NOTICE +++ /dev/null @@ -1 +0,0 @@ -Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. \ No newline at end of file diff --git a/common/include/debug.h b/common/include/debug.h index 4f6bf64..daa8583 100755 --- a/common/include/debug.h +++ b/common/include/debug.h @@ -1,19 +1,18 @@ -/* - * 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 __ELM_MYPHOTOCAM_DEBUG_H__ #define __ELM_MYPHOTOCAM_DEBUG_H__ @@ -97,6 +96,8 @@ enum extern "C" { #endif +#undef DISABLE_LOG + // Time analyzer #define DEFINE_PERFORM_TIME(aa) long aa = 0; struct timeval tv @@ -122,7 +123,19 @@ typedef struct { unsigned long time; } debug_msg_type; -void _custom_debug_msg(debug_msg_type *debug_msg, const char *msg, ...); +void __custom_debug_msg(debug_msg_type *debug_msg, const char *msg, ...); + +#ifdef DISABLE_LOG + +#define __MSG_FATAL(level, szCat, ...) +#define __MSG_ERROR(level, szCat, ...) +#define __MSG_WARN(level, szCat, ...) +#define __MSG_HIGH(level, szCat, ...) +#define __MSG_MED(level, szCat, ...) +#define __MSG_LOW(level, szCat, ...) +#define __MSG_DEBUG(level, szCat, ...) + +#else // DISABLE_LOG /* coverity[+kill] */ #define __MSG_FATAL(level, szCat, ...) \ @@ -136,7 +149,7 @@ void _custom_debug_msg(debug_msg_type *debug_msg, const char *msg, ...); DBG_MSG_FATAL, \ "FATAL", \ }; \ - _custom_debug_msg(&msg______unique______name___, ##__VA_ARGS__); \ + __custom_debug_msg(&msg______unique______name___, ##__VA_ARGS__); \ } \ } while(0) @@ -151,7 +164,7 @@ void _custom_debug_msg(debug_msg_type *debug_msg, const char *msg, ...); DBG_MSG_ERROR, \ "ERROR", \ }; \ - _custom_debug_msg(&msg______unique______name___, ##__VA_ARGS__); \ + __custom_debug_msg(&msg______unique______name___, ##__VA_ARGS__); \ } \ } while(0) @@ -167,7 +180,7 @@ void _custom_debug_msg(debug_msg_type *debug_msg, const char *msg, ...); DBG_MSG_WARN, \ "WARN", \ }; \ - _custom_debug_msg(&msg______unique______name___, ##__VA_ARGS__); \ + __custom_debug_msg(&msg______unique______name___, ##__VA_ARGS__); \ } \ } while(0) @@ -182,7 +195,7 @@ void _custom_debug_msg(debug_msg_type *debug_msg, const char *msg, ...); DBG_MSG_HIGH, \ "HIGH", \ }; \ - _custom_debug_msg(&msg______unique______name___, ##__VA_ARGS__); \ + __custom_debug_msg(&msg______unique______name___, ##__VA_ARGS__); \ } \ } while(0) @@ -197,7 +210,7 @@ void _custom_debug_msg(debug_msg_type *debug_msg, const char *msg, ...); DBG_MSG_MED, \ "MED", \ }; \ - _custom_debug_msg(&msg______unique______name___, ##__VA_ARGS__); \ + __custom_debug_msg(&msg______unique______name___, ##__VA_ARGS__); \ } \ } while(0) @@ -213,10 +226,27 @@ void _custom_debug_msg(debug_msg_type *debug_msg, const char *msg, ...); DBG_MSG_LOW, \ "LOW", \ }; \ - _custom_debug_msg(&msg______unique______name___, ##__VA_ARGS__); \ + __custom_debug_msg(&msg______unique______name___, ##__VA_ARGS__); \ } \ } while(0) +#define __MSG_DBG(level, szCat, ...) \ + do { \ + if ((level) & DBG_MSG_BIT_CUST13) \ + { \ + static debug_msg_type msg______unique______name___ = { \ + __FILE__, \ + __LINE__, \ + szCat, \ + DBG_MSG_BIT_CUST13, \ + "DBG", \ + }; \ + __custom_debug_msg(&msg______unique______name___, ##__VA_ARGS__); \ + } \ + } while(0) + + +#endif // DISABLE_LOG #define ASSERT(level, szCat, expr) \ do { \ diff --git a/common/include/ivug-debug.h b/common/include/ivug-debug.h index fae7537..94621ce 100755 --- a/common/include/ivug-debug.h +++ b/common/include/ivug-debug.h @@ -1,27 +1,57 @@ -/* - * 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 _IVUG_DEBUG_H_ #define _IVUG_DEBUG_H_ #include +#include "statistics.h" #define IVUG_LOG_OUTPUT_DLOG +#define PERF_TIME + +#define LVL0 (0) +#define LVL1 (1) +#define LVL2 (2) +#define LVL3 (3) +#define LVL4 (4) +#define LVL5 (5) +#define LVL6 (6) +#define LVL7 (7) + +#ifdef PERF_TIME + +// accum item handling +#define PERF_CHECK_BEGIN(lvl, name) iv_ta_accum_item_begin(lvl, name,false,__FILE__,__LINE__) +#define PERF_CHECK_END(lvl, name) iv_ta_accum_item_end(lvl, name,false,__FILE__,__LINE__) + +// Print out +#define PERF_SHOW_RESULT(fp) iv_ta_accum_show_result_fp(fp) + +#else + +#define PERF_CHECK_BEGIN(lvl, name) +#define PERF_CHECK_END(lvl, name) + +// Print out +#define PERF_SHOW_RESULT(fp) + +#endif // PERF_TIME + enum { IVUG_MSG_COLOR_DEFAULT = 0, IVUG_MSG_COLOR_BLACK = 30, @@ -34,6 +64,7 @@ enum { IVUG_MSG_COLOR_WHITE = 37, }; + #ifdef IVUG_LOG_OUTPUT_DLOG #undef LOG_TAG @@ -48,8 +79,8 @@ enum { #define IVUG_DEBUG_MSG(fmt, arg...) fprintf(stdout, "[D: %s : %05d]" fmt "\n", __func__, __LINE__, ##arg) #define IVUG_DEBUG_WARNING(fmt, arg...) fprintf(stdout, "[W: %s : %05d]" fmt "\n", __func__, __LINE__, ##arg) #define IVUG_DEBUG_ERROR(fmt, arg...) fprintf(stdout, "[E: %s : %05d]" fmt "\n", __func__, __LINE__ , ##arg) -#define IVUG_DEBUG_CRITICAL(fmt, arg...) fprintf(stdout, "[E: %s : %05d]" fmt "\n", __func__, __LINE__ , ##arg) -#define IVUG_DEBUG_PRINT(fmt,arg...) fprintf(stdout, "[%s : %05d] >>> leave \n", __func__, __LINE__ , ##arg) +#define IVUG_DEBUG_CRITICAL(fmt, arg...) fprintf(stdout, "[E: %s : %05d]" fmt "\n", __func__, __LINE__ , ##arg) +#define IVUG_DEBUG_PRINT(fmt,arg...) fprintf(stdout, "[%s : %05d] >>> leave \n", __func__, __LINE__ , ##arg) #endif //IVUG_LOG_OUTPUT_DLOG @@ -204,18 +235,29 @@ enum { #define MSG_SLIST_MED(...) __MSG_MED(LVL_SLIST_ITEM, SLIST_ITEM_SZ, ##__VA_ARGS__) #define MSG_SLIST_LOW(...) __MSG_LOW(LVL_SLIST_ITEM, SLIST_ITEM_SZ, ##__VA_ARGS__) - #define IV_ASSERT(expr) ASSERT(DBG_MSG_LVL_ALL, "IV-COMMON", expr) +#define MSG_ASSERT(expr) ASSERT(DBG_MSG_LVL_ALL, LOG_CAT, expr) + +#define MSG_FATAL(...) __MSG_FATAL(LOG_LVL, LOG_CAT, ##__VA_ARGS__) +#define MSG_WARN(...) __MSG_ERROR(LOG_LVL, LOG_CAT, ##__VA_ARGS__) +#define MSG_ERROR(...) __MSG_WARN(LOG_LVL, LOG_CAT, ##__VA_ARGS__) +#define MSG_HIGH(...) __MSG_HIGH(LOG_LVL, LOG_CAT, ##__VA_ARGS__) +#define MSG_MED(...) __MSG_MED(LOG_LVL, LOG_CAT, ##__VA_ARGS__) +#define MSG_LOW(...) __MSG_LOW(LOG_LVL, LOG_CAT, ##__VA_ARGS__) +#define MSG_DEBUG(...) __MSG_DBG(LOG_LVL, LOG_CAT, ##__VA_ARGS__) + +//expr check statements. +// Will deprecated #define IVUG_FUNC_ENTER() MSG_IVUG_HIGH("ENTER %s(L%d)", __func__, __LINE__) #define IVUG_FUNC_LEAVE() MSG_IVUG_HIGH("LEAVE %s(L%d)", __func__, __LINE__) -//expr check statements + #define ivug_ret_if(expr) \ do { \ if(expr) { \ - MSG_IMAGEVIEW_WARN("[%s] Return", #expr );\ + MSG_IVUG_ERROR("[%s] Return", #expr );\ return; \ } \ } while (0) @@ -223,7 +265,7 @@ enum { #define ivug_retv_if(expr, val) \ do { \ if(expr) { \ - MSG_IMAGEVIEW_WARN("[%s] Return value %d", #expr, val );\ + MSG_IVUG_ERROR("[%s] Return value %d", #expr, val );\ return (val); \ } \ } while (0) @@ -231,7 +273,7 @@ enum { #define ivug_retm_if(expr, fmt, args...) \ do { \ if(expr) { \ - MSG_IMAGEVIEW_WARN("[%s] Return, message "fmt, #expr, ##args );\ + MSG_IVUG_ERROR("[%s] Return, message "fmt, #expr, ##args );\ return; \ } \ } while (0) @@ -239,12 +281,30 @@ enum { #define ivug_retvm_if(expr, val, fmt, args...) \ do { \ if(expr) { \ - MSG_IMAGEVIEW_WARN("[%s] Return value, message "fmt, #expr, ##args );\ + MSG_IVUG_ERROR("[%s] Return value, message "fmt, #expr, ##args );\ return (val); \ } \ } while (0) +// Use this instead of ivug_ret_if + +#define IV_RET_IF(expr, fmt, args...) \ + do { \ + if(expr) { \ + MSG_IVUG_FATAL("[%s] Return, message "fmt, #expr, ##args );\ + return; \ + } \ + } while (0) + +#define IV_RETV_IF(expr, val, fmt, args...) \ + do { \ + if(expr) { \ + MSG_IVUG_FATAL("[%s] Return value, message "fmt, #expr, ##args );\ + return (val); \ + } \ + } while (0) + #include "debug.h" diff --git a/common/include/ivug-mouse-event.h b/common/include/ivug-mouse-event.h index 40ecc5a..cc2832a 100755 --- a/common/include/ivug-mouse-event.h +++ b/common/include/ivug-mouse-event.h @@ -1,19 +1,18 @@ -/* - * 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. + */ #pragma once @@ -36,13 +35,25 @@ typedef struct { void (*onMouseUp)(Evas_Object *obj, MouseEvent *up, void *data); void (*onMouseMove)(Evas_Object *obj, MouseEvent *prev, MouseEvent *cur, void *data); + void (*onPinchStart)(Evas_Object *obj, MouseEvent *center, int dist, void *data); + void (*onPinchMove)(Evas_Object *obj, MouseEvent *center, int dist, void *data); + void (*onPinchEnd)(Evas_Object *obj, MouseEvent *end, void *data); // Is it really needed???? + } mouse_callback_t; typedef void *Ivug_Event_Handle; +#ifdef __cplusplus +extern "C" { +#endif + Ivug_Event_Handle ivug_mouse_event_add(Evas_Object *obj, mouse_callback_t *pCallback, void *client_data, const char *alias /* for debugging*/); void ivug_mouse_event_del(Ivug_Event_Handle handle); +#ifdef __cplusplus +} +#endif + diff --git a/common/include/statistics.h b/common/include/statistics.h index 3ef8df9..fa455de 100755 --- a/common/include/statistics.h +++ b/common/include/statistics.h @@ -1,71 +1,40 @@ -/* - * 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 __ELM_MYPHOTOCAM_STATISTICS_H__ -#define __ELM_MYPHOTOCAM_STATISTICS_H__ +/* + * 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 __STATISTICS_H__ +#define __STATISTICS_H__ #include #include -#define PERF_TIME - -#define LVL1 " " -#define LVL2 " " -#define LVL3 " " -#define LVL4 " " -#define LVL5 " " -#define LVL6 " " - - #ifdef __cplusplus extern "C" { #endif -int mm_ta_accum_item_begin(const char* name, bool show, const char* filename, int line); -int mm_ta_accum_item_end(const char* name, bool show, const char* filename, int line); -void mm_ta_accum_show_result_fp(FILE *fp); - -int PERF_INIT(); -int PERF_DEINIT(); - -#ifdef PERF_TIME - -// accum item handling -#define PERF_CHECK_BEGIN(name) mm_ta_accum_item_begin(name,false,__FILE__,__LINE__) -#define PERF_CHECK_END(name) mm_ta_accum_item_end(name,false,__FILE__,__LINE__) - -// Print out -#define PERF_SHOW_RESULT(fp) mm_ta_accum_show_result_fp(fp) - -#else - -#define PERF_CHECK_BEGIN(name) -#define PERF_CHECK_END(name) - -// Print out -#define PERF_SHOW_RESULT(fp) - +int iv_ta_accum_item_begin(int lvl, const char* name, bool show, const char* filename, int line); +int iv_ta_accum_item_end(int lvl, const char* name, bool show, const char* filename, int line); +void iv_ta_accum_show_result_fp(FILE *fp); -#endif // PERF_TIME +int IV_PERF_INIT(); +int IV_PERF_DEINIT(); #ifdef __cplusplus } #endif -#endif /* __ELM_MYPHOTOCAM_STATISTICS_H__ */ +#endif /* __STATISTICS_H__ */ diff --git a/common/src/debug.c b/common/src/debug.c index 800d69a..2dc7e7c 100755 --- a/common/src/debug.c +++ b/common/src/debug.c @@ -1,19 +1,18 @@ -/* - * 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 @@ -102,30 +101,16 @@ static unsigned long get_sys_elapsed_time(void) return ((current_time.tv_sec * 1E3 + current_time.tv_usec / 1E3) - (init_time.tv_sec * 1E3 + init_time.tv_usec / 1E3)); } -char *get_fmt_string__inline (const char *msg, va_list va) -{ -#define MAX_CHAR_PER_LINE ( 1024 ) - - static char szPrint[MAX_CHAR_PER_LINE]; - - vsnprintf(szPrint, 1024, msg, va); - - return szPrint; -} - - void _custom_debug_init() { get_sys_elapsed_time(); } - void _custom_debug_deinit() { } - void _custom_err_trace_write( const char *func_name, int line_num, const char *fmt, ... ) { @@ -240,7 +225,7 @@ DBG_MSG_CUST13 = 14, -void _custom_debug_msg(debug_msg_type *debug_msg, const char *msg, ...) +void __custom_debug_msg(debug_msg_type *debug_msg, const char *msg, ...) { va_list va; @@ -270,7 +255,7 @@ void _custom_debug_msg(debug_msg_type *debug_msg, const char *msg, ...) if ( _DEBUG_OUTPUT_DIRECTION & _DEBUG_OUTPUT_DIRECTION_CONSOLE ) { - printf(_DEBUG_PREFIX"%s[F:%-16.16s L:%5d][%s:%s] ",time_string , pFileName, debug_msg->nline , debug_msg->szcategory, level ); + printf(_DEBUG_PREFIX"%s[F:%-16.16s L:%5d][%s:%s] ", time_string , pFileName, debug_msg->nline , debug_msg->szcategory, level ); vprintf(msg, va); printf("\n"); } @@ -291,6 +276,14 @@ void _custom_debug_msg(debug_msg_type *debug_msg, const char *msg, ...) // vprint_log(prio,_DEBUG_MODULE, msg, va); } +#if 0 + if ( _DEBUG_OUTPUT_DIRECTION & _DEBUG_OUTPUT_DIRECTION_FILE ) + { + fprintf(_DEBUG_PREFIX"%s[F:%-16.16s L:%5d][%s:%s] ",time_string , pFileName, debug_msg->nline , szCategory[debug_msg->category], level ); + vprintf(msg, va); + fprintf("\n"); + } +#endif va_end(va); if ( G_UNLIKELY(debug_msg->msg_level == DBG_MSG_FATAL) ) diff --git a/common/src/ivug-mouse-event.c b/common/src/ivug-mouse-event.c index db3e52c..e58240a 100755 --- a/common/src/ivug-mouse-event.c +++ b/common/src/ivug-mouse-event.c @@ -1,19 +1,18 @@ -/* - * 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 @@ -32,12 +31,16 @@ typedef enum { MOUSE_DOWN_UNKNWON, MOUSE_DOWN_NONE, MOUSE_DOWN_1, - MOUSE_DOWN_ERROR, // Error + MOUSE_DOWN_2, + MOUSE_DOWN_3, + MOUSE_DOWN_4, // Invalid state. } MouseState; + #define INVALID_DEVICE_ID (-1) -#define NUM_MAX_BUTTON (1) +#define MULTI_INDEX (9) +#define NUM_MAX_BUTTON (3) typedef struct _mouse_data_t{ void *pClientData; @@ -56,8 +59,12 @@ typedef struct _mouse_data_t{ unsigned int prev_dist; - MouseEvent center; + int multi_min_idx; // multi min index is different in each target. Temp solution + bool bSendPinchStart; + + MouseEvent center; + int pinch_dist; // For debugging purpose, later will be removed. char alias[100]; // } mouse_data_t; @@ -67,6 +74,15 @@ typedef struct _mouse_data_t{ #define __UNUSED__ __attribute__((unused)) #endif +static unsigned int _get_distance(int prevX, int prevY, int X, int Y) +{ +#include + int dx = prevX - X; + int dy = prevY - Y; + + return sqrt(dx*dx + dy*dy); +} + static void _on_mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj, void *event_info) { if ( data == NULL ) @@ -116,6 +132,55 @@ static void _on_mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj, MSG_MOUSE_MED("Func:%s Device=%d XY(%d,%d)", "_on_mouse_down", pressed, ev->x , ev->y ); } + else if ( pData->m_state == MOUSE_DOWN_2 ) + { + MouseEvent *other = NULL; + + if ( pData->bDown[ (pressed + 1) % NUM_MAX_BUTTON] == true ) + { + other = &pData->event[(pressed + 1) % NUM_MAX_BUTTON]; + } + + if ( pData->bDown[(pressed + 2) % NUM_MAX_BUTTON] == true ) + { + if ( other != NULL ) + { + MSG_MOUSE_ERROR("Error!!!"); + } + other = &pData->event[(pressed + 2) % NUM_MAX_BUTTON]; + } + + if ( other == NULL ) + { + MSG_MOUSE_ERROR("[%s] Error! Pressed(%d,%d,%d)", pData->alias, + pData->bDown[0], + pData->bDown[1], + pData->bDown[2]); + + return ; // Fix for B/S + } + + int centerX = ( other->x + ev->x ) / 2; + int centerY = ( other->y + ev->y ) / 2; + + int dist = _get_distance(other->x, other->y, ev->x, ev->y); + + MSG_MOUSE_HIGH("[%s] Callback PinchStart : Dev=%d OtherDev=%d Center(%d,%d) Dist=%d", pData->alias, ev->device, other->device, centerX, centerY, dist); + + if ( pData->cb.onPinchStart ) + { + pData->center.x = centerX; + pData->center.y = centerY; + pData->center.timestamp = ev->timestamp; + pData->pinch_dist = dist; + + (pData->cb.onPinchStart)(pData->obj, &pData->center, dist, pData->pClientData); + } + + pData->prev_dist = dist; + + MSG_MOUSE_HIGH("[%s] Two fingure is clicked. Distance=%d", pData->alias, pData->prev_dist); + } else { MSG_MOUSE_WARN("[%s] Ignore third finger! State=%d Dev=%d bPressed(%d,%d,%d)", pData->alias, pData->m_state, ev->device, @@ -189,7 +254,17 @@ static void _on_mouse_up(void *data, Evas *evas __UNUSED__, Evas_Object *obj, vo pData->bDown[pressed] = false; - if ( pData->m_state == MOUSE_DOWN_NONE ) + if ( pData->m_state == MOUSE_DOWN_1 ) + { + MSG_MOUSE_HIGH("[%s] Callback Pinch End", pData->alias); + + if ( pData->cb.onPinchEnd ) + { + pData->bSendPinchStart = false; + (pData->cb.onPinchEnd)(pData->obj, ev, pData->pClientData); + } + } + else if ( pData->m_state == MOUSE_DOWN_NONE ) { MSG_MOUSE_HIGH("[%s] Callback Mouse Up : Dev=%d (%d,%d)", pData->alias, ev->device, ev->x, ev->y); @@ -248,25 +323,83 @@ static void _on_mouse_move(void *data, Evas *evas __UNUSED__, Evas_Object *obj, switch ( pData->m_state ) { - case MOUSE_DOWN_1: + case MOUSE_DOWN_3: + // Ignore Mouse Event when all 3 buttons is pressed. + return ; + case MOUSE_DOWN_2: + { + MouseEvent *other = NULL; + + if ( pData->bDown[ (pressed + 1) % NUM_MAX_BUTTON] == true ) { - MSG_MOUSE_MED("Func:%s. Device=%d Old(%d,%d) Cur(%d,%d)", __FUNCTION__, pressed, - pData->event[pressed].x, pData->event[pressed].y, - ev->x , ev->y); + other = &pData->event[(pressed + 1) % NUM_MAX_BUTTON]; + } - if ( pData->cb.onMouseMove ) + if ( pData->bDown[(pressed + 2) % NUM_MAX_BUTTON] == true ) + { + if ( other != NULL ) { - MSG_MOUSE_MED("[%s] Callback Mouse Move : (%d,%d)", pData->alias, ev->x, ev->y); - (pData->cb.onMouseMove)(pData->obj, &pData->event[pressed], ev, pData->pClientData); + MSG_MOUSE_ERROR("Debug me!!!"); } + other = &pData->event[(pressed + 2) % NUM_MAX_BUTTON]; + } + + if ( other == NULL ) + { + MSG_MOUSE_ERROR("[%s] Error! Pressed(%d,%d,%d)", pData->alias, + pData->bDown[0], + pData->bDown[1], + pData->bDown[2]); + + // TODO : Recover. + return; + } - pData->event[pressed] = *ev; + int centerX = ( other->x + ev->x ) / 2; + int centerY = ( other->y + ev->y ) / 2; - break; + int dist = _get_distance(other->x, other->y, ev->x, ev->y); + + if ( pData->cb.onPinchMove ) + { + MSG_MOUSE_MED("Callback Pinch : (%d,%d) dDistance=%d", centerX, centerY, dist - pData->prev_dist); + + pData->center.x = centerX; + pData->center.y = centerY; + pData->center.timestamp = ev->timestamp; + pData->pinch_dist = dist; + + (pData->cb.onPinchMove)(pData->obj, &pData->center, pData->pinch_dist , pData->pClientData); + } + + pData->prev_dist = dist; + + MSG_MOUSE_LOW("Pinch zoom. Pos1(%d,%d) Pos2(%d,%d) Delta=%d", other->x, other->y, ev->x, ev->y, pData->prev_dist); + + pData->event[pressed] = *ev; + + return ; + } + break; + case MOUSE_DOWN_1: + { + MSG_MOUSE_MED("Func:%s. Device=%d Old(%d,%d) Cur(%d,%d)", __FUNCTION__, pressed, + pData->event[pressed].x, pData->event[pressed].y, + ev->x , ev->y); + + if ( pData->cb.onMouseMove ) + { + MSG_MOUSE_MED("[%s] Callback Mouse Move : (%d,%d)", pData->alias, ev->x, ev->y); + (pData->cb.onMouseMove)(pData->obj, &pData->event[pressed], ev, pData->pClientData); } - default: - MSG_MOUSE_ERROR("[%s] Something wrong. state=%d", pData->alias, pData->m_state); - break; + + pData->event[pressed] = *ev; + + break; + } + default: + MSG_MOUSE_ERROR("[%s] Something wrong. state=%d", pData->alias, pData->m_state); + break; } @@ -333,6 +466,102 @@ static void _proxy_on_mouse_move(void *data, Evas *evas __UNUSED__, Evas_Object } +static void _proxy_on_mouse_multi_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj, void *event_info) +{ + Evas_Event_Multi_Down *ev = event_info; + mouse_data_t *pData = data; + + MouseEvent event; + + if ( pData->multi_min_idx == INVALID_DEVICE_ID) + { + MSG_MOUSE_HIGH("[%s] Min Device Index=%d", pData->alias, ev->device); + pData->multi_min_idx = ev->device -1; // Index start from 0. so -1 is needed + } + + event.device = ev->device - pData->multi_min_idx; // ev->device is 10(for second), 11(3rd), 12(4th) finger + event.timestamp = ev->timestamp; + event.x = ev->canvas.x; + event.y = ev->canvas.y; + event.button_flags = 0; + event.event_flags = ev->event_flags; + + + if(event.device >= NUM_MAX_BUTTON) + { + MSG_MOUSE_FATAL("[%s] Invalid Device. Dev=%d Min=%d", pData->alias, event.device, pData->multi_min_idx); + return; + } + + MSG_MOUSE_MED("%s Dev=%d", __func__, ev->device); + + _on_mouse_down(data, NULL, obj, (void *)&event); +} + +static void _proxy_on_mouse_multi_up(void *data, Evas *evas __UNUSED__, Evas_Object *obj, void *event_info) +{ + Evas_Event_Multi_Up *ev = event_info; + mouse_data_t *pData = data; + + MouseEvent event; + + if ( pData->multi_min_idx == INVALID_DEVICE_ID) + { + // Sometimes Multi up came ealry + MSG_MOUSE_HIGH("[%s] Min Device Index=%d", pData->alias, ev->device); + pData->multi_min_idx = ev->device -1; // Index start from 0. so -1 is needed + } + + event.device = ev->device - pData->multi_min_idx; + event.timestamp = ev->timestamp; + event.x = ev->canvas.x; + event.y = ev->canvas.y; + event.button_flags = 0; + event.event_flags = ev->event_flags; + + if(event.device >= NUM_MAX_BUTTON) + { + MSG_MOUSE_FATAL("[%s] Invalid Device. Dev=%d Min=%d", pData->alias, event.device, pData->multi_min_idx); + return; + } + + MSG_MOUSE_MED("%s Dev=%d", __func__, ev->device); + + _on_mouse_up(data, NULL, obj, (void *)&event); + +} + +static void _proxy_on_mouse_multi_move(void *data, Evas *evas __UNUSED__, Evas_Object *obj, void *event_info) +{ + Evas_Event_Multi_Move *ev = event_info; + mouse_data_t *pData = data; + + MouseEvent event; + + if ( pData->multi_min_idx == INVALID_DEVICE_ID) + { + // Mouse Move come faster than Mouse down + MSG_MOUSE_HIGH("[%s] Min Device Index=%d", pData->alias, ev->device); + pData->multi_min_idx = ev->device -1; + } + + event.device = ev->device - pData->multi_min_idx; + event.timestamp = ev->timestamp; + event.x = ev->cur.canvas.x; + event.y = ev->cur.canvas.y; + event.button_flags = 0; + event.event_flags = ev->event_flags; + + if(event.device >= NUM_MAX_BUTTON) + { + MSG_MOUSE_FATAL("[%s] Invalid Device. Dev=%d Min=%d", pData->alias, event.device, pData->multi_min_idx); + return; + } + + MSG_MOUSE_MED("%s Dev=%d", __func__, ev->device); + + _on_mouse_move(data, NULL, obj, (void *)&event); +} Ivug_Event_Handle ivug_mouse_event_add(Evas_Object *obj, mouse_callback_t *pCallback, void *client_data, const char *alias) @@ -345,6 +574,7 @@ ivug_mouse_event_add(Evas_Object *obj, mouse_callback_t *pCallback, void *client pData->obj = obj; pData->pClientData = client_data; pData->m_state = MOUSE_DOWN_NONE; + pData->multi_min_idx = INVALID_DEVICE_ID; strncpy(pData->alias, alias, sizeof(pData->alias)); memcpy(&pData->cb, pCallback, sizeof(mouse_callback_t)); @@ -352,6 +582,9 @@ ivug_mouse_event_add(Evas_Object *obj, mouse_callback_t *pCallback, void *client evas_object_event_callback_add(pData->obj, EVAS_CALLBACK_MOUSE_DOWN, _proxy_on_mouse_down, pData); evas_object_event_callback_add(pData->obj, EVAS_CALLBACK_MOUSE_UP, _proxy_on_mouse_up, pData); evas_object_event_callback_add(pData->obj, EVAS_CALLBACK_MOUSE_MOVE, _proxy_on_mouse_move, pData); + evas_object_event_callback_add(pData->obj, EVAS_CALLBACK_MULTI_DOWN, _proxy_on_mouse_multi_down, pData); + evas_object_event_callback_add(pData->obj, EVAS_CALLBACK_MULTI_UP, _proxy_on_mouse_multi_up, pData); + evas_object_event_callback_add(pData->obj, EVAS_CALLBACK_MULTI_MOVE, _proxy_on_mouse_multi_move, pData); MSG_MOUSE_HIGH("Mouse Event Handler Add : Alias(%s) 0x%08x for Object(0x%08x)", alias, pData, obj); @@ -366,6 +599,9 @@ void ivug_mouse_event_del(Ivug_Event_Handle handle) evas_object_event_callback_del(pData->obj, EVAS_CALLBACK_MOUSE_DOWN, _proxy_on_mouse_down); evas_object_event_callback_del(pData->obj, EVAS_CALLBACK_MOUSE_UP, _proxy_on_mouse_up); evas_object_event_callback_del(pData->obj, EVAS_CALLBACK_MOUSE_MOVE, _proxy_on_mouse_move); + evas_object_event_callback_del(pData->obj, EVAS_CALLBACK_MULTI_DOWN, _proxy_on_mouse_multi_down); + evas_object_event_callback_del(pData->obj, EVAS_CALLBACK_MULTI_UP, _proxy_on_mouse_multi_up); + evas_object_event_callback_del(pData->obj, EVAS_CALLBACK_MULTI_MOVE, _proxy_on_mouse_multi_move); MSG_MOUSE_HIGH("Mouse Event Handler Remove : 0x%08x", pData); diff --git a/common/src/statistics.c b/common/src/statistics.c index 5eaa56e..9b8284b 100755 --- a/common/src/statistics.c +++ b/common/src/statistics.c @@ -1,19 +1,18 @@ -/* - * 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 // gettimeofday @@ -31,10 +30,70 @@ #define EXPORT_API #endif +#ifdef _WIN32 +#include +#include + +#pragma comment(lib,"Ws2_32.lib") + +#define _CRT_SECURE_NO_WARNINGS +#define _CRT_NONSTDC_NO_DEPRECATE +#define _CRT_SECURE_NO_DEPRECATE + +#if defined(_MSC_VER) || defined(_MSC_EXTENSIONS) + #define DELTA_EPOCH_IN_MICROSECS 11644473600000000Ui64 +#else + #define DELTA_EPOCH_IN_MICROSECS 11644473600000000ULL +#endif + +struct timezone +{ + int tz_minuteswest; /* minutes W of Greenwich */ + int tz_dsttime; /* type of dst correction */ +}; + +int gettimeofday(struct timeval *tv, struct timezone *tz) +{ + FILETIME ft; + unsigned __int64 tmpres = 0; + static int tzflag; + + if (NULL != tv) + { + GetSystemTimeAsFileTime(&ft); + + tmpres |= ft.dwHighDateTime; + tmpres <<= 32; + tmpres |= ft.dwLowDateTime; + + /*converting file time to unix epoch*/ + tmpres /= 10; /*convert into microseconds*/ + tmpres -= DELTA_EPOCH_IN_MICROSECS; + tv->tv_sec = (long)(tmpres / 1000000UL); + tv->tv_usec = (long)(tmpres % 1000000UL); + } + + if (NULL != tz) + { + if (!tzflag) + { + _tzset(); + tzflag++; + } + tz->tz_minuteswest = _timezone / 60; + tz->tz_dsttime = _daylight; + } + + return 0; +} + +#else #include #include #include #include +#endif + #include #include "statistics.h" @@ -46,7 +105,7 @@ #define MM_TA_MAX_ACCUM 100 -typedef struct _mm_ta_accum_item +typedef struct _iv_ta_accum_item { unsigned long long elapsed_accum; unsigned long num_calls; @@ -56,11 +115,12 @@ typedef struct _mm_ta_accum_item unsigned long long last_end; char* name; + int lvl; unsigned long long timestamp; int on_estimate; int num_unpair; -} mm_ta_accum_item; +} iv_ta_accum_item; static void PrintLog(const char *file, int line, const char *msg, ...) @@ -79,24 +139,24 @@ static void PrintLog(const char *file, int line, const char *msg, ...) // internal func. static void __free_accums(void); -static int __get_accum_index(const char* name); +static int __get_accum_index(int lvl, const char* name); // global var. -static mm_ta_accum_item ** g_accums = NULL; +static iv_ta_accum_item ** g_accums = NULL; static int g_accum_index = 0; static int g_accum_longest_name = 0; static unsigned long long g_accum_first_time = MAX_UINT64; // jmlee -int PERF_INIT(void) +int IV_PERF_INIT(void) { if (g_accums) { return 0; } - g_accums = (mm_ta_accum_item **) malloc ( MM_TA_MAX_ACCUM * sizeof(mm_ta_accum_item *) ); + g_accums = (iv_ta_accum_item **) malloc ( MM_TA_MAX_ACCUM * sizeof(iv_ta_accum_item *) ); if(!g_accums) { assert(0); @@ -108,7 +168,7 @@ int PERF_INIT(void) return 0; } -int PERF_DEINIT(void) +int IV_PERF_DEINIT(void) { if ( ! g_accums ) { @@ -123,7 +183,7 @@ int PERF_DEINIT(void) } -static int __get_accum_index(const char* name) +static int __get_accum_index(int lvl, const char* name) { int i; @@ -132,7 +192,7 @@ static int __get_accum_index(const char* name) // find index for ( i = 0; i < g_accum_index; i++ ) { - if ( strcmp( name, g_accums[i]->name ) == 0 ) + if ( (lvl == g_accums[i]->lvl) && (strcmp( name, g_accums[i]->name ) == 0) ) return i; } @@ -168,9 +228,9 @@ static void __free_accums(void) -int mm_ta_accum_item_begin(const char* name, bool show, const char* filename, int line) +int iv_ta_accum_item_begin(int lvl, const char* name, bool show, const char* filename, int line) { - mm_ta_accum_item * accum = NULL; + iv_ta_accum_item * accum = NULL; int index = 0; int name_len = 0; struct timeval t; @@ -184,14 +244,14 @@ int mm_ta_accum_item_begin(const char* name, bool show, const char* filename, in if ( !name ) return -1; - name_len = strlen(name); + name_len = strlen(name) + (lvl * 2); if( name_len == 0 ) return -1; // if 'name' is new one. create new item. - if ( (index = __get_accum_index(name)) == -1 ) + if ( (index = __get_accum_index(lvl, name)) == -1 ) { - accum = ( mm_ta_accum_item * ) malloc( sizeof( mm_ta_accum_item ) ); + accum = ( iv_ta_accum_item * ) malloc( sizeof( iv_ta_accum_item ) ); if ( !accum ) { assert(0); @@ -199,10 +259,11 @@ int mm_ta_accum_item_begin(const char* name, bool show, const char* filename, in } // clear first. - memset( accum, 0, sizeof (mm_ta_accum_item) ); + memset( accum, 0, sizeof (iv_ta_accum_item) ); accum->elapsed_min = MAX_UINT64; accum->name = strdup(name); + accum->lvl = lvl; // add it to list. g_accums[g_accum_index] = accum; g_accum_index++; @@ -248,9 +309,9 @@ int mm_ta_accum_item_begin(const char* name, bool show, const char* filename, in return 0; } -int mm_ta_accum_item_end(const char* name, bool show, const char* filename, int line) +int iv_ta_accum_item_end(int lvl, const char* name, bool show, const char* filename, int line) { - mm_ta_accum_item * accum = NULL; + iv_ta_accum_item * accum = NULL; unsigned long long tval = 0LL; int index = 0; struct timeval t; @@ -268,7 +329,7 @@ int mm_ta_accum_item_end(const char* name, bool show, const char* filename, int return -1; // varify the 'name' is already exist. - if ( (index = __get_accum_index(name)) == -1 ) + if ( (index = __get_accum_index(lvl, name)) == -1 ) { MyPrintf("[%s] is not added before!\n", name); return -1; @@ -291,6 +352,13 @@ int mm_ta_accum_item_end(const char* name, bool show, const char* filename, int // update last_end accum->last_end = tval; +#if 0 + if ( accum->first_start > accum->last_end ) + { + MyPrintf("Invalied timestamp:%s. Start:%lu End=%lu\n", accum->name, accum->first_start , accum->last_end); + } +#endif + // make get elapsed time. tval = tval - accum->timestamp; @@ -310,9 +378,6 @@ int mm_ta_accum_item_end(const char* name, bool show, const char* filename, int void __print_some_info(FILE* fp) { - if (!fp) - return; - // General infomation { time_t t_val; @@ -366,28 +431,29 @@ void __print_some_info(FILE* fp) } } - fprintf(fp, "g_accum_first_time = %llu\n", g_accum_first_time); + fprintf(fp, "g_accum_first_time = %llu", g_accum_first_time); fprintf(fp, "\n\n"); } -void mm_ta_accum_show_result_fp(FILE *fp) +void iv_ta_accum_show_result_fp(FILE *fp) { int i = 0; char format[256]; -// __print_some_info(fp); + __print_some_info(fp); + fprintf(fp, "\n\n"); fprintf(fp, "============================ BEGIN RESULT ACCUM (usec) ====================\n"); - snprintf(format, (size_t)sizeof(format), "[Idx] %%-%ds %%10s %%6s %%10s %%10s %%10s %%4s \n", g_accum_longest_name); + snprintf(format, (size_t)sizeof(format), "[Idx] [Lvl] %%-%ds %%10s %%10s %%6s %%10s %%10s %%4s \n", g_accum_longest_name); - fprintf(fp, format, "Name", "avg", "hit", "total", "min", "max", "pair"); + fprintf(fp, format, "Name", "avg", "total", "hit", "min", "max", "pair"); - snprintf(format, (size_t)sizeof(format), "[%%3d] %%-%ds %%10llu %%6lu %%10llu %%10llu %%10llu %%4s \n", g_accum_longest_name); + snprintf(format, (size_t)sizeof(format), "[%%3d] [%%3d] %%-%ds %%10llu %%10llu %%6lu %%10llu %%10llu %%4s \n", g_accum_longest_name); for ( i = 0; i < g_accum_index; i++ ) { @@ -395,13 +461,23 @@ void mm_ta_accum_show_result_fp(FILE *fp) if (g_accums[i]->num_calls == 0) g_accums[i]->num_calls = 1; + static char space[256]; + + int j; + for ( j = 0; j < g_accums[i]->lvl * 2; j++) + { + space[j] = '_'; + } + space[g_accums[i]->lvl*2] = '\0'; + fprintf(fp, format, i, - g_accums[i]->name, + g_accums[i]->lvl, + strcat(space, g_accums[i]->name), (g_accums[i]->elapsed_accum == 0)?0:(g_accums[i]->elapsed_accum / g_accums[i]->num_calls), // Fix it! : devide by zero. - g_accums[i]->num_calls, g_accums[i]->elapsed_accum, + g_accums[i]->num_calls, g_accums[i]->elapsed_min, g_accums[i]->elapsed_max, g_accums[i]->num_unpair == 1 ? "F" : "T" ); @@ -409,13 +485,23 @@ void mm_ta_accum_show_result_fp(FILE *fp) fprintf(fp, "============================ END RESULT ACCUM ============================\n"); - if ( fp != stdout && fp != stderr ) - { - fclose(fp); - } } +#define _CONSTRUCTOR __attribute__ ((constructor)) +#define _DESTRUCTOR __attribute__ ((destructor)) + +static void _CONSTRUCTOR _DLLInit(void) +{ + IV_PERF_INIT(); +} + +static void _DESTRUCTOR _DLLExit(void) +{ + IV_PERF_DEINIT(); + +} + #ifdef STANDALONE int main(int argc, char* argv[]) @@ -423,7 +509,7 @@ int main(int argc, char* argv[]) int a = 0, b = 0; - PERF_CHECK_BEGIN("Test 1"); + PERF_CHECK_BEGIN(LVL1, "Test 1"); for ( a = 0 ; a < 10; a++) { @@ -431,7 +517,7 @@ int main(int argc, char* argv[]) usleep(1*10E6); } - PERF_CHECK_END("Test 1"); + PERF_CHECK_END(LVL1, "Test 1"); printf("Test 111\n"); return 0; diff --git a/debian/changelog b/debian/changelog deleted file mode 100755 index eec177b..0000000 --- a/debian/changelog +++ /dev/null @@ -1,8 +0,0 @@ -ug-image-viewer-efl (1.4-14) unstable; urgency=low - - * Initial version - * Git: pkgs/u/ug-image-viewer-efl.git - * Tag: ug-image-viewer-efl_1.4.14 - - -- Jisung Ahn Wed, 07 Dec 2011 15:01:09 +0900 - diff --git a/debian/compat b/debian/compat deleted file mode 100755 index 7ed6ff8..0000000 --- a/debian/compat +++ /dev/null @@ -1 +0,0 @@ -5 diff --git a/debian/control b/debian/control deleted file mode 100755 index f274e0e..0000000 --- a/debian/control +++ /dev/null @@ -1,42 +0,0 @@ -Source: ug-image-viewer-efl -Section: misc -Priority: extra -Maintainer: Li Suxia , Tang Feng , Hyunwoo Kim , Jisung Ahn , Sangjin Han -Uploaders: Tang Feng , Hyunwoo Kim -Build-Depends: debhelper (>= 5), - libelm-dev, - libedje-dev, - libevas-dev, - libecore-dev, - libslp-utilx-dev, - libmedia-service-dev, - libui-gadget-dev, - libaul-1-dev, - libmm-utility-dev, - libexif-dev, - libefreet-dev, - execstack, - libmm-fileinfo-dev, - libicu-dev, - dlog-dev, - libmm-common-dev, - libappcore-efl-dev, - libslp-pm-dev, - libappsvc-dev, - libvconf-dev, - libvconf-keys-dev, -Standards-Version: 0.1.0 - -Package: libug-image-viewer-efl -Section: misc -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: Image Viewer UI Gadget v1.0 - -Package: libug-image-viewer-efl-dbg -Section: debug -Architecture: any -Depends: ${misc:Depends}, libug-image-viewer-efl (= ${Source-Version}) -Description: Image Viewer UI Gadget(unstripped) - - diff --git a/debian/libug-image-viewer-efl.install.in b/debian/libug-image-viewer-efl.install.in deleted file mode 100755 index 1709ce6..0000000 --- a/debian/libug-image-viewer-efl.install.in +++ /dev/null @@ -1,3 +0,0 @@ -@PREFIX@/lib/* -@PREFIX@/res/* -@DATADIR@ diff --git a/debian/libug-image-viewer-efl.postinst b/debian/libug-image-viewer-efl.postinst deleted file mode 100755 index fb2a4cf..0000000 --- a/debian/libug-image-viewer-efl.postinst +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -# Create a directory to store image-viewer pictures and stuffs. - -if [ ${USER} == "root" ] -then - chown 5000:5000 /opt/data/ug-image-viewer-efl -fi - diff --git a/debian/rules b/debian/rules deleted file mode 100755 index ed0233c..0000000 --- a/debian/rules +++ /dev/null @@ -1,132 +0,0 @@ -#!/usr/bin/make -f -# -*- makefile -*- -# Sample debian/rules that uses debhelper. -# This file was originally written by Joey Hess and Craig Small. -# As a special exception, when this file is copied by dh-make into a -# dh-make output file, you may use that output file without restriction. -# This special exception was added by Craig Small in version 0.37 of dh-make. - -# Uncomment this to turn on verbose mode. -# export DH_VERBOSE=1 - -CFLAGS += -Wall -Wextra -g -fpie -fPIC -O0 -Wno-unused-parameter -Wno-missing-field-initializers -finstrument-functions -CXXFLAGS += -Wall -Wextra -g -fpie -fPIC -O0 -Wno-unused-parameter -Wno-missing-field-initializers -finstrument-functions -LDFLAGS += -Wl,-zdefs - -PREFIX ?= /opt/ug -DATADIR ?= /opt/data - -ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) - CFLAGS += -O0 - CXXFLAGS += -O0 -else - CFLAGS += -O2 - CXXFLAGS += -O2 -endif - -LDFLAGS += -Wl,--rpath,/usr/lib -Wl,--as-needed -Wl,--hash-style=both -pie - -configure: configure-stamp -configure-stamp: - dh_testdir - # Add here commands to configure the package. - CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" cmake . -DCMAKE_INSTALL_PREFIX=$(PREFIX) -DCMAKE_DATA_DIR=$(DATADIR) - - touch configure-stamp - -build: build-stamp - -build-stamp: configure-stamp - dh_testdir - - # Add here commands to compile the package. - $(MAKE) - #docbook-to-man debian/wavplayer.sgml > wavplayer.1 - - for f in `find $(CURDIR)/debian/ -name "*.in"`; do \ - cat $$f > $${f%.in}; \ - sed -i -e "s#@PREFIX@#$(PREFIX)#g" $${f%.in}; \ - sed -i -e "s#@DATADIR@#$(DATADIR)#g" $${f%.in}; \ - done - - - touch $@ - -clean: - dh_testdir - dh_testroot - rm -f build-stamp configure-stamp - - # Add here commands to clean up after the build process. - -$(MAKE) clean - rm -rf CMakeCache.txt - rm -rf CMakeFiles - rm -rf cmake_install.cmake - rm -rf Makefile - rm -rf install_manifest.txt - rm -rf *.so - rm -rf *.desktop - find -name CMakeFiles | xargs rm -rf - find -name cmake_install.cmake | xargs rm -rf - find -name Makefile | xargs rm -rf - find -name "*.cmake" | xargs rm -rf - find -name "*.edj" | xargs rm -rf - - for f in `find $(CURDIR)/debian/ -name "*.in"`; do \ - rm -f $${f%.in}; \ - done - - dh_clean - - -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs - - # Add here commands to install the package into debian/wavplayer. - $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install - - execstack -c $(CURDIR)/debian/tmp/opt/ug/lib/libug-image-viewer-efl.so.0.1.0 - -# Build architecture-independent files here. -binary-indep: build install -# We have nothing to do by default. - -# Build architecture-dependent files here. -binary-arch: build install - dh_testdir - dh_testroot - -# dh_installchangelogs -# dh_installdocs - dh_installexamples - dh_install --sourcedir=debian/tmp --list-missing -# dh_installmenu -# dh_installdebconf -# dh_installlogrotate -# dh_installemacsen -# dh_installpam -# dh_installmime -# dh_python -# dh_installinit -# dh_installcron -# dh_installinfo - dh_installman - dh_link - dh_strip --dbg-package=libug-image-viewer-efl-dbg - dh_compress - dh_fixperms -# dh_perl - dh_makeshlibs - dh_installdeb - dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install configure - - diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 776e475..252c54c 100755 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -13,61 +13,56 @@ SET(SRCS # Entry point src/ug-image-viewer.c -# Common - src/common/ivug-config.c - # View related - src/view/ivug-main-view.c - src/view/ivug-setas-view.c - src/view/ivug-detail-info.c + src/view/ivug-main-view.cpp + src/view/ivug-main-view-toolbar.cpp + src/view/ivug-main-view-menu.cpp + + src/view/ivug-name-view.c src/view/ivug-details-view.c - src/view/ivug-popup.c - src/view/ivug-slider.c - src/view/ivug-slider-item.c - src/view/ivug-slider-slideshow.c - src/view/ivug-slider-mouse.c + src/view/ivug-crop-view.cpp + +# SetAs View + src/view/ivug-setas-view.c + src/view/ivug-setas-view-wallpaper.cpp + src/view/ivug-setas-view-callerid.cpp + +# Slider + src/slider/ivug-slider.cpp + src/slider/ivug-slider-item.cpp + src/slider/ivug-slider-mouse.cpp # Control related - src/control/ivug-uuid.c src/control/ivug-parameter.c - src/control/ivug-ext-ug.c - src/control/ivug-main.c - -# Helper files - src/util/ivug-util.c - src/util/ivug-file-info.c - src/util/ivug-widget.c - src/util/ivug-listpopup.c - -# Data & List management - src/data/ivug-data.c - src/data/ivug-data-list.c - src/data/ivug-data-shuffle.c - src/data/ivug-mediadata.c - src/data/ivug-data-filter.c - -# Effect files - src/effect/ivug-effect.c - src/effect/ivug-slide.c - src/effect/ivug-anim.c + src/control/ivug-context.c + src/control/ivug-filter.c + src/control/ivug-detail-info.c + src/control/ivug-setas.cpp + src/control/ivug-crop-ug.cpp + src/control/ivug-widget.c + src/control/ivug-selectioninfo.c + src/control/ivug-popup.c ) # message("System = ${CMAKE_SYSTEM_VERSION}") INCLUDE_DIRECTORIES( - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_SOURCE_WIDGET_DIR}/include - ${CMAKE_SOURCE_COMMON_DIR}/include + ${CMAKE_SOURCE_DIR}/include + ${IVUG_SOURCE_WIDGET_DIR}/include + ${IVUG_SOURCE_COMMON_DIR}/include + ${IVUG_SOURCE_MEDIA_DIR}/include src - src/common - src/view - src/util + src/include src/control - src/widget - src/data - src/effect/include + ${IVUG_SOURCE_FEATURE_DIR}/include + ${IVUG_SOURCE_SLIDESHOW_DIR}/include + +# Below include directory should be removed for make module more indepentatly + ${IVUG_SOURCE_SLIDESHOW_DIR}/src/effect/include ) +MESSAGE("Checking " ${PROJECT_NAME} ) + INCLUDE(FindPkgConfig) pkg_check_modules(pkgs REQUIRED elementary @@ -78,27 +73,18 @@ pkg_check_modules(pkgs REQUIRED ecore ecore-file ecore-imf - ecore-input ecore-x + ecore-input ecore-evas - efreet-mime utilX - ui-gadget - libmedia-service - aul - libexif - appcore-efl - appcore-common - bundle - mm-fileinfo + ui-gadget-1 + drm-client icu-i18n - icu-io - icu-le - icu-lx - icu-uc - pmapi - appsvc + glib-2.0 vconf + capi-appfw-application + capi-appfw-app-manager + capi-system-runtime-info ) @@ -106,28 +92,26 @@ FOREACH(flag ${pkgs_CFLAGS}) SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") ENDFOREACH(flag) -if("${CMAKE_SYSTEM_VERSION}" STREQUAL "arm") - pkg_check_modules(armpkgs REQUIRED - ) - - FOREACH(flag ${armpkgs_CFLAGS}) - SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") - ENDFOREACH(flag) - -endif() +#if("${CMAKE_SYSTEM_VERSION}" STREQUAL "arm") +# pkg_check_modules(armpkgs REQUIRED +# ) +# +# FOREACH(flag ${armpkgs_CFLAGS}) +# SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +# ENDFOREACH(flag) +# +#endif() SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}") SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}") -#message("CFLAGS="${CMAKE_C_FLAGS}) -#message("CXXFLAGS="${CMAKE_CXX_FLAGS}) -#message("LDFLAGS="${LDFLAGS}) +message("CFLAGS="${CMAKE_C_FLAGS}) +message("CXXFLAGS="${CMAKE_CXX_FLAGS}) +message("LDFLAGS="${LDFLAGS}) +message("LDFLAGS1="${pkgs_LDFLAGS}) -ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"") ADD_DEFINITIONS("-DUG_MODULE_API=__attribute__ \(\(visibility\(\"default\"\)\)\)") ADD_DEFINITIONS("-DPACKAGE=\"${PROJECT_NAME}\"") -ADD_DEFINITIONS("-DDATADIR=\"${CMAKE_DATA_DIR}\"") -#ADD_DEFINITIONS("-D_USE_MEDIAINFO_STRINGID_") #ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS}) ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS}) @@ -138,39 +122,32 @@ SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_P TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} ${armpkgs_LDFLAGS} - -ldl - ivug_common + "-ldl" + ivug_common ivug_widget ivug_medialist ivug_slideshow ) INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) -FUNCTION (BUILD_EDJ _in _out _base _dir) - ADD_CUSTOM_TARGET(${_out} - COMMAND - edje_cc -id ${_base}/${_dir} - ${CMAKE_CURRENT_SOURCE_DIR}/${_base}/${_in} - ${CMAKE_CURRENT_SOURCE_DIR}/${_base}/${_out} - DEPENDS - ${CMAKE_CURRENT_SOURCE_DIR}/${_base}/${_in} - ) - ADD_DEPENDENCIES(${PROJECT_NAME} ${_out}) - INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${_base}/${_out} DESTINATION ${CMAKE_INSTALL_PREFIX}/res/edje/${PROJECT_NAME}) -ENDFUNCTION (BUILD_EDJ) - +SET(THEME_FOLDER images/theme) +SET(THEME white) # Build edc files -BUILD_EDJ(ivug-base.edc ivug-base.edj layout images) -BUILD_EDJ(ivug-main.edc ivug-main.edj layout images) -BUILD_EDJ(ivug-icons.edc ivug-icons.edj layout icons) -BUILD_EDJ(ivug-setas.edc ivug-setas.edj layout images) -BUILD_EDJ(ivug-naviframe.edc ivug-naviframe.edj layout images/gray-theme) -BUILD_EDJ(ivug-toolbar.edc ivug-toolbar.edj layout images/gray-theme) -BUILD_EDJ(ivug-button.edc ivug-button.edj layout images/gray-theme) -BUILD_EDJ(ivug-effect.edc ivug-effect.edj layout images) -BUILD_EDJ(ivug-slider.edc ivug-slider.edj layout icons) -BUILD_EDJ(ivug-details.edc ivug-details.edj layout images) -BUILD_EDJ(ivug-selectioninfo.edc ivug-selectioninfo.edj layout images) -BUILD_EDJ(ivug-genlist.edc ivug-genlist.edj layout/genlist images/gray-theme) +BUILD_EDJ(ivug-base.edc ivug-base.edj layout images) +BUILD_EDJ(ivug-main.edc ivug-main.edj layout images) +BUILD_EDJ(ivug-effect.edc ivug-effect.edj layout images) +BUILD_EDJ(ivug-details.edc ivug-details.edj layout images) +BUILD_EDJ(ivug-selectioninfo.edc ivug-selectioninfo.edj layout images) +BUILD_EDJ(ivug-popup.edc ivug-popup.edj layout images) +BUILD_EDJ(ivug-crop-view.edc ivug-crop-view.edj layout crop-view) +BUILD_EDJ(ivug-icons.edc ivug-icons.edj layout icons) +BUILD_EDJ(ivug-slider.edc ivug-slider.edj layout icons) +BUILD_EDJ(ivug-gengrid.edc ivug-gengrid.edj layout gengrid) + +BUILD_EDJ(ivug-setas.edc ivug-setas.edj layout ${THEME_FOLDER}/${THEME}) +BUILD_EDJ(ivug-naviframe.edc ivug-naviframe.edj layout ${THEME_FOLDER}/${THEME}) +BUILD_EDJ(ivug-name-view.edc ivug-name-view.edj layout ${THEME_FOLDER}/${THEME}) +BUILD_EDJ(ivug-genlist.edc ivug-genlist.edj layout/genlist ../${THEME_FOLDER}/${THEME}) + # Install image files. INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/res/images/ DESTINATION ${CMAKE_INSTALL_PREFIX}/res/images/${PROJECT_NAME}) @@ -180,3 +157,5 @@ INSTALL(DIRECTORY DESTINATION ${CMAKE_DATA_DIR}/${PROJECT_NAME}) # i18n ADD_SUBDIRECTORY(res/po) + + diff --git a/main/NOTICE b/main/NOTICE deleted file mode 100755 index ded3804..0000000 --- a/main/NOTICE +++ /dev/null @@ -1 +0,0 @@ -Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. \ No newline at end of file diff --git a/main/layout/genlist/genlist_group_index.edc b/main/layout/genlist/genlist_group_index.edc index 2891049..fe95b95 100755 --- a/main/layout/genlist/genlist_group_index.edc +++ b/main/layout/genlist/genlist_group_index.edc @@ -1,22 +1,18 @@ -/* - * 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_FONT_INDEX_LIST_COLOR_INC 240 240 240 255 -#define GENLIST_DIALOGUE_GROUP_BG_COLOR_INC 15 15 15 255 +/* + * 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_INDEX_LIST_BASE_EVENT_INC \ part { name: "base_event";\ @@ -88,6 +84,7 @@ size: GENLIST_FONT_32_INC; min: 1 1; align: 0.0 0.5; + text_class: "slp_medium"; } } } diff --git a/main/layout/genlist/genlist_macro.edc b/main/layout/genlist/genlist_macro.edc index 879d0f2..55ab855 100755 --- a/main/layout/genlist/genlist_macro.edc +++ b/main/layout/genlist/genlist_macro.edc @@ -1,19 +1,18 @@ -/* - * 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_BASE( param_item_height ) \ part { name: "base"; \ @@ -454,6 +453,7 @@ size: 24; \ min: 1 1; \ align: 0.5 0.5; \ + text_class: "slp_roman"; \ } \ } \ } diff --git a/main/layout/genlist/genlist_size.edc b/main/layout/genlist/genlist_size.edc index 73c285a..30cbb6a 100755 --- a/main/layout/genlist/genlist_size.edc +++ b/main/layout/genlist/genlist_size.edc @@ -1,19 +1,18 @@ -/* - * 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. + */ /* hd_inc */ diff --git a/main/layout/genlist/genlist_styles.edc b/main/layout/genlist/genlist_styles.edc index 4eeeca9..fd0b4c9 100755 --- a/main/layout/genlist/genlist_styles.edc +++ b/main/layout/genlist/genlist_styles.edc @@ -1,19 +1,18 @@ -/* - * 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: "elm/genlist/item/ivug/2text.2/default"; alias: "elm/genlist/item_odd/ivug/2text.2/default"; @@ -59,6 +58,7 @@ group { name: "elm/genlist/item/ivug/2text.2/default"; size: GENLIST_FONT_20_INC; min: 0 1; align: 0.0 0.5; + text_class: "slp_roman"; } } description { state: "selected" 0.0; @@ -90,6 +90,7 @@ group { name: "elm/genlist/item/ivug/2text.2/default"; size: GENLIST_FONT_28_INC; min: 0 1; align: 0.0 0.5; + text_class: "slp_medium"; } } description { state: "selected" 0.0; @@ -140,6 +141,162 @@ group { name: "elm/genlist/item/ivug/2text.2/default"; } } + group { name: "elm/genlist/item_compress/ivug/multiline/2text.1icon/default"; + alias: "elm/genlist/item_compress_odd/ivug/multiline/2text.1icon/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.1 elm.text.2"; + data.item: "contents" "elm.icon"; + parts { + part { name: "base"; + type: RECT; + repeat_events: 1; + description { state: "default" 0.0; + color: GENLIST_PART_BG_COLOR_INC; + } + } + GENLIST_PART_BG_IMAGE + GENLIST_PART_BOTTOM_LINE + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_10_INC ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC ) + part { name: "elm.text.1"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_26_INC; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.icon.left"; + to_y: "elm.padding.top"; + } + align: 0.0 0.0; + color: 160 160 160 255; //GENLIST_PART_FONT_LIST_MAIN_TEXT_UNREAD_COLOR_INC; + text { + font: "SLP:style=Roman"; + size: GENLIST_FONT_32_INC; + min: 0 1; + align: 0.0 0.5; + text_class: "list_item"; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_PRESS_COLOR_INC; + } + } + part { name: "elm.icon"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + align: 1.0 0.5; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + part { name: "elm.padding.icon.left"; + clip_to: "disclip"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_PADDING_16_INC 0; + fixed: 1 0; + rel1.to_x: "elm.icon"; + rel2 { + relative: 0.0 1.0; + to_x: "elm.icon"; + } + align: 1.0 0.0; + visible: 0; + } + } + part { name: "elm.text.2"; + clip_to: "disclip"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.text.1"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.padding.icon.left"; + to_y: "elm.padding.bottom"; + } + text { + style: "genlist_textblock_sub_style"; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + text.style: "genlist_textblock_sub_selected_style"; + } + } + GENLIST_PART_DISCLIP + } + programs { + // signal: elm,state,%s,active + // a "check" item named %s went active + // signal: elm,state,%s,passive + // a "check" item named %s went passive + // default is passive + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + target: "elm.text.1"; + target: "elm.text.2"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + target: "elm.text.1"; + target: "elm.text.2"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + } + } + group { name: "elm/genlist/item_compress/ivug/multiline/2text/default"; alias: "elm/genlist/item_compress_odd/ivug/multiline/2text/default"; alias: "elm/genlist/item_compress/ivug/multiline.2text/default"; @@ -186,6 +343,7 @@ group { name: "elm/genlist/item/ivug/2text.2/default"; size: GENLIST_FONT_32_INC; min: 0 1; align: 0.0 0.5; + text_class: "list_item"; } } description { state: "selected" 0.0; @@ -210,14 +368,14 @@ group { name: "elm/genlist/item/ivug/2text.2/default"; to_y: "elm.padding.bottom"; } text { - style: "genlist_textblock_flexible_style"; + style: "genlist_textblock_sub_style"; min: 0 1; align: 0.0 0.5; } } description { state: "selected" 0.0; inherit: "default" 0.0; - text.style: "genlist_textblock_flexible_selected_style"; + text.style: "genlist_textblock_sub_selected_style"; } } GENLIST_PART_DISCLIP diff --git a/main/layout/genlist/genlist_textblock_styles.edc b/main/layout/genlist/genlist_textblock_styles.edc index 02ac574..cec6f45 100755 --- a/main/layout/genlist/genlist_textblock_styles.edc +++ b/main/layout/genlist/genlist_textblock_styles.edc @@ -1,35 +1,18 @@ -/* - * 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. - */ - - -/* hd_inc */ -#define GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC "#F9F9F9FF" -#define GENLIST_PART_MATCH_TAG_COLOR_INC "+ color=#3F8DAD" - -#define GENLIST_PART_FONT_LIST_MAIN_TEXT_UNREAD_STYLE_COLOR_INC "#F9F9F9FF" -#define GENLIST_PART_FONT_LIST_SUB_TEXT_STYLE_COLOR_INC "#646464FF" -#define GENLIST_PART_FONT_FLEXIBLE_TEXT_MAIN_STYLE_COLOR_INC "#F9F9F9FF" -#define GENLIST_PART_FONT_FLEXIBLE_TEXT_SUB_STYLE_COLOR_INC "#959595FF" -#define GENLIST_PART_FONT_MULTILINE_TEXT_STYLE_COLOR_INC "#959595FF" -#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_READ_STYLE_COLOR_INC "#F9F9F9FF" -#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_UNREAD_STYLE_COLOR_INC "#F9F9F9FF" -#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_FOCUS_STYLE_COLOR_INC "#F9F9F9FF" -#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_2_STYLE_COLOR_INC "#F9F9F9FF"//"#688998FF" -#define GENLIST_PART_FONT_3LINE_MAIN_TEXT_2_FOCUS_STYLE_COLOR_INC "#F9F9F9FF" -#define GENLIST_PART_FONT_HELP_TEXT_STYLE_COLOR_INC "#929292FF" +/* + * 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 TEXTBLOCK_TAG \ tag: "br" "\n";\ @@ -40,7 +23,7 @@ styles { style { name: "text_style"; // TODO: remove this later - base: "font=SLP:style=Roman font_size=28 color=#000000 wrap=char ellipsis=1.0"; + base: "font=SLP:style=Roman font_size=28 color=#000000 wrap=char ellipsis=1.0 text_class=slp_roman"; tag: "br" "\n"; tag: "ps" "ps"; tag: "tab" "\t"; @@ -48,63 +31,63 @@ tag: "match" "+ color=#E58616FF"; } style { name: "genlist_default_textblock_style"; - base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_44_INC" color="GENLIST_PART_FONT_LIST_MAIN_TEXT_UNREAD_STYLE_COLOR_INC" text_class=list_item ellipsis=1.0"; + base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_44_INC" color="GENLIST_PART_FONT_LIST_MAIN_TEXT_UNREAD_STYLE_COLOR_INC" text_class=slp_roman ellipsis=1.0"; TEXTBLOCK_TAG } style { name: "genlist_default_textblock_selected_style"; - base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_44_INC" color="GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC" text_class=list_item ellipsis=1.0"; + base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_44_INC" color="GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC" text_class=slp_roman ellipsis=1.0"; TEXTBLOCK_TAG } style { name: "genlist_sub_textblock_style"; - base: "font=SLP:style=Medium font_size="GENLIST_FONT_STYLE_32_INC" color="GENLIST_PART_FONT_LIST_SUB_TEXT_STYLE_COLOR_INC" text_class=list_item ellipsis=1.0"; + base: "font=SLP:style=Medium font_size="GENLIST_FONT_STYLE_32_INC" color="GENLIST_PART_FONT_LIST_SUB_TEXT_STYLE_COLOR_INC" text_class=slp_medium ellipsis=1.0"; TEXTBLOCK_TAG } style { name: "genlist_sub_textblock_selected_style"; - base: "font=SLP:style=Medium font_size="GENLIST_FONT_STYLE_32_INC" color="GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC" text_class=list_item ellipsis=1.0"; + base: "font=SLP:style=Medium font_size="GENLIST_FONT_STYLE_32_INC" color="GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC" text_class=slp_medium ellipsis=1.0"; TEXTBLOCK_TAG } style { name: "genlist_multiline_textblock_style"; - base: "font=SLP:style=Medium font_size="GENLIST_FONT_STYLE_32_INC" color="GENLIST_PART_FONT_MULTILINE_TEXT_STYLE_COLOR_INC" wrap=char text_class=list_item"; + base: "font=SLP:style=Medium font_size="GENLIST_FONT_STYLE_32_INC" color="GENLIST_PART_FONT_MULTILINE_TEXT_STYLE_COLOR_INC" wrap=char text_class=slp_medium"; TEXTBLOCK_TAG } style { name: "genlist_multiline_textblock_selected_style"; - base: "font=SLP:style=Medium font_size="GENLIST_FONT_STYLE_32_INC" color="GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC" wrap=char text_class=list_item"; + base: "font=SLP:style=Medium font_size="GENLIST_FONT_STYLE_32_INC" color="GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC" wrap=char text_class=slp_medium"; TEXTBLOCK_TAG } style { name: "genlist_textblock_style"; - base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_42_INC" color="GENLIST_PART_FONT_3LINE_MAIN_TEXT_UNREAD_STYLE_COLOR_INC" wrap=char text_class=list_item"; + base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_42_INC" color="GENLIST_PART_FONT_3LINE_MAIN_TEXT_UNREAD_STYLE_COLOR_INC" wrap=char text_class=slp_roman"; TEXTBLOCK_TAG } style { name: "genlist_textblock_selected_style"; - base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_42_INC" color="GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC" wrap=char text_class=list_item"; + base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_42_INC" color="GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC" wrap=char text_class=slp_roman"; TEXTBLOCK_TAG } style { name: "genlist_textblock_sub_style"; - base: "font=SLP:style=Medium font_size="GENLIST_FONT_STYLE_36_INC" color="GENLIST_PART_FONT_3LINE_MAIN_TEXT_2_STYLE_COLOR_INC" wrap=char text_class=list_item"; + base: "font=SLP:style=Medium font_size="GENLIST_FONT_STYLE_36_INC" color="GENLIST_PART_FONT_3LINE_MAIN_TEXT_2_STYLE_COLOR_INC" wrap=char text_class=slp_medium"; TEXTBLOCK_TAG } style { name: "genlist_textblock_sub_selected_style"; - base: "font=SLP:style=Medium font_size="GENLIST_FONT_STYLE_36_INC" color="GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC" wrap=char text_class=list_item"; + base: "font=SLP:style=Medium font_size="GENLIST_FONT_STYLE_36_INC" color="GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC" wrap=char text_class=slp_medium"; TEXTBLOCK_TAG } style { name: "genlist_textblock_flexible_style"; - base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_36_INC" color="GENLIST_PART_FONT_FLEXIBLE_TEXT_MAIN_STYLE_COLOR_INC" wrap=char text_class=list_item";// fixed by ivug + base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_36_INC" color="GENLIST_PART_FONT_FLEXIBLE_TEXT_MAIN_STYLE_COLOR_INC" wrap=char text_class=slp_roman";//fixed by ivug TEXTBLOCK_TAG } style { name: "genlist_textblock_flexible_selected_style"; - base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_48_INC" color="GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC" wrap=char text_class=list_item"; + base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_48_INC" color="GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC" wrap=char text_class=slp_roman"; TEXTBLOCK_TAG } style { name: "genlist_textblock_flexible_sub_style"; - base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_36_INC" color="GENLIST_PART_FONT_FLEXIBLE_TEXT_SUB_STYLE_COLOR_INC" wrap=char text_class=list_item"; + base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_36_INC" color="GENLIST_PART_FONT_FLEXIBLE_TEXT_SUB_STYLE_COLOR_INC" wrap=char text_class=slp_roman"; TEXTBLOCK_TAG } style { name: "genlist_textblock_flexible_sub_selected_style"; - base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_36_INC" color="GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC" wrap=char text_class=list_item"; + base: "font=SLP:style=Roman font_size="GENLIST_FONT_STYLE_36_INC" color="GENLIST_PART_TEXT_PRESS_STYLE_COLOR_INC" wrap=char text_class=slp_roman"; TEXTBLOCK_TAG } style { name: "genlist_textblock_help_style"; - base: "font=SLP:style=Medium font_size="GENLIST_FONT_STYLE_32_INC" color="GENLIST_PART_FONT_HELP_TEXT_STYLE_COLOR_INC" wrap=mixed text_class=list_item"; + base: "font=SLP:style=Medium font_size="GENLIST_FONT_STYLE_32_INC" color="GENLIST_PART_FONT_HELP_TEXT_STYLE_COLOR_INC" wrap=mixed text_class=slp_medium"; TEXTBLOCK_TAG } } diff --git a/main/layout/genlist/ivug-genlist.edc b/main/layout/genlist/ivug-genlist.edc index f9d527b..3dd35f2 100755 --- a/main/layout/genlist/ivug-genlist.edc +++ b/main/layout/genlist/ivug-genlist.edc @@ -1,33 +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. - */ - - -#define GENLIST_PART_BG_COLOR_INC 0 0 0 0 - -#define GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC 249 249 249 255 -#define GENLIST_PART_TEXT_PRESS_COLOR_INC 249 249 249 255 - -#define GENLIST_PART_FONT_LIST_MAIN_TEXT_UNREAD_COLOR_INC 100 100 100 255 - -#define GENLIST_PART_DISCLIP_COLOR_INC 255 255 255 64 - -/* 1.0 */ -#define GENLIST_PART_LIST_BG_COLOR_INC 0 0 0 0 -#define GENLIST_PART_LIST_LINE_COLOR_INC 68 68 68 0 -#define GENLIST_PART_LIST_PRESS_COLOR_INC 0 140 210 255 +/* + * 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 "../ivug-theme.edc" collections { diff --git a/main/layout/images/T01_btn_cancel.png b/main/layout/images/T01_btn_cancel.png deleted file mode 100755 index 051ff045cc3d638c264ef75b453b3b39f1802c56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4800 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 diff --git a/main/layout/images/T01_btn_ok_dim.png b/main/layout/images/T01_btn_ok_dim.png deleted file mode 100755 index 9cc983b40a7bd49adaf86481401f20fdef61c039..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4515 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 BemejF diff --git a/main/layout/images/T01_btn_ok_press.png b/main/layout/images/T01_btn_ok_press.png deleted file mode 100755 index 4a59cfd351766a49f0800e30e59e6eaa7b4cb579..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5156 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 QCjbBd07*qoM6N<$g1_iEasU7T diff --git a/main/layout/images/gray-theme/T01_Option_header_bt.png b/main/layout/images/gray-theme/T01_Option_header_bt.png deleted file mode 100755 index 3c6987f4f99bb2a8193e512f0d28600f22a7b094..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3064 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 U;=|tGV)h_ogWEUCuDLw@560O^+yDRo diff --git a/main/layout/images/gray-theme/T01_Option_header_bt_press.png b/main/layout/images/gray-theme/T01_Option_header_bt_press.png deleted file mode 100755 index 978107ccc21b79cb864229efb3f3c63a4acc85f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2996 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 Th#9g>00000NkvXXu0mjfQ@YYe diff --git a/main/layout/images/gray-theme/T01_title_btn_press.png b/main/layout/images/gray-theme/T01_title_btn_press.png deleted file mode 100755 index 49861ed6816e1d36764e2f327b59ebf50dd904da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3126 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 diff --git a/main/layout/images/gray-theme/magnifier.png b/main/layout/images/gray-theme/magnifier.png deleted file mode 100755 index 4ae3188c703556c279ac4690cd512b0c97330356..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5126 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 Rt!~FEKu5z+y;{vN>VJD5qwfF! diff --git a/main/layout/images/gray-theme/magnifier_line.png b/main/layout/images/gray-theme/magnifier_line.png deleted file mode 100755 index c4dd14cf70aa200f22f4b289cedea08aa72416b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4153 zcmV-95XSF`P)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} z000GKNkl8-~I zM5LThI1oi}fIpy|TG2xzN)MzoDF#`f0Rl_l>hI8JexpjW73T0K*ER{5@=*tMlkz?KPwfe7#puoq|p-Un`+J9qBc*x1-=DwQg@+uU-wT=C(MZar@B#3iz&8t9Sh0dl za8>OV;9cOelP6D3yA5ul{FlH%5pR#Mm4VxaaA*U^&YU?DZ}cm(6C2jV4W}(?uZ9>%^_E^0p7Km*M?;W@aYaXz=Oj=?t() zc}CgSIb8$%Pd9JgTxvA-o1`QBGDR)#q9R>_9n-1wmn-hF)^`z z{rdHn0zD$Y8G&8}(h9h%s_R!Z(L^a-w;%W%_!u|v7B1pER#1!gHFW3!_8vh9o@_|NQfb{2sqSC!vnpS=+Ax`rY z`0B)o6Ms%lPNq!YLqkLJz=S~OMBOFeAGuCK79DRQX+OKxZM>3mn#`u4sId%egu~&k z?(XiErlzJcF@}eS=Pq8n_()=NUZ9o*dPydcl?mk)!75h4IX-~Z;MIL^Wt)5O;6d23 ztb=N#866#6Ieq%{AHa8t^R0@yi(=zBZFMxh^;84bC*W3?lv=^|Ygt*TegIyI&8{iX>vF7Ucyz7!gc_yB(YEZS-aeDQqTI$zKsR*qT=o2UVM!-@6oKV!>(BgAl?*L96W339N zq(-8Qtb$X#E=@`b@RGI?Zn-&ijyDzHxSF#rOQa}D6j@P}uI7w2wa^w{r!1cz^KN@e z@rSf**EG9+Oz@Z0f2-7z;ux~O9+4z06=<WDR*FRcSTFz- zW=q650N5=6FiBTtNC2?60Km==3$g$R3;-}uh=nNt1bYBr$Ri_o0EC$U6h`t_Jn<{8 z5a%iY0C<_QJh>z}MS)ugEpZ1|S1ukX&Pf+56gFW3VVXcL!g-k)GJ!M?;PcD?0HBc- z5#WRK{dmp}uFlRjj{U%*%WZ25jX z{P*?XzTzZ-GF^d31o+^>%=Ap99M6&ogks$0k4OBs3;+Bb(;~!4V!2o<6ys46agIcq zjPo+3B8fthDa9qy|77CdEc*jK-!%ZRYCZvbku9iQV*~a}ClFY4z~c7+0P?$U!PF=S z1Au6Q;m>#f??3%Vpd|o+W=WE9003S@Bra6Svp>fO002awfhw>;8}z{#EWidF!3EsG z3;bXU&9EIRU@z1_9W=mEXoiz;4lcq~xDGvV5BgyU zp1~-*fe8db$Osc*A=-!mVv1NJjtCc-h4>-CNCXm#Bp}I%6j35eku^v$Qi@a{RY)E3 zJ#qp$hg?Rwkvqr$GJ^buyhkyVfwECO)C{#lxu`c9ghrwZ&}4KmnvWKso6vH!8a<3Q zq36)6Xb;+tK10Vaz~~qUGsJ8#F2=(`u{bOVlVi)VBCHIn#u~6ztOL7=^<&SmcLWlF zMZgI*1b0FpVIDz9SWH+>*hr`#93(Um+6gxa1B6k+CnA%mOSC4s5&6UzVlpv@SV$}* z))J2sFA#f(L&P^E5{W}HC%KRUNwK6<(h|}}(r!{C=`5+6G)NjFlgZj-YqAG9lq?`C z$c5yc>d>VnA`E_*3F2Qp##d8RZb=H01_mm@+|Cqnc9PsG(F5HIG_C zt)aG3uTh7n6Et<2In9F>NlT@zqLtGcXcuVrX|L#Xx)I%#9!{6gSJKPrN9dR61N3(c z4Tcqi$B1Vr8Jidf7-t!G7_XR2rWwr)$3XQ?}=hpK0&Z&W{| zep&sA23f;Q!%st`QJ}G3cbou<7-yIK2z4nfCCCtN2-XOGSWo##{8Q{ATurxr~;I`ytDs%xbip}RzP zziy}Qn4Z2~fSycmr`~zJ=lUFdFa1>gZThG6M+{g7vkW8#+YHVaJjFF}Z#*3@$J_By zLtVo_L#1JrVVB{Ak-5=4qt!-@Mh}c>#$4kh<88)m#-k<%CLtzEP3leVno>={htGUuD;o7bD)w_sX$S}eAxwzy?UvgBH(S?;#HZiQMoS*2K2 zT3xe7t(~nU*1N5{rxB;QPLocnp4Ml>u<^FZwyC!nu;thW+pe~4wtZn|Vi#w(#jeBd zlf9FDx_yoPJqHbk*$%56S{;6Kv~mM9!g3B(KJ}#RZ#@)!hR|78Dq|Iq-afF%KE1Brn_fm;Im z_u$xr8UFki1L{Ox>G0o)(&RAZ;=|I=wN2l97;cLaHH6leTB-XXa*h%dBOEvi`+x zi?=Txl?TadvyiL>SuF~-LZ;|cS}4~l2eM~nS7yJ>iOM;atDY;(?aZ^v+mJV$@1Ote z62cPUlD4IWOIIx&SmwQ~YB{nzae3Pc;}r!fhE@iwJh+OsDs9zItL;~pu715HdQEGA zUct(O!LkCy1<%NCg+}G`0PgpNm-?d@-hMgNe6^V+j6x$b<6@S<$+<4_1hi}Ti zncS4LsjI}fWY1>OX6feMEuLErma3QLmkw?X+1j)X-&VBk_4Y;EFPF_I+q;9dL%E~B zJh;4Nr^(LEJ3myURP{Rblsw%57T)g973R8o)DE9*xN#~;4_o$q%o z4K@u`jhx2fBXC4{U8Qn{*%*B$Ge=nny$HAYq{=vy|sI0 z_vss+H_qMky?OB#|JK!>IX&II^LlUh#rO5!7TtbwC;iULyV-Xq?ybB}ykGP{?LpZ? z-G|jbTmIbG@7#ZCz;~eY(cDM(28Dyq{*m>M4?_iynUBkc4TkHUI6gT!;y-fz>HMcd z&t%Ugo)`Y2{>!cx7B7DI)$7;J(U{Spm-3gBzioV_{p!H$8L!*M!p0uH$#^p{Ui4P` z?ZJ24cOCDe-w#jZd?0@)|7iKK^;6KN`;!@ylm7$*nDhK&GcDTy000JJOGiWi{{a60 z|De66lK=n!32;bRa{vGf6951U69E94oEQKA00(qQO+^RW0RsptE+Bp6!?gzOInDN(db024(DEI1YhQ%s}5n8ca&Oy&jabL-+&{>Yh8gd>@sxJ56| zocpf87tcLRVw-m+!OhDRTL^!w}9 zts9-1ni}`#(OW;-$&)9~fAPf^(=WgL^3eka4*U;*e*y4o0bL|GkRY}NA?0<(c9bC` ze9FzN02l=DCl5UEz#l#F#1p^0dGqF*{OR*nCVThYcRzdn`R5P6{`%`bOF*1U08}>x zq;yZ6F`>;{s{rP~Hws|qv(G;Jhr4(0{*gab-pXvxJ@?!PPd@qNn*d$`Fr7eGw_q%U za4~g28S_;Di~#tnmtK15Cp&iRxLs}-MG?OI@=KgJaRTShpU36Pm;KrE))!W(RIp;j z3anbS3hUReN3B-V@9o~b`$xmW!a9G+O8H*Q3wQUL($*sdo2NS^WIxKgTDB4e1EFXVd*p#(bmptI)aVK2H93zfmEG*39^5q$Pc@MX!pO)q zsMTsXeex^3`R1E==%I%&GBSe6$;pxZ`}g1d;DZl-3gDk%)&*6auxUA>NC8z#R&Hkq zU<|dAoG(3z-r2-<#g+hYY*v5iS zxt|tn>i>DzJe2Y=vjrrx0VQ*yhHZj4H#dii)6+Qd>*H9rW(r%jYyki)EG*Oq1_oXN z@V5ZIOB8Spz=BXhqej@S0@?-l^}BZMxJ)}*!@S&oGQf= z;Mr}%hLOnyVycuyLJ*fDI}xDf!5@US9bsh$96_lL$}v!F@^ zs{;cAdKCSsQ>Sq8;w6lZPoP$-VQ^ru7(StTDRf!z^58SGq851Mv!JCj1ydp(gjCwN z5kDnQso`1*Rm`ZQ14Q*I0f<|GaG*MX(XnxyK7CrhH#s>u2%wg*RDsz&lbU5g+f_iL zbzi)A5g=e_co+kNgQ!-k2!fyhJ~AQHAm)Q-LuY40^I`Yxw=5z^W}OMltW``w$&|R2 z31GI1s=;L8nkHzgtVuJMG^|!p8yUg5vuE_{l}bg1Xq8?lU@m}B6oDu}wOU132^)1j zSC-R)FQCAL&;?!&bfzn6NT1A)`j%T770lKEQ%^KiNDU-gV}l$Zs$`97G=XwSV-%Jw zhzLQY;&NHZ0xxe!9=8J^<$!2d5Co`HLIjoO@C7afw4qCYGm|l70%y6KM6O--Rto-P zuP##IAEj_AMN5>DlkF%`MQF7ocdVzugDxHv)y4z2Yh@=ZsapzY$AN_zqt@I``*j;S zDnO#wJzFD}YNTWjo#soxg0;Ric#&O(`z95BAKh1*>xc~;uJjPA| zY*|_i_b`E>$nA6im~lysk_0*669Qq_SQ{tP0NCA0oc|*HPx>L_*~@(k)T25US>wgivPTo%k@lv(O#z&_c>s+Cu$*) za53hTupui@T>f~|^EMvKD^h;D6f40kdgKAD(-RhDq~kP(?tq)8cb z_^=1CM8Tig1X-PbMmqL^(gX}t2_oITA#TMGrr}c~Zq%P^Z&XFw({FZrVqT$s5V0NF zfX{SEjXt5GZ)mOpdiYA_i>AF_(jF`cOa_cLh_>vwYvJVJod{rJ-M%_lL$l>Z*nI$n z`oU3PPv1u|d@=^KJ7r4+BzLOC_YEzB__5ooN$UH^u@MJGE@&&Ktw&1WYd16V2gsf=6~Co}39ZZ~d5nu}>+R z{X#i;g;*Eib!SmgQedHkWMx8isNhXUQzYVGfW2fD5LVKJGKm=lg#=NnB+_}9 z^5JuV=i|R}CScr`cr(>vD`Kj2vaaV+P3?**1qF-eX}?nzZMzqZEbJ0{fx>OaA z(j9e84UwmQ1Un-tx{)`5kH`(3hp?<1iXJKnh@1=nq~tzzMWNkMc9bhflp58f|HBENR8|jPXd61 zwAYOA@Rdyk-BVE-m;B76%p^QA7_%yXs31n6>~=j)Cj{N&&zwG@ASAT&8}5uQqT@*Y%hwMi_DU8L5ucRCSY8#BMRM5^9$@`O{V1G zVJxi++EOEwbAtlT(ebjqanApcZMRqB0K4yk=E+^gb!dGSGorknE#%=_wl1h!1zq`u z6eJnSSe_JR=azNu!;%M(+LLT5R8GnzlA4?>Z_5nfe<*d2;g(K{w-Q5{-=JD;4p;l)9{AJf&6@|%n>P<& zx2!OA%U9@oye(^MwQ2Nj#?L-fKrUDegFTGioRD#TBjNVjNIIoGmjFO6riWYlu((Qj z$d)l|+&vE~=kr%X4TG-3*5qm>m(*y*EwB%Y`m|p1yVVoptrYO(H7;%fP*&Nvz}sTy z_j8Bqm0cYLR6FfDcyi^M%p2*8a)p~#e|TdJa1UZxz_ZV#hJoD>F(hCKn8jE7tSj5w z)P-SP=?f|^E^!R&S@*~E=mv?$JQ z)3oWd;e}lV0NMCuoKn$n12_eWO)t~&o5TieUd?1OMn;nI;3*J2kmYbc<#}Yz!pBCF zVI$YT#%CnGtlOs9eo|0#iR^Nd3cGNmG6#+dSFAxgj|Yi`GAuV#0j9dg8gqY;>54W! z>YgFnLs%9dEniE($0E6Bs+A>M%$WgRB6_tR^L<0+7qK zCG_ZZ-~^fG#Hq<^V$Obrs07hlsqnKrMiV|W_RFfD?SATeN3h6XM*@+1mW2tsb7*pW z9rx_ob@gG~?tG}nqAx+rLs}!@nMz=A8I5OhpSTZ<0=;>;TR0N@#++PlsR5NM$ z=35Ts%K=Ziosh6)x~Q4z2bNiOD^V!p#56$E)OK3~yI2Qg14KQuaH51Pd{5G`T6WF0 zR0YK%8xlhGDLIR=HTQ>D6USTML&$CjbKy&~?PewwLJ6&`Drd`F#x^h~?p>lu7!jX| z;&?*=)9J+1AF19q(xduU%9Tp>%*1*%9Hi6kka=ayn~29-Ng%Yr)AtVej7X5RYsuhr zTWfn5We+y8HcK`O$}kUz-9tsWp~f8kLIt(ED3dRof|xEX%$d(fXVZYuTS-Gfp;n?E ztTUjN8Zry;*o^&T@+Hsx>}CAd)fmu739FfeEjLuIMw9+L^LaXXG3EbYokBHZJ#$$_ zZ>5U_?Xm+*=oC0w4VjI^s3=ef^;3|-gjOaLm%0M#AMQ{OuuIc**Le_DrZq zfg&pzs$f)oxDA0cJ`0_!@m8WNsI%J`4Aq0Bep1nF_%ip7ZDpBbNsorGgX0E-WURNX zmkMTA`GKA8r7p-D?@JIVH#KFfNad~1TyM+3C1uBG2uSzS?h#|c#|*?A=hOyG_2bNNilwZ8`T$U_3hMQ@ z$?6(o0cQ4%A*6>&xU$wv;k{YI)Z5a8&q&dTOr}}KV@5uF)^Mjdj-Be)OGhf~#epKJ zf(a6F93u#V#*ZZe;ur`5h^o5yycxf-?lEH}ZS2nMj{8>tevRwdyT}35y(mitqPvZyU6&?9!HpxW-pEEt*q)NJWd0cOcGF*5sc&u za^k+6Sg^;xE$rC=lf}yzK;XETCCfj&yJby0Rwxov&^v#j2Mo^GEtexFYE3akpT37U2kRLFE6`o7UT24 zGgT0|@Y(L^m9Vg<2aZ{*AH+l3Vu+QcRA=r);dFI@#8?PD{RC&GqVVchZV6;#?jchZ zn{`WzjpR%bd{?d=gMTBgYUL2^ck6UTbA$2w*yp*IRk;V}~N< z_K0CIfFY}TSpf61qJ6J`8p4=uKQmE9vaW7yEC;MdQK%8`1fhOu_A6zWvfb0Xl_K_& zFW9r-8L^?GTUr)8y9ke~Hk00>02~?`0udpOBQ%|^KV|`*kV2%BHOVo6BsyY~nBYl| zR!T<%3iT^GdEWY41=*>B=G>sjz$QO$#DTF)%*2N4TC@-KXaUt~wbe@pFBZVU=}1RM zM?nNcQG_^(5XW)x9wjlMf=DG?$S6BFX1Nv#89fskn-e?PJ#M@LmQMxUlUG zZ2?p2dXlAxYz#+&p^SP;d%0si8&m2)FmJ{(m)fN%2zMq_#)z#ba1=$jaQ-{|@TOb! z>z6KFS^!XQksIz5K=r}%Cr+HWs6QNrxbemt@yky?!|d!V>h%T0@gRaAC|t8$7wSoL zC$m75Jz|=z{a~&s;mKQe?r28ww3BM}4b2W!YUevIPETX@@(k9mU$0+3e*E|}fN4tw zTUJBL+X*5Hl87x#ZdCx+0eC8kqMbny5CB}bZ~?Eq_8LaUCa`wxI*gBxV_>iWVM{xp z03yc(_y)k`y=F*$UVR^idSy_-CJDuo~i)TW-0q4)3$KfNt)JLf{JludWQNmV0Ove+7CCG$JisU^#WvH4h4UQf#UJy%| zgfZu($eSMqb}g_&@Zvabz<2ah%w3+r{rBIGN~NN=*|TTQVE~6M_+m%gmkVN%3#y6+ z72$>s02l=D=dZl-%AY>`@Wa0&KlAa&ALHP`gQ#6Iim9o!s9iIHYPA7jt1hX_MFo*~ zY`db=I&&V%z5uQHCfVsJ77LsUzO!deun09Z+4z-j{EN&ws6e*5h|xaXdGejqhYsQB z(W9Usz~Im@0_BQ!DNZ8~nTNA=ZrlE@dVK*imo8yyYBe@)+=#Vn*BYC=^Ugb;Zr!@| zUjh6q3Cm{1Z7#VjSO9XT07@0C3Kje<0Dt!0d++_;U3cAegX=1C`t)g>J9o}EAa8wT zwOS3=Uw=J@hlexoz5o9E$M3%T?za-Cc-d@0nAd+&{F)~uQIr_NhH+gD$G_3c}4y>)E+_U(rN{4an{637;i z*7@dz+c{qVBCF7>T>v2fl!f_FK&WmL0B!+rBY^Qc?zm%Y<;s-<{#1JFC;R&AujfDf z@WTrLE&%ufz)>`6eRWIm=B-;DR^dIlp;G{*3d)3xR6?bORdG}AO(qH%SpQ4H?M)nZ z*ps6!{&@&@ZOU7I*fpQPC+pvlP&XSw+Xan~Ey}|MV7q-m`S7{g zwF|2Yt(70`w-@4lnqNZ}%{5@hXgAOMU+ z1Mu**1|JFUqFc{H>x$j+=+8ELCDA-denAe zD_q15+N(1V%q%J8xSk%uE9-(*y$jlvSda_c%#O3lVV8E)<(9fs&x4l_p6eKP^JVG{2?rn+K{{wwtRlLoutg!$9 N002ovPDHLkV1n;C&_e(K diff --git a/main/layout/images/gray-theme/magnifier_noarrow_line.png b/main/layout/images/gray-theme/magnifier_noarrow_line.png deleted file mode 100755 index fcfdb105e9a5c7421e3f73e7055a986afebea944..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9530 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 Y12Zmoxnh_xe*gdg07*qoM6N<$g62T-Jpcdz diff --git a/main/layout/images/gray-theme/reader_handler_down.png b/main/layout/images/gray-theme/reader_handler_down.png deleted file mode 100755 index 8e957614600503a31694729bd72b5c44b093b972..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6139 zcmVKLZ*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} z000dpNklyKRLUB^Gqxy;PouikaM-q=ZP$95c`iPR*hgph!Mwo=|8`T~#; zp`wv0RZvy*1&F+;Kz&gpBqUxHkoXIbfHtHFMI<;))fT#T>?C%)>$P`hZ?khf*XP2E zIkS28?3wj$>?CBQpN>Xz=6QbK-}iTY&Wtd|@JW6-e8OMiGr#@SyISBczx5)%Bl!B) z|Dpu^S|*>(KK_O5`ajwAHQ;67<-hvYi-|JuXWw}7;{^bG26(}9-QPcd?i3H7J;kX9 zPhf!gx%)5%Zr)x6;N9y>T)BFUD{o&zDfN%Q-vMuaTmVi1Uzwa3|LSv}e}>0?{sLaf zM`}>UptQjN+86}j2!SI&2tg7j{Pbs+`R?~#WqZ5vH^AQl*FH)Be=<<1eESQ(@ib5U z(i0dVh?OBx8mYU=YXe{~21KT~1GtXB6#~~07_E5y^*8zc_y3b9ioXW@^nSkjIqVX8=^Mkr zKgWfK&+*PX*M2<=BOiG6!vyf{)2ANz(-*$Pq#gM!hi#{QHLi;2ZZHo%!=W`qJ+qg-bn5X~&XS?Y8t`MCvX8sWgu3 za_a0EuD^Tz$uI~c@L%^1fH7Yf8Xo%2A3py(;QMTc3GFx~RVs6pVrkavbXqOEa(UnT zWX1$SF#q5Ky!+PGXJnfG7$M%dlWN|bZdhKpDCQq|^2^UX_nY_w6>6P`PApLc6j;5Y)mT;a)QpXNXQ<-1>AUby(L^N&1f zJ}?8z3m3)wg(sfB|HS;)KKs-!(u@)sVL~GJT7F}7l{a4c9xFF)5VYG2jg2unHOe3>Y{`)nw)=V9nV`658%HSZb?<0i3XpKx$!cK?w_BPjk z_P-=?%-n;Y%6Y2k-Va=O?9;ruvibt>oy-f&fqS8z^2aYc{`CC)bB|6RnI=e55~1>#w1;;rN-e%$_*O;K(SB=VJ`r`w_T)iJ{RkCXXFs^5}hRRjV|%wsx)6 z6%D}H@c7fa40HM@p3zlQgzz`Th?zb(5`ZHF zp6gKdJ>twDyNaSQDBW!_fYD4Rohfg2xll%lumNZ#<0MH@D)ZX{nn%Va0D(~&eMoVI zV6fyfSn|-CJ!@;FQBon36s=^C0qDhn=($l}24oVi2c1sVVH%2t|M8hwI_)+}>74>} zpdkdP_&#Gp6^!d+5}oh8x&f~gNgN}SsFnjzn1yWj@!GZO?N+l%DpfbFX}zcDOddVD zQx6R0z*)$19VSNx7#pn6QS4b)8-q+!lu|@NK)befD>L>U5Kd75176gsCutmC-dx-4 zx=}%v85ka6WMUG8z|Dg2PT9wG9HvHwn42EQ_e*Sta?d?7l_YUOtIpe3Pb>hU z2!QSXJ1oc~eq;6atv&67Ei=dF7%ce=m3;<$4_5$1RoEEHp3BkkVa^;s!tD4k@72RD zyS8YJk`kFD)HgSgN&H66`i>34D{vvpjn-bi_1=x=Po6#ZK4h`GmN=fv=*$dW++kb@ z!X%{~#)NU&9aJ1a+4mS3tZ;N6=1;ieJvHgJbQe;kb#}O zfzUW4Mlet=F*P>C{WIgtO^-1!I6!O!*S0!bt~Q9IDpX!6MbrsUGUdH1SJdl3m)$@89uaDxp(sq4y@ui!?qt6Zvk1#nqi|cv& zf;iMGOT$SN5{Ds;T8-7ECF-k-FBLU!dt7Mb$ehU403Rr2ZZrT4D47Uj^hOXSpB|f> z#PzalmH{vyRE$ApmQSLHC`O^Dw5v2F4npD}Kr2mc zeVxU(ud=>(7h16m|&p-0yt{BicQQ3{srmeYt>rxs8t+2KI==8Dq z^Y@)N$>8uXuIJ;I%Xp;{ju3mYmC+h0Q_?6xrri`8wA-vMEwZ_?e5F%c`$^E)TD0~} zt^HL_w>|B&v978>d0S-ItgVF2+Ex;@s`btF3sXmr&5TbUVPa~!8`!?T$E~E4gzYve zO=&e6)HgTSs;;aD_03C-wdIA(>V^ARAXHA*U4_gPSU=4c?)hIYhXngX4$DV#R8wt%WpO;CBl8U!}@?)Y_<3`Zfe5bX!dOc^b)Y_-FZ(6{D zDQf17#X!+wQ4UPnTeP*gdVTHs!b@=&2Eu3@A@-bJD5XfE2pLDMwd)HnWy<%AmFAR= z3XCQ#2KoZf1&c;jMhLCNq0HG!_7@BvBY3)1;PTIXS>S>D@43r!)H+ z=2DwXqj0@huV+tU$T6Uaf&iIBTb5rZR>mpXBRUWR*0G%~u#TP5+F5_l6T8TyN!VIx zZg0O|=WPbGA`U}j9Bx>#)l4M^2nq~jGq9tx*QYPD0l1bp1!qY+=`CtCR$7gE z_t8>sP|u2%R$Tx|&|b3?i!1NZ@j5^`Y z;gmL@q{3)J9EC)k#_de;PM`Ji0Coyj&;RX%-hK?|%nM|nCNB@R7g$=x(XD!|c79^^ zXtz;Q3Mo^fC`6|5y3x9m0SGL&>DV^V!Gbblms(Ko3CgmE^2$1Jt&EM(yT1&F$Lfdp@M4LQ6@f z*(7Q=FIfQE1wm`OO=1J8(x|Xd_*x0(>X|;%=1eq$*Bta`p*l82g zH!tt^-JI*FJ6XT)1CBl*`qc(Itp>*EAnvp-Zmh15CNVOOY1L~)t;R)}MB4@5+b`$u ztNgydRw)3H&rDH40g8aIU0Zu~ZF!M648R!bTN|`%Yp>?M6XvRJVaC}{`8z)38=IZ) z%?kPKgLP8elityXmqwkoUl|%xNTW%Cv$KYNc2IReB;BEl)8-jXmx3Sh& zxe-y`3+3+>fV>MiR=TwTBv!tccj|FI)EFp;gQ6gg3aV{Vlr}$Z2J)>p79iJppFgm= ztMqxV0OT9K-g`HDZ@ZJqrO*Et4CGnJ0}=(XqVFYuyZY_)KC?r=BSLkUPV=K;Ab++> z!BZdmGhJ}+$HPDY3;DF#&+qSv_3sIQ0!8lhV1|38Jb?J5{{iCv1^~0pI1u)hm5TrX N002ovPDHLkV1hh@!ASrB diff --git a/main/layout/images/gray-theme/reader_handler_up.png b/main/layout/images/gray-theme/reader_handler_up.png deleted file mode 100755 index 172e2a377bbfac2395315474d8406b707e7ea965..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3454 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 Ef=*yBkN^Mx diff --git a/main/layout/ivug-base.edc b/main/layout/ivug-base.edc index fae85c6..3c2ec3e 100755 --- a/main/layout/ivug-base.edc +++ b/main/layout/ivug-base.edc @@ -1,47 +1,34 @@ -/* - * 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. + */ collections { group { name: "ivug_base"; parts { part { - name: "indication"; - type: RECT; - scale: 1; - description { - state: "default" 0.0; - rel1 { relative: 0.0 0.0; } - rel2 { relative: 1.0 0.0; } - min: 0 0; - fixed: 0 1; - align: 0.5 0.0; - visible: 0; - } - } - - part { name: "clip"; type: RECT; scale: 1; + mouse_events: 0; description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to_y: "indication";} + visible: 1; + rel1 { relative: 0.0 0.0; } rel2 { relative: 1.0 1.0; } + color: 255 255 255 255; } } part { @@ -52,6 +39,8 @@ collections { scale: 1; clip_to: "clip"; description { + state: "default" 0.0; + visible: 1; rel1.to: "clip"; rel2.to: "clip"; } diff --git a/main/layout/ivug-button.edc b/main/layout/ivug-button.edc deleted file mode 100755 index 19fb76d..0000000 --- a/main/layout/ivug-button.edc +++ /dev/null @@ -1,1332 +0,0 @@ -/* - * 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 BUTTON_STATE_ENABLED 0 -#define BUTTON_STATE_DISABLED 1 - -#define NAVIBAR_PREV_BUTTON_LEFT_SEPARATOR_COLOR_INC 3 3 3 255 -#define NAVIBAR_PREV_BUTTON_RIGHT_SEPARATOR_COLOR_INC 52 52 52 255 - -/* Default black themem text color -#define BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC 78 73 69 255 -*/ -#define BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC 255 255 255 255 -#define BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC 255 255 255 255 -#define BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC 255 255 255 255 -#define BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC 185 185 185 255 - -#define BUTTON_TEXT_STYLE1_BG_MIN_INC 100 74 -#define BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC 148 74 -#define BUTTON_TEXT_STYLE1_ICONONLY_BG_MIN_INC 74 74 -#define BUTTON_TEXT_STYLE1_BG_BORDER_INC 5 5 5 5 -#define BUTTON_TEXT_STYLE1_PADDING_MIN_INC 5 5 -#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC 38 38 -#define BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC 10 0 -#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC 38 38 -#define BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC 38 38 -#define BUTTON_TEXT_STYLE1_FONT_SIZE_INC 28 - -#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_DISABLED_COLOR_INC 160 151 145 255 - -#define BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_W_INC 36 -#define BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_H_INC 74 -#define BUTTON_NAVIBAR_CENTER_BG_NORMAL_BORDER_INC 5 5 5 5 - -#define BUTTON_NAVIBAR_CENTER_PADDING_MIN_MAX_INC 16 2 -#define BUTTON_NAVIBAR_CENTER_ICON_RECT_VISIBLE_MIN_SIZE 36 36 -#define BUTTON_NAVIBAR_CENTER_PADDING_AFTER_ICON_VISIBLE_MIN_INC 6 0 - -#define BUTTON_NAVIBAR_CENTER_PADDING_BEFORE_TEXT_DEFAULT_MIN_INC 6 0 - -#define BUTTON_NAVIBAR_BACK_BUTTON_BUTTON_IMAGE_MIN_INC 106 40 -#define BUTTON_NAVIBAR_BACK_BUTTON_BG_MIN_MAX_INC 36 32 - -#define BUTTON_NAVIBAR_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC 36 36 -#define BUTTON_NAVIBAR_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC 38 38 - -#define BUTTON_NAVIBAR_CENTER_TEXT_FONT_SIZE_INC 32 - -#define NAVIBAR_TITLE_RIGHT_SEPARATOR_COLOR_INC 69 87 94 0 -#define NAVIBAR_TITLE_LEFT_SEPARATOR_COLOR_INC 0 15 30 0 - - -#define IV_EDC_IMAGE_OPTION_HEADER_BT "T01_Option_header_bt.png" -#define IV_EDC_IMAGE_OPTION_HEADER_BT_DIM "T01_Option_header_bt_dim.png" -#define IV_EDC_IMAGE_OPTION_HEADER_BT_PRESS "T01_Option_header_bt_press.png" - -#define IV_EDC_IMAGE_NAVIFRAME_MORE_BT "T01_title_btn.png" -#define IV_EDC_IMAGE_NAVIFRAME_MORE_BT_DIM "T01_title_btn.png" -#define IV_EDC_IMAGE_NAVIFRAME_MORE_BT_PRESS "T01_title_btn_press.png" - -#define IV_EDC_IMAGE_BTN_PREV "T01_btn_prev.png" -#define IV_EDC_IMAGE_BTN_PREV_PRESS "00_winset_btn_prev.png" /* TODO: Replace with T01_XXX image */ - -#define IV_EDC_OPTION_HEADER_BT_TEXT_COLOR_INC 255 255 255 255 - -#define BUTTON_MULTILINE_TEXT_FONT_SIZE_INC 32 /* */ - -collections { - -/////////////////////////////////////////////////////////////////////////////////////// - group { name: "elm/button/base/style1"; - alias: "elm/button/base/text_only/style1"; - alias: "elm/button/base/center"; - alias: "elm/button/base/icon_and_text/center"; - alias: "elm/button/base/nocontents/search_button"; - alias: "elm/button/base/naviframe/title/default"; - images { - image: IV_EDC_IMAGE_NAVIFRAME_MORE_BT COMP; - image: IV_EDC_IMAGE_NAVIFRAME_MORE_BT_DIM COMP; - image: IV_EDC_IMAGE_NAVIFRAME_MORE_BT_PRESS COMP; - } - script { - public button_state = BUTTON_STATE_ENABLED; - } - parts { - part { name: "button_image"; - scale: 1; - description { state: "default" 0.0; - image { - normal: IV_EDC_IMAGE_NAVIFRAME_MORE_BT; - border: BUTTON_TEXT_STYLE1_BG_BORDER_INC; - border_scale: 1; - } - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - image { - normal: IV_EDC_IMAGE_NAVIFRAME_MORE_BT_PRESS; - } - } - description { state: "disabled" 0.0; - inherit: "default" 0.0; - image { - normal: IV_EDC_IMAGE_NAVIFRAME_MORE_BT_DIM; - } - } - description { state: "focused" 0.0; - inherit: "default" 0.0; - image { - normal: IV_EDC_IMAGE_NAVIFRAME_MORE_BT_PRESS; - } - } - } - part { name: "padding_left_top"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - align: 0.0 0.0; - rel2 { - relative: 0.0 0.0; - } - min: BUTTON_TEXT_STYLE1_PADDING_MIN_INC; - fixed: 1 1; - visible: 0; - } - } - part { name: "bg"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - min: BUTTON_TEXT_STYLE1_BG_MIN_INC; - visible: 0; - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - min: BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC; - } - description { state: "icononly" 0.0; - inherit: "default" 0.0; - min: BUTTON_TEXT_STYLE1_ICONONLY_BG_MIN_INC; - } - } - part { name: "padding_right_bottom"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - align: 1.0 1.0; - rel1 { - relative: 1.0 1.0; - } - min: BUTTON_TEXT_STYLE1_PADDING_MIN_INC; - fixed: 1 1; - visible: 0; - } - } - part { name: "icon_rect"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - visible: 0; - min: 0 0; - fixed: 1 0; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 1.0 0.0; - to_x: "padding_left_top"; - to_y: "padding_right_bottom"; - } - align: 0.0 0.5; - } - description { state: "visible" 0.0; - visible: 0; - min: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC; - max: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC; - fixed: 1 0; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 1.0 0.0; - to_x: "padding_left_top"; - to_y: "padding_right_bottom"; - } - align: 0.0 0.5; - } - description { state: "icononly" 0.0; - inherit: "default" 0.0; - } - } - part { name: "padding_after_icon"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; //when only icon or no icon is there - align: 0.0 0.0; - rel1 { - relative: 1.0 0.0; - to: "icon_rect"; - } - rel2 { - to: "icon_rect"; - } - fixed: 1 0; - min: 0 0; - visible: 0; - } - description { state: "visible" 0.0; - visible: 0; - align: 0.0 0.0; - rel1 { - relative: 1.0 0.0; - to: "icon_rect"; - } - rel2 { - to: "icon_rect"; - } - fixed: 1 0; - min: BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC; - } - description { state: "icononly" 0.0; - inherit: "default" 0.0; - } - } - part { name: "padding_before_text"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; //when only icon or no icon is there - align: 1.0 0.5; - rel1 { - relative: 0.0 1.0; - to_x: "elm.text"; - to_y: "padding_left_top"; - } - rel2 { - relative: 0.0 0.0; - to_x: "elm.text"; - to_y: "padding_right_bottom"; - } - fixed: 1 0; - min: BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC; - visible: 0; - } - } - part { name: "elm.swallow.content"; - type: SWALLOW; - scale: 1; - clip_to: "clipper"; - description { state: "default" 0.0; - visible: 0; - align: 0.0 0.5; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 1.0 0.0; - to_x: "padding_left_top"; - to_y: "padding_right_bottom"; - } - fixed: 1 0; - } - description { state: "visible" 0.0; - fixed: 1 0; - min: BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC; - max: BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC; - align: 1.0 0.5; - rel1 { - relative: 0.0 1.0; - to_x: "padding_before_text"; - to_y: "padding_left_top"; - } - rel2 { - relative: 0.0 0.0; - to_x: "padding_before_text"; - to_y: "padding_right_bottom"; - } - } - description { state: "icononly" 0.0; - min: BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC; - max: BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC; - align: 0.5 0.5; - } - } - part { name: "elm.text"; - type: TEXT; - mouse_events: 0; - scale: 1; - clip_to: "clipper"; - description { state: "default" 0.0; - visible: 0; - rel1 { - relative: 1.0 1.0; - to_x: "padding_after_icon"; - to_y: "padding_left_top"; - } - rel2 { - relative: 0.0 0.0; - to: "padding_right_bottom"; - } - color: BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC; - text { - font: "HelveticaNeue:style=Medium"; - size: BUTTON_TEXT_STYLE1_FONT_SIZE_INC; - min: 0 0; - max: 1 0; - } - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - visible: 1; - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC; - } - description { state: "disabled" 0.0; - inherit: "default" 0.0; - color: 0 0 0 128; - } - description { state: "disabled_visible" 0.0; - inherit: "default" 0.0; - color: BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC; - visible: 1; - } - description { state: "focused" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC; - } - } - part { name: "over2"; - type: RECT; - repeat_events: 1; - ignore_flags: ON_HOLD; - description { state: "default" 0.0; - color: 0 0 0 0; - } - } - part { name: "over3"; - type: RECT; - repeat_events: 1; - description { state: "default" 0.0; - color: 0 0 0 0; - } - } - part { name: "clipper"; - type: RECT; - description { state: "default" 0.0; - color: 255 255 255 255; - } - } - part { name: "disabler"; - type: RECT; - description { state: "default" 0.0; - color: 0 0 0 0; - visible: 0; - } - description { state: "disabled" 0.0; - inherit: "default" 0.0; - visible: 1; - } - } - } - programs { - program { name: "button_click"; - signal: "mouse,down,1"; - source: "over2"; - action: SIGNAL_EMIT "elm,action,press" ""; - after: "button_click_anim"; - } - program { name: "button_click_anim"; - action: STATE_SET "clicked" 0.0; - target: "button_image"; - after: "text_clicked"; - } - program { name: "text_clicked"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.text", st, 30, vl); - if (!strcmp(st, "visible")) - set_state(PART:"elm.text", "clicked", 0.0); - } - } - program { name: "button_unpress"; - action: SIGNAL_EMIT "elm,action,unpress" ""; - } - program { name: "button_mouseout_clicked"; - signal: "mouse,up,1"; - source: "over3"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.swallow.content", st, 30, vl); - if (strcmp(st, "icononly")) - { - emit("elm,action,default,text,set", ""); - set_state(PART:"elm.text", "visible", 0.0); - } - if (get_int(button_state) != BUTTON_STATE_DISABLED) - set_state(PART:"button_image", "default", 0.0); - } - after: button_unpress; - } - program { name: "button_unclick3"; - signal: "mouse,clicked,1"; - source: "over2"; - action: SIGNAL_EMIT "elm,action,click" ""; - } - program { name: "text_show"; - signal: "elm,state,text,visible"; - source: "elm"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.swallow.content", st, 30, vl); - if (!strcmp(st, "icononly")) - { - set_state(PART:"elm.swallow.content", "visible", 0.0); - set_state(PART:"icon_rect", "visible", 0.0); - set_state(PART:"padding_after_icon", "visible", 0.0); - set_state(PART:"bg", "visible", 0.0); - } - if (get_int(button_state) != BUTTON_STATE_DISABLED) - set_state(PART:"elm.text", "visible", 0.0); - else - set_state(PART:"elm.text", "disabled_visible", 0.0); - } - } - program { name: "text_hide"; - signal: "elm,state,text,hidden"; - source: "elm"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.swallow.content", st, 30, vl); - if (!strcmp(st, "visible")) - { - set_state(PART:"elm.swallow.content", "icononly", 0.0); - set_state(PART:"icon_rect", "icononly", 0.0); - set_state(PART:"padding_after_icon", "icononly", 0.0); - set_state(PART:"bg", "icononly", 0.0); - } - set_state(PART:"elm.text", "default", 0.0); - } - } - program { name: "icon_show"; - signal: "elm,state,icon,visible"; - source: "elm"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.text", st, 30, vl); - if (!strcmp(st, "visible")) - { - set_state(PART:"elm.swallow.content", "visible", 0.0); - set_state(PART:"icon_rect", "visible", 0.0); - set_state(PART:"padding_after_icon", "visible", 0.0); - set_state(PART:"bg", "visible", 0.0); - } - else - { - set_state(PART:"elm.swallow.content", "icononly", 0.0); - set_state(PART:"icon_rect", "icononly", 0.0); - set_state(PART:"padding_after_icon", "icononly", 0.0); - set_state(PART:"bg", "icononly", 0.0); - } - } - } - program { name: "icon_hide"; - signal: "elm,state,icon,hidden"; - source: "elm"; - action: STATE_SET "default" 0.0; - target: "elm.swallow.content"; - target: "padding_after_icon"; - target: "icon_rect"; - target: "bg"; - } - program { name: "disable"; - signal: "elm,state,disabled"; - source: "elm"; - action: STATE_SET "disabled" 0.0; - target: "button_image"; - target: "disabler"; - after: "disable_text"; - } - program { name: "disable_text"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.text", st, 30, vl); - if (!strcmp(st, "visible")) - set_state(PART:"elm.text", "disabled_visible", 0.0); - else - set_state(PART:"elm.text", "disabled", 0.0); - set_int(button_state, BUTTON_STATE_DISABLED); - } - } - program { name: "enable"; - signal: "elm,state,enabled"; - source: "elm"; - action: STATE_SET "default" 0.0; - target: "button_image"; - target: "disabler"; - after: "enable_text"; - } - program { name: "enable_text"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.text", st, 30, vl); - if (!strcmp(st, "disabled_visible")) - set_state(PART:"elm.text", "visible", 0.0); - else - set_state(PART:"elm.text", "default", 0.0); - set_int(button_state, BUTTON_STATE_ENABLED); - } - } - program { name: "focused"; - //signal: "elm,action,focus"; - //source: "elm"; - action: STATE_SET "focused" 0.0; - target: "button_image"; - target: "elm.text"; - } - program { name: "unfocused"; - //signal: "elm,action,unfocus"; - //source: "elm"; - action: STATE_SET "default" 0.0; - target: "button_image"; - after: "unfocus_text"; - } - program { name: "unfocus_text"; - action: STATE_SET "visible" 0.0; - target: "elm.text"; - } - } - } - -/////////////////////////////////////////////////////////////////////////////////////// - group { name: "elm/button/base/naviframe_control/default"; - alias: "elm/button/base/naviframe_control/center"; - /* TODO: Remove this alias later */ - alias: "elm/button/base/navigationbar_control/center"; - script { - public button_state = BUTTON_STATE_ENABLED; - } - images.image: IV_EDC_IMAGE_OPTION_HEADER_BT COMP; - images.image: IV_EDC_IMAGE_OPTION_HEADER_BT_DIM COMP; - images.image: IV_EDC_IMAGE_OPTION_HEADER_BT_PRESS COMP; - parts { - part { name: "button_image"; - type: IMAGE; - mouse_events: 1; - scale: 1; - description { state: "default" 0.0; - min: BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_W_INC BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_H_INC; - rel1.offset: 0 0; - rel2.offset: -1 -1; - image.normal: IV_EDC_IMAGE_OPTION_HEADER_BT; - image.border: BUTTON_NAVIBAR_CENTER_BG_NORMAL_BORDER_INC; - color: IV_EDC_OPTION_HEADER_BT_TEXT_COLOR_INC; - } - description { state: "disabled" 0.0; - inherit: "default" 0.0; - image.normal: IV_EDC_IMAGE_OPTION_HEADER_BT; /*FIXME*/ - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - image.normal: IV_EDC_IMAGE_OPTION_HEADER_BT_PRESS; - } - } - part { - name: "padding_left_top"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - align: 0.0 0.0; - rel1.relative: 0.0 0.0; - rel2.relative: 0.0 0.0; - min: BUTTON_NAVIBAR_CENTER_PADDING_MIN_MAX_INC; - fixed: 1 1; - visible: 0; - } - } - part { - name: "padding_right_bottom"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - align: 1.0 1.0; - rel1.relative: 1.0 1.0; - rel2.relative: 1.0 1.0; - min: BUTTON_NAVIBAR_CENTER_PADDING_MIN_MAX_INC; - fixed: 1 1; - visible: 0; - } - } - part { - name: "icon_rect"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - visible: 1; - min: 0 0; - fixed: 1 0; - rel1 { relative: 1.0 1.0; to: "padding_left_top"; } - rel2 { relative: 1.0 0.0; to_x: "padding_left_top"; to_y: "padding_right_bottom"; } - align: 0.0 0.5; - color: 0 0 0 0; - } - description { state: "visible" 0.0; - visible: 1; - min: BUTTON_NAVIBAR_CENTER_ICON_RECT_VISIBLE_MIN_SIZE; - fixed: 1 0; - rel1 { relative: 1.0 1.0; to: "padding_left_top"; } - rel2 { relative: 1.0 0.0; to_x: "padding_left_top"; to_y: "padding_right_bottom"; } - align: 0.0 0.5; - color: 0 0 0 0; - } - description { state: "icononly" 0.0; - inherit: "default" 0.0; - } - } - part { - name: "padding_after_icon"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; //when only icon or no icon is there - align: 0.0 0.0; - rel1 { relative: 1.0 0.0; to: "icon_rect"; } - rel2 { relative: 1.0 1.0; to: "icon_rect"; } - fixed: 1 0; - min: 0 0; - color: 0 0 0 0; - } - description { state: "visible" 0.0; - visible: 1; - align: 0.0 0.0; - rel1 { relative: 1.0 0.0; to: "icon_rect"; } - rel2 { relative: 1.0 1.0; to: "icon_rect"; } - fixed: 1 0; - min: BUTTON_NAVIBAR_CENTER_PADDING_AFTER_ICON_VISIBLE_MIN_INC; - color: 0 0 0 0; - } - description { state: "icononly" 0.0; - inherit: "default" 0.0; - } - } - part { - name: "padding_before_text"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; //when only icon or no icon is there - align: 1.0 0.5; - rel1 { relative: 0.0 1.0; to_x: "elm.text"; to_y: "padding_left_top"; } - rel2 { relative: 0.0 0.0; to_x: "elm.text"; to_y: "padding_right_bottom"; } - fixed: 1 0; - min: BUTTON_NAVIBAR_CENTER_PADDING_BEFORE_TEXT_DEFAULT_MIN_INC; - color: 0 0 0 0; - } - } - part { name: "elm.swallow.content"; - type: SWALLOW; - scale: 1; - clip_to: "clipper"; - description { state: "default" 0.0; - visible: 0; - align: 0.0 0.5; - rel1 { relative: 1.0 1.0; to: "padding_left_top"; } - rel2 { relative: 1.0 0.0; to_x: "padding_left_top"; to_y: "padding_right_bottom"; } - fixed: 1 0; - } - description { state: "visible" 0.0; - fixed: 1 0; - visible: 1; - min: BUTTON_NAVIBAR_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC; - max: BUTTON_NAVIBAR_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC; - align: 1.0 0.5; - rel1 { relative: 0.0 1.0; to_x: "padding_before_text"; to_y: "padding_left_top"; } - rel2 { relative: 0.0 0.0; to_x: "padding_before_text"; to_y: "padding_right_bottom"; } - aspect: 1.0 1.0; - aspect_preference: VERTICAL; - } - description { state: "icononly" 0.0; - visible: 1; - min: BUTTON_NAVIBAR_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC; - max: BUTTON_NAVIBAR_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC; - rel1 { relative: 1.0 1.0; to: "padding_left_top"; } - rel2 { relative: 0.0 0.0; to: "padding_right_bottom"; } - align: 0.5 0.5; - aspect: 1.0 1.0; - aspect_preference: VERTICAL; - } - } - part { name: "elm.text"; - type: TEXT; - mouse_events: 0; - scale: 1; - clip_to: "clipper"; - description { state: "default" 0.0; - visible: 0; - rel1 { relative: 1.0 1.0; to_x: "padding_after_icon"; to_y: "padding_left_top"; } - rel2 { relative: 0.0 0.0; to: "padding_right_bottom"; } - align: 0.5 0.5; - color: 255 255 255 255; - text { - font: "HelveticaNeue:style=Medium"; - size: BUTTON_NAVIBAR_CENTER_TEXT_FONT_SIZE_INC; - min: 0 0; - max: 1 0; - align: 0.5 0.5; - } - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - visible: 1; - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - visible: 1; - min: 0 0; - } - description { state: "focused" 0.0; - inherit: "default" 0.0; - visible: 1; - min: 0 0; - color: 255 255 255 255; - } - } - part { name: "over2"; - type: RECT; - mouse_events: 1; - repeat_events: 1; - ignore_flags: ON_HOLD; - description { state: "default" 0.0; - color: 0 0 0 0; - } - } - part { name: "over3"; - type: RECT; - mouse_events: 1; - repeat_events: 1; - description { state: "default" 0.0; - color: 0 0 0 0; - } - } - part { name: "clipper"; - type: RECT; - description { state: "default" 0.0; - color: 255 255 255 255; - } - description { state: "disabled" 0.0; - color: 255 255 255 127; - } - } - part { name: "disabler"; - type: RECT; - description { state: "default" 0.0; - color: 0 0 0 0; - visible: 0; - } - description { state: "disabled" 0.0; - inherit: "default" 0.0; - visible: 1; - } - } - } - programs { - program { name: "button_click"; - signal: "mouse,down,1"; - source: "over2"; - action: SIGNAL_EMIT "elm,action,press" ""; - after: "button_click_anim"; - } - program { name: "button_click_anim"; - action: STATE_SET "clicked" 0.0; - target: "button_image"; - after: "text_clicked"; - } - program { name: "text_clicked"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.text", st, 30, vl); - if (!strcmp(st, "visible")) - set_state(PART:"elm.text", "clicked", 0.0); - } - } - program { name: "button_unpress"; - action: SIGNAL_EMIT "elm,action,unpress" ""; - } - program { name: "button_mouseout_clicked"; - signal: "mouse,up,1"; - source: "over3"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.swallow.content", st, 30, vl); - if (strcmp(st, "icononly")) - { - emit("elm,action,default,text,set", ""); - set_state(PART:"elm.text", "visible", 0.0); - } - if(get_int(button_state) != BUTTON_STATE_DISABLED) - set_state(PART:"button_image", "default", 0.0); - } - after: button_unpress; - } - program { name: "button_unclick3"; - signal: "mouse,clicked,1"; - source: "over2"; - action: SIGNAL_EMIT "elm,action,click" ""; - } - program { name: "text_show"; - signal: "elm,state,text,visible"; - source: "elm"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.swallow.content", st, 30, vl); - if (!strcmp(st, "icononly")) - { - set_state(PART:"elm.swallow.content", "visible", 0.0); - set_state(PART:"icon_rect", "visible", 0.0); - set_state(PART:"padding_after_icon", "visible", 0.0); - } - set_state(PART:"elm.text", "visible", 0.0); - } - } - program { name: "text_hide"; - signal: "elm,state,text,hidden"; - source: "elm"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.swallow.content", st, 30, vl); - if (!strcmp(st, "visible")) - { - set_state(PART:"elm.swallow.content", "icononly", 0.0); - set_state(PART:"icon_rect", "icononly", 0.0); - set_state(PART:"padding_after_icon", "icononly", 0.0); - } - set_state(PART:"elm.text", "default", 0.0); - } - } - program { name: "icon_show"; - signal: "elm,state,icon,visible"; - source: "elm"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.text", st, 30, vl); - if (!strcmp(st, "visible")) - { - set_state(PART:"elm.swallow.content", "visible", 0.0); - set_state(PART:"icon_rect", "visible", 0.0); - set_state(PART:"padding_after_icon", "visible", 0.0); - } - else - { - set_state(PART:"elm.swallow.content", "icononly", 0.0); - set_state(PART:"icon_rect", "icononly", 0.0); - set_state(PART:"padding_after_icon", "icononly", 0.0); - } - } - } - program { name: "icon_hide"; - signal: "elm,state,icon,hidden"; - source: "elm"; - action: STATE_SET "default" 0.0; - target: "elm.swallow.content"; - target: "icon_rect"; - target: "padding_after_icon"; - } - program { name: "disable"; - signal: "elm,state,disabled"; - source: "elm"; - action: STATE_SET "disabled" 0.0; - target: "button_image"; - target: "clipper"; - target: "disabler"; - after: "disable_text"; - } - program { name: "disable_text"; - script { - set_int(button_state, BUTTON_STATE_DISABLED); - set_state(PART:"elm.text", "visible", 0.0); - } - } - program { name: "enable"; - signal: "elm,state,enabled"; - source: "elm"; - action: STATE_SET "default" 0.0; - target: "button_image"; - target: "clipper"; - target: "disabler"; - after: "enable_text"; - } - program { name: "enable_text"; - script { - set_int(button_state, BUTTON_STATE_ENABLED); - set_state(PART:"elm.text", "visible", 0.0); - } - } - program { name: "focused"; - action: STATE_SET "focused" 0.0; - target: "button_image"; - target: "elm.text"; - } - program { name: "unfocused"; - action: STATE_SET "default" 0.0; - target: "button_image"; - after: "unfocus_text"; - } - program { name: "unfocus_text"; - action: STATE_SET "visible" 0.0; - target: "elm.text"; - } - } - } - -/////////////////////////////////////////////////////////////////////////////////////// - group { name: "elm/button/base/multiline"; - alias: "elm/button/base/text_only/multiline"; - images { - image: IV_EDC_IMAGE_OPTION_HEADER_BT COMP; - image: IV_EDC_IMAGE_OPTION_HEADER_BT_PRESS COMP; - image: IV_EDC_IMAGE_OPTION_HEADER_BT_DIM COMP; - } - script { - public button_state = BUTTON_STATE_ENABLED; - } - styles{ - style { name: "btn_multiline_style"; - base: "font=HelveticaNeue:style=Medium font_size="BUTTON_MULTILINE_TEXT_FONT_SIZE_INC" align=center color=#ffffff wrap=mixed"; - tag: "br" "\n"; - tag: "ps" "ps"; - tag: "tab" "\t"; - } - } - parts { - part { name: "button_image"; - mouse_events: 1; - scale: 1; - description { state: "default" 0.0; - min: 10 46; - image { - normal: IV_EDC_IMAGE_OPTION_HEADER_BT; - border: 4 4 3 3; - border_scale: 1; - } - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - image.normal: IV_EDC_IMAGE_OPTION_HEADER_BT_PRESS; - } - description { state: "disabled" 0.0; - inherit: "default" 0.0; - image.normal: IV_EDC_IMAGE_OPTION_HEADER_BT_DIM; - } - description { state: "focused" 0.0; - inherit: "default" 0.0; - image.normal: IV_EDC_IMAGE_OPTION_HEADER_BT_PRESS; - } - } - part { - name: "padding_left_top"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - align: 0.0 0.0; - rel1.relative: 0.0 0.0; - rel2.relative: 0.0 0.0; - min: 2 2; - fixed: 1 1; - visible: 0; - } - } - part { - name: "padding_right_bottom"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - align: 1.0 1.0; - rel1.relative: 1.0 1.0; - rel2.relative: 1.0 1.0; - min: 2 2; - fixed: 1 1; - visible: 0; - } - } - part { - name: "icon_rect"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - visible: 1; - min: 0 40; - fixed: 1 0; - rel1 { relative: 0.0 1.0; to_x: "elm.swallow.content"; to_y: "padding_left_top"; } - rel2 { relative: 1.0 0.0; to_x: "elm.swallow.content"; to_y: "padding_right_bottom"; } - align: 0.0 0.5; - color: 0 0 0 0; - } - } - part { - name: "padding_icon_text"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; //when only icon or no icon is there - align: 0.0 0.0; - rel1 { relative: 1.0 0.0; to: "icon_rect"; } - rel2 { relative: 1.0 1.0; to: "icon_rect"; } - fixed: 1 0; - min: 0 0; - color: 0 0 0 0; - } - description { state: "icononly" 0.0; - inherit: "default" 0.0; - } - description { state: "visible" 0.0; //when icon is visible - align: 0.0 0.0; - rel1 { relative: 1.0 0.0; to: "icon_rect"; } - rel2 { relative: 1.0 1.0; to: "icon_rect"; } - fixed: 1 0; - min: 5 0; - color: 0 0 0 0; - } - } - part { name: "elm.swallow.content"; - type: SWALLOW; - scale: 1; - description { state: "default" 0.0; - visible: 0; - align: 0.0 0.5; - rel1 { relative: 1.0 1.0; to: "padding_left_top"; } - rel2 { relative: 1.0 0.0; to_x: "padding_left_top"; to_y: "padding_right_bottom"; } - fixed: 1 0; - } - description { state: "visible" 0.0; - fixed: 1 0; - visible: 1; - align: 0.0 0.5; - rel1 { relative: 1.0 1.0; to: "padding_left_top"; } - rel2 { relative: 1.0 0.0; to_x: "padding_left_top"; to_y: "padding_right_bottom"; } - aspect: 1.0 1.0; - aspect_preference: VERTICAL; - } - description { state: "icononly" 0.0; - visible: 1; - min: 40 40; - rel1 { relative: 1.0 1.0; to: "padding_left_top"; } - rel2 { relative: 0.0 0.0; to: "padding_right_bottom"; } - align: 0.5 0.5; - aspect: 1.0 1.0; - aspect_preference: VERTICAL; - } - } - part { name: "elm.text"; - type: TEXTBLOCK; - mouse_events: 0; - scale: 1; - description { state: "default" 0.0; - visible: 0; - rel1 { relative: 1.0 1.0; to_x: "padding_icon_text"; to_y: "padding_left_top"; } - rel2 { relative: 0.0 0.0; to: "padding_right_bottom"; } - align: 0.5 0.5; - color: BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC; - text { - style: "btn_multiline_style"; - min: 0 0; - max: 0 1; - } - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - visible: 1; - min: 80 0; - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - visible: 1; - min: 0 0; - color: BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC; - } - description { state: "disabled" 0.0; - inherit: "default" 0.0; - color: 0 0 0 128; - } - description { state: "disabled_visible" 0.0; - inherit: "default" 0.0; - color: BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_DISABLED_COLOR_INC; - visible: 1; - min: 80 0; - } - description { state: "focused" 0.0; - inherit: "default" 0.0; - visible: 1; - min: 0 0; - color: BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC; - } - } - part { name: "over2"; - type: RECT; - mouse_events: 1; - repeat_events: 1; - ignore_flags: ON_HOLD; - description { state: "default" 0.0; - color: 0 0 0 0; - } - } - part { name: "over3"; - type: RECT; - mouse_events: 1; - repeat_events: 1; - description { state: "default" 0.0; - color: 0 0 0 0; - } - } - part { name: "disabler"; - type: RECT; - description { state: "default" 0.0; - color: 0 0 0 0; - visible: 0; - } - description { state: "disabled" 0.0; - inherit: "default" 0.0; - visible: 1; - } - } - } - programs { - program { name: "button_click"; - signal: "mouse,down,1"; - source: "over2"; - action: SIGNAL_EMIT "elm,action,press" ""; - after: "button_click_anim"; - } - program { name: "button_click_anim"; - action: STATE_SET "clicked" 0.0; - target: "button_image"; - after: "text_clicked"; - } - program { name: "text_clicked"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.text", st, 30, vl); - if (!strcmp(st, "visible")) - set_state(PART:"elm.text", "clicked", 0.0); - } - } - program { name: "button_unpress"; - action: SIGNAL_EMIT "elm,action,unpress" ""; - } - program { name: "button_mouseout_clicked"; - signal: "mouse,up,1"; - source: "over3"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.swallow.content", st, 30, vl); - if (strcmp(st, "icononly")) - { - emit("elm,action,default,text,set", ""); - set_state(PART:"elm.text", "visible", 0.0); - } - if(get_int(button_state) != BUTTON_STATE_DISABLED) - set_state(PART:"button_image", "default", 0.0); - } - after: button_unpress; - } - program { name: "button_unclick3"; - signal: "mouse,clicked,1"; - source: "over2"; - action: SIGNAL_EMIT "elm,action,click" ""; - } - program { name: "text_show"; - signal: "elm,state,text,visible"; - source: "elm"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.swallow.content", st, 30, vl); - if (!strcmp(st, "icononly")) - { - set_state(PART:"elm.swallow.content", "visible", 0.0); - set_state(PART:"padding_icon_text", "visible", 0.0); - } - if(get_int(button_state) != BUTTON_STATE_DISABLED) - set_state(PART:"elm.text", "visible", 0.0); - else - set_state(PART:"elm.text", "disabled_visible", 0.0); - } - } - program { name: "text_hide"; - signal: "elm,state,text,hidden"; - source: "elm"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.swallow.content", st, 30, vl); - if (!strcmp(st, "visible")) - { - set_state(PART:"elm.swallow.content", "icononly", 0.0); - set_state(PART:"padding_icon_text", "icononly", 0.0); - } - set_state(PART:"elm.text", "default", 0.0); - } - } - program { name: "icon_show"; - signal: "elm,state,icon,visible"; - source: "elm"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.text", st, 30, vl); - if (!strcmp(st, "visible")) - { - set_state(PART:"elm.swallow.content", "visible", 0.0); - set_state(PART:"padding_icon_text", "visible", 0.0); - } - else - { - set_state(PART:"elm.swallow.content", "icononly", 0.0); - set_state(PART:"padding_icon_text", "icononly", 0.0); - } - } - } - program { name: "icon_hide"; - signal: "elm,state,icon,hidden"; - source: "elm"; - action: STATE_SET "default" 0.0; - target: "elm.swallow.content"; - target: "padding_icon_text"; - } - program { name: "disable"; - signal: "elm,state,disabled"; - source: "elm"; - action: STATE_SET "disabled" 0.0; - target: "button_image"; - target: "disabler"; - after: "disable_text"; - } - program { name: "disable_text"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.text", st, 30, vl); - if (!strcmp(st, "visible")) - set_state(PART:"elm.text", "disabled_visible", 0.0); - else - set_state(PART:"elm.text", "disabled", 0.0); - set_int(button_state, BUTTON_STATE_DISABLED); - } - } - program { name: "enable"; - signal: "elm,state,enabled"; - source: "elm"; - action: STATE_SET "default" 0.0; - target: "button_image"; - target: "disabler"; - after: "enable_text"; - } - program { name: "enable_text"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.text", st, 30, vl); - if (!strcmp(st, "disabled_visible")) - set_state(PART:"elm.text", "visible", 0.0); - else - set_state(PART:"elm.text", "default", 0.0); - set_int(button_state, BUTTON_STATE_ENABLED); - } - } - program { name: "focused"; - //signal: "elm,action,focus"; - //source: "elm"; - action: STATE_SET "focused" 0.0; - target: "button_image"; - target: "elm.text"; - } - program { name: "unfocused"; - //signal: "elm,action,unfocus"; - //source: "elm"; - action: STATE_SET "default" 0.0; - target: "button_image"; - after: "unfocus_text"; - } - program { name: "unfocus_text"; - action: STATE_SET "visible" 0.0; - target: "elm.text"; - } - } - } - -} diff --git a/main/layout/ivug-details.edc b/main/layout/ivug-details.edc index 4c38245..fbba4d7 100755 --- a/main/layout/ivug-details.edc +++ b/main/layout/ivug-details.edc @@ -1,18 +1,18 @@ -/* - * 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. + */ /* @@ -25,6 +25,9 @@ #define BTN_THUMB_PLAY_W_INC 64 #define BTN_THUMB_PLAY_H_INC 64 +#define CONTROLBAR_LARGE_HEIGHT_INC 122 +#define CONTROLBAR_LARGE_LANDSCAPE_H 108 + #define BTN_THUMB_PLAY "T01_btn_thumbnail_play.png" collections { @@ -50,7 +53,7 @@ collections { } part { - name: "detailsview.genlist"; + name: "details_view.genlist"; type: SWALLOW; repeat_events : 0; mouse_events : 1; @@ -60,11 +63,8 @@ collections { visible: 1; rel1 { relative: 0.0 0.0; } rel2 { relative: 1.0 1.0; } -// rel2 { relative: 1.0 0.0; to_y: "detailsview.ctrlbar";} -// rel2 { relative: 0.0 0.0; to_x: "detailsview.thumb"; to_y: "detailsview.ctrlbar";} } } - } } // end of group } // end of collections diff --git a/main/layout/ivug-effect.edc b/main/layout/ivug-effect.edc index 519f1da..7a19e6a 100755 --- a/main/layout/ivug-effect.edc +++ b/main/layout/ivug-effect.edc @@ -1,19 +1,18 @@ -/* - * 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. + */ collections { group { diff --git a/main/layout/ivug-icons.edc b/main/layout/ivug-icons.edc index 95fff2d..38b1169 100755 --- a/main/layout/ivug-icons.edc +++ b/main/layout/ivug-icons.edc @@ -1,19 +1,18 @@ -/* - * 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 DEFINE_ICON(_name, _fname) \ images { image: _fname COMP; } \ @@ -46,15 +45,18 @@ collections { group { name: _name; \ #define BTN_PLAY_VIDEO "T01_btn_play.png" +#define BTN_PAUSED_VIDEO "T01_btn_paused.png" DEFINE_ICON("btn.video.play", BTN_PLAY_VIDEO) +DEFINE_ICON("btn.video.paused", BTN_PAUSED_VIDEO) #define HEADER_ICON_PATH "01_Header icon" #define HEADER_ICON_DONE "01_header_icon_done.png" #define HEADER_ICON_CANCEL "01_header_icon_cancel.png" -#define HEADER_ICON_OTHERS "01_header_icon_others.png" +#define HEADER_ICON_ADD "01_header_icon_add.png" DEFINE_ICON("navi.icon.done", HEADER_ICON_PATH"/"HEADER_ICON_DONE) DEFINE_ICON("navi.icon.cancel", HEADER_ICON_PATH"/"HEADER_ICON_CANCEL) -DEFINE_ICON("navi.icon.others", HEADER_ICON_PATH"/"HEADER_ICON_OTHERS) +DEFINE_ICON("navi.icon.add", HEADER_ICON_PATH"/"HEADER_ICON_ADD) + diff --git a/main/layout/ivug-main.edc b/main/layout/ivug-main.edc index 1b8e803..76264ea 100755 --- a/main/layout/ivug-main.edc +++ b/main/layout/ivug-main.edc @@ -1,27 +1,26 @@ -/* - * 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. + */ // main view -#define LAYOUT_INDICATOR_HEIGHT_INC 50 -#define LAYOUT_INDICATOR_COLOR 92 92 92 255 // Same as Naviframe +#include "ivug-theme.edc" #define NAVI_VIEW_HEIGHT 120 -#define CTRL_VIEW_HEIGHT 95 +#define CTRL_VIEW_HEIGHT 114 collections { group { @@ -72,7 +71,7 @@ group { state: "default" 0.0; align: 0.5 0.0; visible: 1; - rel1 { relative: 0.0 0.0;} + rel1 { relative: 0.0 0.0; } rel2 { relative: 1.0 1.0;} } @@ -83,14 +82,27 @@ group { } } + part { name: "mainview.area"; + type: SWALLOW; + scale: 1; + mouse_events: 0; + repeat_events : 1; + description { + state: "default" 0.0; + align: 0.5 0.5; + visible: 1; + rel1 { relative: 0.0 0.0; offset: 0 LAYOUT_INDICATOR_HEIGHT_INC;} + rel2 { relative: 1.0 1.0;} + } + } } programs { program { - name: "main_view_click"; - signal: "mouse,down,1"; - source: "mainview"; - action: SIGNAL_EMIT "elm,action,press" ""; + name: "main_view_click"; + signal: "mouse,down,1"; + source: "mainview"; + action: SIGNAL_EMIT "elm,action,press" ""; } program { name: "hide_menu"; @@ -111,21 +123,18 @@ group { after: "show_end"; } program { - name: "show_end"; - action: SIGNAL_EMIT "menu,show,finished" "edc"; + name: "show_end"; + action: SIGNAL_EMIT "menu,show,finished" "edc"; } program { - name: "hide_end"; - action: SIGNAL_EMIT "menu,hide,finished" "edc"; + name: "hide_end"; + action: SIGNAL_EMIT "menu,hide,finished" "edc"; } } } -#define EMPTY_VIEW_HEIGHT (720-LAYOUT_INDICATOR_HEIGHT_INC-NAVI_VIEW_HEIGHT-CTRL_VIEW_HEIGHT) -//#define EMPTY_VIEW_HEIGHT 1000 - group { name: "navi_content"; parts { @@ -133,7 +142,8 @@ group { name: "base"; type: RECT; scale: 1; - repeat_events: 1; + mouse_events: 1; + repeat_events: 0; description { state: "default" 0.0; @@ -142,7 +152,6 @@ group { color: 0 0 0 0; } } - part { name: "mainview.slider"; type: SWALLOW; mouse_events: 1; @@ -153,7 +162,46 @@ group { rel1 { relative: 0.0 0.0; } rel2 { relative: 1.0 1.0; } } - } + } + + part { + name: "controlbar_area"; + type: RECT; + scale : 1; + mouse_events:0; + description { + state: "default" 0.0; + min : 0 114; + fixed : 0 1; + rel1{ relative : 0.0 1.0; } + rel2{ relative : 1.0 1.0; } + align: 0.5 1.0; + color: 0 0 0 0; + visible : 1; + } + } + + part { + name: "zoom_slider_area"; + type: SWALLOW; + scale : 1; + mouse_events:1; + description { + state: "default" 0.0; + visible : 1; + min : 375 100; + fixed : 0 1; + color: 255 0 0 255; + rel1{ relative : 0.5 0.0; to_y:"controlbar_area";} + rel2{ relative : 0.5 0.0; to_y:"controlbar_area";} + align: 0.5 1.0; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } #define ICON_ZOOM_GAP 50 @@ -180,19 +228,23 @@ group { type: IMAGE; scale: 1; - mouse_events: 1; + mouse_events: 0; description { visible: 1; fixed: 1 1; min: 56 56; state: "default" 0.0; - align: 0.5 0.0; - /*rel1 { relative: (238/720) ((EMPTY_VIEW_HEIGHT-50-56)/EMPTY_VIEW_HEIGHT);} - rel2 { relative: (238/720) ((EMPTY_VIEW_HEIGHT-50-56)/EMPTY_VIEW_HEIGHT);}*/ - rel1 { relative: ((238+28)/720) 1.0; - offset: 0.0 -56-CTRL_VIEW_HEIGHT;} + align: 1.0 0.0; + /*rel1 { relative: ((238+28)/720) 1.0; + offset: 0.0 -56-CTRL_VIEW_HEIGHT-10;} rel2 { relative: ((238+28)/720) 1.0; - offset: 0.0 -56-CTRL_VIEW_HEIGHT;} + offset: 0.0 -56-CTRL_VIEW_HEIGHT-10;}*/ + rel1 { relative: 0.0 1.0; + to_x: "zoom_slider_area"; + offset: 0.0 -56-CTRL_VIEW_HEIGHT-20;} + rel2 { relative: 0.0 1.0; + to_x: "zoom_slider_area"; + offset: 0.0 -56-CTRL_VIEW_HEIGHT-20;} image.normal: ICON_ZOOM_OUT; } @@ -243,19 +295,23 @@ group { type: IMAGE; scale: 1; - mouse_events: 1; + mouse_events: 0; description { visible: 1; fixed: 1 1; min: 56 56; state: "default" 0.0; - align: 0.5 0.0; - /*rel1 { relative: ((238+56+132)/720) ((EMPTY_VIEW_HEIGHT-50-56)/EMPTY_VIEW_HEIGHT);} - rel2 { relative: ((238+56+132)/720) ((EMPTY_VIEW_HEIGHT-50-56)/EMPTY_VIEW_HEIGHT);}*/ - rel1 { relative: ((720-238-28)/720) 1.0; - offset: 0.0 -56-CTRL_VIEW_HEIGHT;} + align: 0.0 0.0; + /*rel1 { relative: ((720-238-28)/720) 1.0; + offset: 0.0 -56-CTRL_VIEW_HEIGHT-10;} rel2 { relative: ((720-238-28)/720) 1.0; - offset: 0.0 -56-CTRL_VIEW_HEIGHT;} + offset: 0.0 -56-CTRL_VIEW_HEIGHT-10;}*/ + rel1 { relative: 1.0 1.0; + to_x: "zoom_slider_area"; + offset: 0.0 -56-CTRL_VIEW_HEIGHT-20;} + rel2 { relative: 1.0 1.0; + to_x: "zoom_slider_area"; + offset: 0.0 -56-CTRL_VIEW_HEIGHT-20;} image.normal: ICON_ZOOM_IN; } @@ -350,7 +406,21 @@ group { } - programs { + programs { + program { + name: "hide_zoom_slider"; + signal: "elm,state,zoom_slider,hide"; + source: "elm"; + action: STATE_SET "hide" 0.0; + target: "zoom_slider_area"; + } + program { + name: "show_zoom_slider"; + signal: "elm,state,zoom_slider,show"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "zoom_slider_area"; + } program { name: "hide_btn_zoom_out"; signal: "elm,state,btn_zoom_out,hide"; @@ -455,7 +525,7 @@ group { target: "mainview.btn_zoom_in"; } } - } + } diff --git a/main/layout/ivug-naviframe.edc b/main/layout/ivug-naviframe.edc index d2d0368..0aa6895 100755 --- a/main/layout/ivug-naviframe.edc +++ b/main/layout/ivug-naviframe.edc @@ -1,66 +1,26 @@ -/* - * 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. + */ /* * Refer to themes/groups/naviframe.edc */ -#define NAVIFRAME_VIEW_TRANS_TIME 0.3 -#define NAVIFRAME_TEXT_PADDING_INC 144 -#define NAVIFRAME_TEXT_PADDING_MORE_BUTTON_INC 278 -#define NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 186 - -#define NAVIFRAME_TITLE_H_INC 100 -#define NAVIFRAME_OH_CLOSED_H_INC 8 -#define NAVIFRAME_OH_OPENED_H_INC 106 -#define NAVIFRAME_OH_CONTENT_H_INC 74 -#define NAVIFRAME_OH_PADDING_INC 16 -#define NAVIFRAME_OH_OPENED_DOUBLE_H_INC 196 -#define NAVIFRAME_OH_SHADOW_H_INC 0 -#define NAVIFRAME_INDICATOR_W_INC 128 -#define NAVIFRAME_PADDING_EXPANDED_INC 141 -#define NAVIFRAME_TITLE_FONT_SIZE_INC 36 -#define NAVIFRAME_ICON_SIZE_INC 32 32 -#define NAVIFRAME_ICON_PADDING_INC 16 0 -#define NAVIFRAME_OH_ARROW_SIZE_INC 19 12 -#define NAVIFRAME_TITLE_TEXT_COLOR_INC 235 236 237 255 -#define NAVIFRAME_TITLE_BG_COLOR_INC 92 92 92 255 -#define NAVIFRAME_TITLE_LEFT_SEPARATOR_COLOR_INC 3 3 3 255 -#define NAVIFRAME_TITLE_RIGHT_SEPARATOR_COLOR_INC 52 52 52 255 -#define NAVIFRAME_OH_BORDER_INC 0 0 4 0 +#include "ivug-theme.edc" -#define NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 10 -#define NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 10 -#define NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC 124 80 -#define NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 144 -#define NAVIFRAME_NO_BUTTON_ICON_PADDING_INC 52 -#define NAVIFRAME_CONTROLBAR_BG_COLOR_INC 0 0 0 255 -#define CONTROLBAR_LARGE_HEIGHT_INC 95//122 -#define CONTROLBAR_SMALL_HEIGHT_INC CONTROLBAR_LARGE_HEIGHT_INC//102 -#define NAVIFRAME_PREV_BTN_W_INC 124 -#define NAVIFRAME_CONTROLBAR_PADDING_INC 5 -#define NAVIFRAME_SEGMENT_TITLE_H_INC 136 - -#define NAVIFRAME_TITLE_SEGMENT_FONT_SIZE_INC 28 -#define NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC 50 -#define NAVIFRAME_TITLE_SEGMENT_H_INC 74 - -#define LAYOUT_INDICATOR_HEIGHT_INC 50 -#define LAYOUT_INDICATOR_COLOR 0 0 0 0 //92 92 92 255 // Same as Naviframe +#define NAVIFRAME_VIEW_TRANS_TIME 0.3 /////////////////////////////////////////////////////////////////////////// // Naviframe @@ -76,11 +36,14 @@ collections { } } } - group { name:"elm/naviframe/item/basic/ivug/default"; - alias:"elm/naviframe/item/1line/ivug/default"; + group { name:"elm/naviframe/item/basic/ivug-main/default"; + alias:"elm/naviframe/item/1line/ivug-main/default"; images { - image: "T01_control_top_bg.png" COMP; - image: "T01_control_top_arrow.png" COMP; + image: "00_winset_control_top_bg.png" COMP; + image: "00_winset_control_top_arrow.png" COMP; + image: "00_winset_title_line.png" COMP; + image: "00_winset_control_toolbar_bg.png" COMP; + image: "00_winset_title_bg.png" COMP; } script { public oh_show = 0; //optionheader show/hide @@ -91,31 +54,9 @@ collections { public right_btn_visible = 0; //whether right btn is shown public more_btn_visible = 0; //whether more btn is shown public large_padded_center_align = 0; //large padding based on button size for center align for 1/2 buttons. + public subtitle_visible = 0; //whether subtitle is shown } parts { - part { - name: "indicator"; - type: RECT; - scale: 1; - repeat_events : 0; - description { - state: "default" 0.0; - rel1 { relative: 0.0 0.0; } - rel2 { relative: 1.0 0.0; } - min: 0 LAYOUT_INDICATOR_HEIGHT_INC; - fixed: 0 1; - align: 0.5 0.0; - color: LAYOUT_INDICATOR_COLOR; - visible: 1; - } - - description { - state: "hide" 0.0; - inherit: "default" 0.0; - visible: 0; - } - } - part { name: "base"; type: RECT; mouse_events: 0; @@ -160,7 +101,7 @@ collections { } } - part { name: "elm.swallow.detail"; + part { name: "elm.swallow.detail"; // Detail view. type: SWALLOW; scale: 1; repeat_events: 0; @@ -177,8 +118,31 @@ collections { } } + part { + name: "indicator"; + type: RECT; + scale: 1; + repeat_events : 0; + clip_to: "content_clip"; + description { + state: "default" 0.0; + min: 0 LAYOUT_INDICATOR_HEIGHT_INC; +// max: 0 LAYOUT_INDICATOR_HEIGHT_INC; + rel1.relative: 0.0 0.0; + rel2.relative: 1.0 0.0; + fixed: 0 1; + align: 0.5 0.0; + color: LAYOUT_INDICATOR_COLOR_INC; + visible: 1; + } + + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } part { name: "title_bg"; - type: RECT; scale: 1; description { state: "default" 0.0; min: 1 NAVIFRAME_TITLE_H_INC; @@ -186,7 +150,7 @@ collections { fixed: 0 1; rel1 { relative: 0.0 0.0; to: "base"; } rel2 { relative: 1.0 0.0; to: "base"; } - color: NAVIFRAME_TITLE_BG_COLOR_INC; + image.normal: "00_winset_title_bg.png"; } description { state: "hide" 0.0; inherit: "default" 0.0; @@ -214,7 +178,7 @@ collections { rel1.relative: 0 1; rel2.to: "title_bg"; visible: 0; - image { normal: "T01_control_top_bg.png"; + image { normal: "00_winset_control_top_bg.png"; border: NAVIFRAME_OH_BORDER_INC; } } @@ -259,7 +223,7 @@ collections { min: 0 NAVIFRAME_OH_CONTENT_H_INC; rel1 { relative: 0.0 1.0; to: "optionheader_top_padding"; } rel2 { relative: 1.0 1.0; to: "optionheader_top_padding"; } - fixed: 0 1; + fixed: 1 1; align: 0.0 0.0; } } @@ -276,76 +240,55 @@ collections { visible: 0; } } - part { name: "padding_before_left_btn"; - type: RECT; - mouse_events: 0; - scale: 1; - clip_to: "title_clip"; - description { state: "default" 0.0; - min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; - fixed: 1 0; - align: 0.0 0.5; - rel1 { relative: 0.0 0.0; to: "title_bg"; } - rel2 { relative: 0.0 1.0; to: "title_bg"; } - visible: 0; - } - } - part { name: "padding_after_left_btn"; - type: RECT; - scale: 1; - clip_to: "title_clip"; - description { state: "default" 0.0; - min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; - fixed: 1 0; - align: 0 0.5; - rel1 { relative: 1.0 0.0; to: "title_left_btn"; } - rel2 { relative: 1.0 1.0; to: "title_left_btn"; } - visible: 0; - } - } - part { name: "padding_before_more_btn"; + part { name: "optionheader_shadow"; type: RECT; scale: 1; - clip_to: "title_clip"; + clip_to: "optionheader_clip"; description { state: "default" 0.0; - min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; - fixed: 1 0; - align: 1.0 0.5; - rel1 { relative: 0.0 0.0; to: "title_more_btn"; } - rel2 { relative: 0.0 1.0; to: "title_more_btn"; } + min: 0 NAVIFRAME_OH_SHADOW_INC; + rel1 { relative: 0.0 1.0; to: "optionheader_bottom_padding"; } + rel2 { relative: 1.0 1.0; to: "optionheader_bottom_padding"; } + fixed: 0 1; + align: 0.0 0.0; visible: 0; } } - part { name: "padding_after_right_btn"; - type: RECT; - mouse_events: 0; + part { name: "left_btn_separator"; + type: IMAGE; scale: 1; clip_to: "title_clip"; description { state: "default" 0.0; - min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; - fixed: 1 0; + min: 2 48; + max: 2 48; + fixed: 1 1; align: 1.0 0.5; - rel1 { relative: 1.0 0.0; to: "title_bg"; } - rel2 { relative: 1.0 1.0; to: "title_bg"; } + rel1 { relative: 0.0 0.0; to: "title_left_btn"; } + rel2 { relative: 0.0 1.0; to: "title_left_btn"; } + image.normal: "00_winset_title_line.png"; visible: 0; } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; } - part { name: "padding_before_right_btn"; - type: RECT; - mouse_events: 0; + } + part { name: "right_btn_separator"; + type: IMAGE; scale: 1; clip_to: "title_clip"; description { state: "default" 0.0; - min: 0 0; - fixed: 1 0; + min: 2 48; + max: 2 48; + fixed: 1 1; align: 1.0 0.5; rel1 { relative: 0.0 0.0; to: "title_right_btn"; } rel2 { relative: 0.0 1.0; to: "title_right_btn"; } + image.normal: "00_winset_title_line.png"; visible: 0; } - description { state: "right_and_more_button" 0.0; + description { state: "visible" 0.0; inherit: "default" 0.0; - min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + visible: 1; } } part { name: "padding_before_text"; @@ -354,9 +297,9 @@ collections { mouse_events: 0; clip_to: "title_clip"; description { state: "default" 0.0; - align: 1.0 0.5; - rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_bg"; } - rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_bg"; } + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } fixed: 1 0; min: NAVIFRAME_ICON_PADDING_INC; visible: 0; @@ -368,16 +311,16 @@ collections { mouse_events: 0; clip_to: "title_clip"; description { state: "default" 0.0; - min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + min: 0 0; fixed: 1 0; align: 0.0 0.0; - rel1 { relative: 0.0 0.0; to: "title_bg"; } - rel2 { relative: 0.0 1.0; to: "title_bg"; } + rel1 { relative: 1.0 0.0; to: "padding_before_text"; } + rel2 { relative: 1.0 1.0; to: "padding_before_text"; } visible: 0; } description { state: "visible" 0.0; inherit: "default" 0.0; - min: NAVIFRAME_TEXT_PADDING_INC 0; + min: 0 0; } description { state: "icon" 0.0; inherit: "default" 0.0; @@ -394,7 +337,7 @@ collections { scale: 1; clip_to: "title_clip"; description { state: "default" 0.0; - min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0; + min: 0 0; fixed: 1 0; align: 1.0 0.5; rel1 { relative: 1.0 0.0; to: "title_bg"; } @@ -411,22 +354,65 @@ collections { scale: 1; clip_to: "title_clip"; description { state: "default" 0.0; - text { font: "HelveticaNeue:style=Medium"; + text { font: "SLP:style=Medium"; size: NAVIFRAME_TITLE_FONT_SIZE_INC; min: 0 0; max: 1 0; align: 0.5 0.5; + text_class: "slp_medium"; } color: NAVIFRAME_TITLE_TEXT_COLOR_INC; - align: 0.5 0.5; + align: 0.0 0.5; + fixed: 1 0; + rel1 { relative: 1.0 0.0; to_x: "padding_center_text1"; to_y: "title_bg"; } + rel2 { relative: 0.0 1.0; to_x: "padding_center_text2"; to_y: "title_bg"; } + } + description { state: "right_and_more_button" 0.0; + inherit: "default" 0.0; + rel2 { relative: 0.0 1.0; to_x: "title_more_btn"; to_y: "title_bg"; } + } + description { state: "subtitle_is_set" 0.0; + inherit: "default" 0.0; + rel2 { relative: 0.0 0.7; to_x: "padding_center_text2"; to_y: "title_bg"; } + } + description { state: "subtitle_right_more_button_is_set" 0.0; + inherit: "default" 0.0; + rel2 { relative: 0.0 0.7; to_x: "title_more_btn"; to_y: "title_bg"; } + } + } + part { name: "elm.text.subtitle"; + type: TEXT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + text { font: "SLP:style=Medium"; + size: NAVIFRAME_SUBTITLE_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + align: 0.5 0.5; + text_class: "slp_medium"; + } + color: NAVIFRAME_SUBTITLE_TEXT_COLOR_INC; + align: 0.0 0.5; fixed: 1 0; - rel1 { relative: 1.0 0.0; to: "padding_center_text1"; } - rel2 { relative: 0.0 1.0; to: "padding_center_text2"; } + rel1 { + relative: 1.0 1.0; + to_x: "padding_center_text1"; + to_y: "elm.text.title"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_center_text2"; + to_y: "elm.text.title"; + } } description { state: "right_and_more_button" 0.0; inherit: "default" 0.0; - rel1 { relative: 1.0 0.0; to: "padding_after_left_btn"; } - rel2 { relative: 0.0 1.0; to: "padding_before_more_btn"; } + rel2 { + relative: 0.0 1.0; + to_x: "title_more_btn"; + to_y: "elm.text.title"; + } } } part { name: "elm.swallow.icon"; @@ -436,11 +422,11 @@ collections { description { state: "default" 0.0; max: NAVIFRAME_ICON_SIZE_INC; fixed: 1 1; - rel1 { relative: 0.0 0.0; to: "padding_before_text"; } - rel2 { relative: 0.0 1.0; to: "padding_before_text"; } + rel1 { relative: 0.0 0.0; to: "padding_center_text1"; } + rel2 { relative: 0.0 1.0; to: "padding_center_text1"; } aspect: 1.0 1.0; aspect_preference: VERTICAL; - align: 1.0 0.5; + align: 0.0 0.5; } } part { name: "click_event_area"; @@ -458,9 +444,9 @@ collections { description { state: "default" 0.0; max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; fixed: 1 1; - align: 0 0.5; - rel1 { relative: 1.0 0.0; to: "padding_before_left_btn"; } - rel2 { relative: 1.0 1.0; to: "padding_before_left_btn"; } + align: 1 0.5; + rel1 { relative: 0.0 0.0; to: "title_right_btn"; } + rel2 { relative: 0.0 1.0; to: "title_right_btn"; } } } part { name: "title_right_btn"; @@ -471,8 +457,8 @@ collections { max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; align: 1 0.5; fixed: 1 1; - rel1 { relative: 0.0 0.0; to: "padding_after_right_btn"; } - rel2 { relative: 0.0 1.0; to: "padding_after_right_btn"; } + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } } } part { name: "title_more_btn"; @@ -483,8 +469,8 @@ collections { max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; fixed: 1 1; align: 1 0.5; - rel1 { relative: 0.0 0.0; to: "padding_before_right_btn"; } - rel2 { relative: 0.0 1.0; to: "padding_before_right_btn"; } + rel1 { relative: 0.0 0.0; to: "title_left_btn"; } + rel2 { relative: 0.0 1.0; to: "title_left_btn"; } } } part { name: "optionheader_arrow"; @@ -495,9 +481,9 @@ collections { max: NAVIFRAME_OH_ARROW_SIZE_INC; fixed: 1 1; align: 0.5 0.0; - rel1 { relative: 0.0 1.025; to: "title_more_btn"; } - rel2 { relative: 1.0 1.025; to: "title_more_btn"; } - image.normal: "T01_control_top_arrow.png"; + rel1 { relative: 0.0 1.1; to: "title_more_btn"; } + rel2 { relative: 1.0 1.2; to: "title_more_btn"; } + //image.normal: "00_winset_control_top_arrow.png"; color: 255 255 255 0; } description { state: "show" 0.0; @@ -506,7 +492,6 @@ collections { } } part { name: "controlbar_bg"; - type: RECT; scale: 1; description { state: "default" 0.0; min: 0 0; @@ -516,7 +501,7 @@ collections { visible: 0; rel1 { to: "base"; } rel2 { to: "base"; } - color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC; + image.normal: "00_winset_control_toolbar_bg.png"; } description { state: "show" 0.0; inherit: "default" 0.0; @@ -573,7 +558,6 @@ collections { } } programs { - program { name: "content_new_pushed"; signal: "elm,state,new,pushed,internal"; source: ""; @@ -685,17 +669,44 @@ collections { set_state(PART:"elm.prev_btn_bg", "default", 0.0); } } + program { name: "subtitle_show"; + signal: "elm,state,subtitle,show"; + source: "elm"; + script { + set_int(subtitle_visible, 1); + if (get_int(large_padded_center_align) == 0) + set_state(PART:"elm.text.title", "subtitle_right_more_button_is_set", 0.0); + else + set_state(PART:"elm.text.title", "subtitle_is_set", 0.0); + } + } + program { name: "subtitle_hide"; + signal: "elm,state,subtitle,hide"; + source: "elm"; + script { + set_int(subtitle_visible, 0); + if (get_int(large_padded_center_align) == 0) + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + else + set_state(PART:"elm.text.title", "default", 0.0); + } + } program { name: "left_btn_show"; signal: "elm,state,title_left_btn,show"; source: "elm"; script { set_int(left_btn_visible, 1); + set_state(PART:"left_btn_separator", "visible", 0.0); if (get_int(icon_visible) == 1) set_state(PART:"padding_center_text1", "icon_left_button", 0.0); else set_state(PART:"padding_center_text1", "visible", 0.0); if ((get_int(more_btn_visible) == 1) && (get_int(right_btn_visible) == 1)) { + if (get_int(subtitle_visible) == 1) + set_state(PART:"elm.text.title", "subtitle_right_more_button_is_set", 0.0); + else set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_state(PART:"elm.text.subtitle", "right_and_more_button", 0.0); set_int(large_padded_center_align, 0); } else { @@ -709,6 +720,7 @@ collections { source: "elm"; script { set_int(left_btn_visible, 0); + set_state(PART:"left_btn_separator", "default", 0.0); if ((get_int(more_btn_visible) == 0) && (get_int(right_btn_visible) == 0)) { set_state(PART:"padding_center_text2", "default", 0.0); set_int(large_padded_center_align, 0); @@ -732,9 +744,13 @@ collections { source: "elm"; script { set_int(right_btn_visible, 1); + set_state(PART:"right_btn_separator", "visible", 0.0); if (get_int(more_btn_visible) == 1) { + if (get_int(subtitle_visible) == 1) + set_state(PART:"elm.text.title", "subtitle_right_more_button_is_set", 0.0); + else set_state(PART:"elm.text.title", "right_and_more_button", 0.0); - set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0); + set_state(PART:"elm.text.subtitle", "right_and_more_button", 0.0); set_int(large_padded_center_align, 0); } else { @@ -757,7 +773,7 @@ collections { source: "elm"; script { set_int(right_btn_visible, 0); - set_state(PART:"padding_before_right_btn", "default", 0.0); + set_state(PART:"right_btn_separator", "default", 0.0); if ((get_int(more_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) { set_state(PART:"padding_center_text2", "default", 0.0); set_int(large_padded_center_align, 0); @@ -782,8 +798,11 @@ collections { script { set_int(more_btn_visible, 1); if (get_int(right_btn_visible) == 1) { + if (get_int(subtitle_visible) == 1) + set_state(PART:"elm.text.title", "subtitle_right_more_button_is_set", 0.0); + else set_state(PART:"elm.text.title", "right_and_more_button", 0.0); - set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0); + set_state(PART:"elm.text.subtitle", "right_and_more_button", 0.0); set_int(large_padded_center_align, 0); } else { @@ -806,7 +825,6 @@ collections { source: "elm"; script { set_int(more_btn_visible, 0); - set_state(PART:"padding_before_right_btn", "default", 0.0); if ((get_int(right_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) { set_state(PART:"padding_center_text2", "default", 0.0); set_int(large_padded_center_align, 0); @@ -826,7 +844,7 @@ collections { } } program { name: "icon_show"; - signal: "elm,state,elm.swallow.icon,show"; + signal: "elm,state,icon,show"; source: "elm"; script { set_int(icon_visible, 1); @@ -837,7 +855,7 @@ collections { } } program { name: "icon_hide"; - signal: "elm,state,elm.swallow.icon,hide"; + signal: "elm,state,icon,hide"; source: "elm"; script { set_int(icon_visible, 0); @@ -992,5 +1010,1881 @@ collections { } } -} + group { name:"elm/naviframe/item/basic/ivug-main/noindicator"; + alias:"elm/naviframe/item/1line/ivug-main/noindicator"; + images { + image: "00_winset_control_top_bg.png" COMP; + image: "00_winset_control_top_arrow.png" COMP; + image: "00_winset_title_line.png" COMP; + image: "00_winset_control_toolbar_bg.png" COMP; + image: "00_winset_title_bg.png" COMP; + } + script { + public oh_show = 0; //optionheader show/hide + public oh_close = 0; //optionheader close/open + public cbar_bg = 0; //Controlbar BG Show call count + public left_btn_visible = 0; //whether left btn is shown + public icon_visible = 0; //whether icon is shown + public right_btn_visible = 0; //whether right btn is shown + public more_btn_visible = 0; //whether more btn is shown + public large_padded_center_align = 0; //large padding based on button size for center align for 1/2 buttons. + public subtitle_visible = 0; //whether subtitle is shown + } + parts { + part { name: "base"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + rel1.relative: 0.0 0.0; + rel2.relative: 1.0 1.0; + } + description { state: "left" 0.0; + inherit: "default" 0.0; + rel1.relative: -1.0 0.0; + rel2.relative: 0.0 1.0; + } + description { state: "right" 0.0; + inherit: "default" 0.0; + rel1.relative: 1.0 0.0; + rel2.relative: 2.0 1.0; + } + } + + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 0.0; + rel2.relative: 1.0 1.0; + } + } + part { name: "content_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + + part { name: "elm.swallow.detail"; // Detail view. + type: SWALLOW; + scale: 1; + repeat_events: 0; + description { state: "default" 0.0; + color: 255 0 0 100; + align: 0.0 0.0; + rel1.relative: 0.0 1.0; + rel1.to_x: "base"; + rel1.to_y: "optionheader_bg"; + rel2.relative: 1.0 0.0; + rel2.to_x: "base"; + rel2.to_y: "controlbar_bg"; + visible: 1; + } + } + part { name: "title_bg"; + scale: 1; + description { state: "default" 0.0; + min: 1 NAVIFRAME_TITLE_H_INC; + align: 0.0 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.0; to: "base"; } + rel2 { relative: 1.0 0.0; to: "base"; } + image.normal: "00_winset_title_bg.png"; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { name: "title_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "optionheader_bg"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + min: 1 0; + align: 0.5 0; + fixed: 0 1; + rel1.to: "title_bg"; + rel1.relative: 0 1; + rel2.to: "title_bg"; + visible: 0; + image { normal: "00_winset_control_top_bg.png"; + border: NAVIFRAME_OH_BORDER_INC; + } + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 1 NAVIFRAME_OH_OPENED_H_INC; + visible: 1; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { name: "optionheader_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "optionheader_bg"; } + rel2 { to: "optionheader_bg"; } + } + } + part { name: "optionheader_top_padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 0.0; to: "optionheader_bg"; } + rel2 { relative: 1.0 0.0; to: "optionheader_bg"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "optionheader"; + type: SWALLOW; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_CONTENT_H_INC; + rel1 { relative: 0.0 1.0; to: "optionheader_top_padding"; } + rel2 { relative: 1.0 1.0; to: "optionheader_top_padding"; } + fixed: 1 1; + align: 0.0 0.0; + } + } + part { name: "optionheader_bottom_padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 1.0; to: "optionheader"; } + rel2 { relative: 1.0 1.0; to: "optionheader"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "optionheader_shadow"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_SHADOW_INC; + rel1 { relative: 0.0 1.0; to: "optionheader_bottom_padding"; } + rel2 { relative: 1.0 1.0; to: "optionheader_bottom_padding"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "left_btn_separator"; + type: IMAGE; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 2 48; + max: 2 48; + fixed: 1 1; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_left_btn"; } + rel2 { relative: 0.0 1.0; to: "title_left_btn"; } + image.normal: "00_winset_title_line.png"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "right_btn_separator"; + type: IMAGE; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 2 48; + max: 2 48; + fixed: 1 1; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_right_btn"; } + rel2 { relative: 0.0 1.0; to: "title_right_btn"; } + image.normal: "00_winset_title_line.png"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + fixed: 1 0; + min: NAVIFRAME_ICON_PADDING_INC; + visible: 0; + } + } + part { name: "padding_center_text1"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 0.0 0.0; + rel1 { relative: 1.0 0.0; to: "padding_before_text"; } + rel2 { relative: 1.0 1.0; to: "padding_before_text"; } + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: 0 0; + } + description { state: "icon" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_NO_BUTTON_ICON_PADDING_INC 0; + } + description { state: "icon_left_button" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 0; + } + } + part { name: "padding_center_text2"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_INC 0; + } + } + part { name: "elm.text.title"; + type: TEXT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + text { font: "SLP:style=Medium"; + size: NAVIFRAME_TITLE_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + align: 0.5 0.5; + text_class: "slp_medium"; + } + color: NAVIFRAME_TITLE_TEXT_COLOR_INC; + align: 0.0 0.5; + fixed: 1 0; + rel1 { relative: 1.0 0.0; to_x: "padding_center_text1"; to_y: "title_bg"; } + rel2 { relative: 0.0 1.0; to_x: "padding_center_text2"; to_y: "title_bg"; } + } + description { state: "right_and_more_button" 0.0; + inherit: "default" 0.0; + rel2 { relative: 0.0 1.0; to_x: "title_more_btn"; to_y: "title_bg"; } + } + description { state: "subtitle_is_set" 0.0; + inherit: "default" 0.0; + rel2 { relative: 0.0 0.7; to_x: "padding_center_text2"; to_y: "title_bg"; } + } + description { state: "subtitle_right_more_button_is_set" 0.0; + inherit: "default" 0.0; + rel2 { relative: 0.0 0.7; to_x: "title_more_btn"; to_y: "title_bg"; } + } + } + part { name: "elm.text.subtitle"; + type: TEXT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + text { font: "SLP:style=Medium"; + size: NAVIFRAME_SUBTITLE_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + align: 0.5 0.5; + text_class: "slp_medium"; + } + color: NAVIFRAME_SUBTITLE_TEXT_COLOR_INC; + align: 0.0 0.5; + fixed: 1 0; + rel1 { + relative: 1.0 1.0; + to_x: "padding_center_text1"; + to_y: "elm.text.title"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_center_text2"; + to_y: "elm.text.title"; + } + } + description { state: "right_and_more_button" 0.0; + inherit: "default" 0.0; + rel2 { + relative: 0.0 1.0; + to_x: "title_more_btn"; + to_y: "elm.text.title"; + } + } + } + part { name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_ICON_SIZE_INC; + fixed: 1 1; + rel1 { relative: 0.0 0.0; to: "padding_center_text1"; } + rel2 { relative: 0.0 1.0; to: "padding_center_text1"; } + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + align: 0.0 0.5; + } + } + part { name: "click_event_area"; + ignore_flags: ON_HOLD; + repeat_events: 1; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "title_left_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 1 0.5; + rel1 { relative: 0.0 0.0; to: "title_right_btn"; } + rel2 { relative: 0.0 1.0; to: "title_right_btn"; } + } + } + part { name: "title_right_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + align: 1 0.5; + fixed: 1 1; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + } + } + part { name: "title_more_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 1 0.5; + rel1 { relative: 0.0 0.0; to: "title_left_btn"; } + rel2 { relative: 0.0 1.0; to: "title_left_btn"; } + } + } + part { name: "optionheader_arrow"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + min: NAVIFRAME_OH_ARROW_SIZE_INC; + max: NAVIFRAME_OH_ARROW_SIZE_INC; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.0 1.1; to: "title_more_btn"; } + rel2 { relative: 1.0 1.2; to: "title_more_btn"; } + //image.normal: "00_winset_control_top_arrow.png"; + color: 255 255 255 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + } + } + part { name: "controlbar_bg"; + scale: 1; + description { state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + rel1 { to: "base"; } + rel2 { to: "base"; } + image.normal: "00_winset_control_toolbar_bg.png"; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 0 CONTROLBAR_SMALL_HEIGHT_INC; + max: 999999 CONTROLBAR_SMALL_HEIGHT_INC; + visible: 1; + } + } + part { name: "controlbar_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "controlbar_bg"; + rel2.to: "controlbar_bg"; + } + } + part { name: "elm.prev_btn_bg"; + type: RECT; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "controlbar_bg"; } + rel2.to: "controlbar_bg"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0; + } + } + part { name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "elm.prev_btn_bg"; + rel2.to: "elm.prev_btn_bg"; + } + } + part { name: "controlbar"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + rel1.to: "controlbar_bg"; + rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; } + } + } + } + programs { + program { name: "content_new_pushed"; + signal: "elm,state,new,pushed,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { name: "content_cur_pushed"; + signal: "elm,state,cur,pushed,internal"; + source: ""; + action: STATE_SET "left" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "pushed_finished"; + } + program { name: "content_prev_popped"; + signal: "elm,state,prev,popped,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { name: "content_cur_popped"; + signal: "elm,state,cur,popped,internal"; + source: ""; + action: STATE_SET "right" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "popped_finished"; + } + program { name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,pushed,internal", ""); + } + } + program { name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + script { + set_state(PART:"base", "right", 0.0); + emit("elm,state,new,pushed,internal", ""); + } + } + program { name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + script { + set_state(PART:"base", "left", 0.0); + emit("elm,state,prev,popped,internal", ""); + } + } + program { name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,popped,internal", ""); + } + } + program { name: "visible"; + signal: "elm,state,visible"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "base"; + } + program { name: "title_show"; + signal: "elm,state,title,show"; + source: "elm"; + script { + set_state(PART:"title_bg", "default", 0.0); + if (get_int(oh_show) == 1) { + if (get_int(oh_close) == 1) { + emit("elm,state,optionheader,instant_close", ""); + }else { + emit("elm,state,optionheader,instant_open", ""); + } + } + else + set_state(PART:"optionheader_bg", "default", 0.0); + } + } + program { name: "title_hide"; + signal: "elm,state,title,hide"; + source: "elm"; + action: STATE_SET "hide" 0.0; + target: "title_bg"; + target: "optionheader_bg"; + } + program { name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + set_state(PART:"elm.prev_btn_bg", "visible", 0.0); + } + } + program { name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + set_state(PART:"elm.prev_btn_bg", "default", 0.0); + } + } + program { name: "subtitle_show"; + signal: "elm,state,subtitle,show"; + source: "elm"; + script { + set_int(subtitle_visible, 1); + if (get_int(large_padded_center_align) == 0) + set_state(PART:"elm.text.title", "subtitle_right_more_button_is_set", 0.0); + else + set_state(PART:"elm.text.title", "subtitle_is_set", 0.0); + } + } + program { name: "subtitle_hide"; + signal: "elm,state,subtitle,hide"; + source: "elm"; + script { + set_int(subtitle_visible, 0); + if (get_int(large_padded_center_align) == 0) + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + else + set_state(PART:"elm.text.title", "default", 0.0); + } + } + program { name: "left_btn_show"; + signal: "elm,state,title_left_btn,show"; + source: "elm"; + script { + set_int(left_btn_visible, 1); + set_state(PART:"left_btn_separator", "visible", 0.0); + if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else + set_state(PART:"padding_center_text1", "visible", 0.0); + if ((get_int(more_btn_visible) == 1) && (get_int(right_btn_visible) == 1)) { + if (get_int(subtitle_visible) == 1) + set_state(PART:"elm.text.title", "subtitle_right_more_button_is_set", 0.0); + else + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_state(PART:"elm.text.subtitle", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + } + } + program { name: "left_btn_hide"; + signal: "elm,state,title_left_btn,hide"; + source: "elm"; + script { + set_int(left_btn_visible, 0); + set_state(PART:"left_btn_separator", "default", 0.0); + if ((get_int(more_btn_visible) == 0) && (get_int(right_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "right_btn_show"; + signal: "elm,state,title_right_btn,show"; + source: "elm"; + script { + set_int(right_btn_visible, 1); + set_state(PART:"right_btn_separator", "visible", 0.0); + if (get_int(more_btn_visible) == 1) { + if (get_int(subtitle_visible) == 1) + set_state(PART:"elm.text.title", "subtitle_right_more_button_is_set", 0.0); + else + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_state(PART:"elm.text.subtitle", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) || + (get_int(large_padded_center_align) == 1))) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "right_btn_hide"; + signal: "elm,state,title_right_btn,hide"; + source: "elm"; + script { + set_int(right_btn_visible, 0); + set_state(PART:"right_btn_separator", "default", 0.0); + if ((get_int(more_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "more_btn_show"; + signal: "elm,state,title_more_btn,show"; + source: "elm"; + script { + set_int(more_btn_visible, 1); + if (get_int(right_btn_visible) == 1) { + if (get_int(subtitle_visible) == 1) + set_state(PART:"elm.text.title", "subtitle_right_more_button_is_set", 0.0); + else + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_state(PART:"elm.text.subtitle", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) || + (get_int(large_padded_center_align) == 1))) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "more_btn_hide"; + signal: "elm,state,title_more_btn,hide"; + source: "elm"; + script { + set_int(more_btn_visible, 0); + if ((get_int(right_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,icon,show"; + source: "elm"; + script { + set_int(icon_visible, 1); + if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else + set_state(PART:"padding_center_text1", "icon", 0.0); + } + } + program { name: "icon_hide"; + signal: "elm,state,icon,hide"; + source: "elm"; + script { + set_int(icon_visible, 0); + if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "controlbar_show"; + signal: "elm,state,controlbar,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + } + } + program { name: "controlbar_hide"; + signal: "elm,state,controlbar,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + } + } + program { name: "controlbar_bg_show"; + signal: "elm,state,controlbar_bg,show"; + source: "elm"; + script { + set_state(PART:"controlbar_bg", "show", 0.0); + set_int(cbar_bg, get_int(cbar_bg) + 1); + } + } + program { name: "controlbar_bg_hide"; + signal: "elm,state,controlbar_bg,hide"; + source: "elm"; + script { + set_int(cbar_bg, get_int(cbar_bg) - 1); + if (get_int(cbar_bg) <= 0) + set_state(PART:"controlbar_bg", "default", 0.0); + } + } + program { name: "optionheader_show"; + signal: "elm,state,optionheader,show"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "show", 0.0); + set_state(PART:"optionheader_arrow", "show", 0.0); + set_int(oh_show, 1); + } + } + program { name: "optionheader_hide"; + signal: "elm,state,optionheader,hide"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "default", 0.0); + set_state(PART:"optionheader_arrow", "default", 0.0); + set_int(oh_show, 0); + } + } + program { name: "optionheader_open"; + signal: "elm,state,optionheader,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_open_set"; + } + program { name: "optionheader_close"; + signal: "elm,state,optionheader,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_close_set"; + } + program { name: "optionheader_instant_open"; + signal: "elm,state,optionheader,instant_open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_open_set"; + } + program { name: "optionheader_instant_close"; + signal: "elm,state,optionheader,instant_close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_close_set"; + } + program { name: "optionheader_close_set"; + signal: "elm,state,optionheader,close_set"; + source: ""; + script { + set_int(oh_close, 1); + } + } + program { name: "optionheader_open_set"; + signal: "elm,state,optionheader,open_set"; + source: ""; + script { + set_int(oh_close, 0); + } + } + program { name: "controlbar_open"; + signal: "elm,state,controlbar,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_close"; + signal: "elm,state,controlbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_instant_open"; + signal: "elm,state,controlbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,controlbar,show", "elm"); + } + } + program { name: "controlbar_instant_close"; + signal: "elm,state,controlbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,controlbar,hide", "elm"); + } + } + program { name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + } + } + + group { name:"elm/naviframe/item/basic/ivug/default"; + alias:"elm/naviframe/item/1line/ivug/default"; + images { + image: "00_winset_control_top_bg.png" COMP; + image: "00_winset_control_top_arrow.png" COMP; + image: "00_winset_title_line.png" COMP; + image: "00_winset_control_toolbar_bg.png" COMP; + image: "00_winset_title_bg.png" COMP; + } + script { + public oh_show = 0; //optionheader show/hide + public oh_close = 0; //optionheader close/open + public cbar_bg = 0; //Controlbar BG Show call count + public left_btn_visible = 0; //whether left btn is shown + public icon_visible = 0; //whether icon is shown + public right_btn_visible = 0; //whether right btn is shown + public more_btn_visible = 0; //whether more btn is shown + public large_padded_center_align = 0; //large padding based on button size for center align for 1/2 buttons. + public subtitle_visible = 0; //whether subtitle is shown + } + parts { + part { name: "base"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + } + description { state: "left" 0.0; + inherit: "default" 0.0; + rel1.relative: -1.0 0.0; + rel2.relative: 0.0 1.0; + } + description { state: "right" 0.0; + inherit: "default" 0.0; + rel1.relative: 1.0 0.0; + rel2.relative: 2.0 1.0; + } + } + part { name: "title_bg"; + scale: 1; + description { state: "default" 0.0; + min: 1 NAVIFRAME_TITLE_H_INC; + align: 0.0 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.0; to: "base"; } + rel2 { relative: 1.0 0.0; to: "base"; } + image.normal: "00_winset_title_bg.png"; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { name: "title_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "optionheader_bg"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + min: 1 0; + align: 0.5 0; + fixed: 0 1; + rel1.to: "title_bg"; + rel1.relative: 0 1; + rel2.to: "title_bg"; + visible: 0; + image { normal: "00_winset_control_top_bg.png"; + border: NAVIFRAME_OH_BORDER_INC; + } + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 1 NAVIFRAME_OH_OPENED_H_INC; + visible: 1; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 0; + max: 0 0; + fixed: 1 1; + } + } + part { name: "optionheader_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "optionheader_bg"; } + rel2 { to: "optionheader_bg"; } + } + } + part { name: "optionheader_top_padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 0.0; to: "optionheader_bg"; } + rel2 { relative: 1.0 0.0; to: "optionheader_bg"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "optionheader"; + type: SWALLOW; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_CONTENT_H_INC; + rel1 { relative: 0.0 1.0; to: "optionheader_top_padding"; } + rel2 { relative: 1.0 1.0; to: "optionheader_top_padding"; } + fixed: 1 1; + align: 0.0 0.0; + } + } + part { name: "optionheader_bottom_padding"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_PADDING_INC; + rel1 { relative: 0.0 1.0; to: "optionheader"; } + rel2 { relative: 1.0 1.0; to: "optionheader"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "optionheader_shadow"; + type: RECT; + scale: 1; + clip_to: "optionheader_clip"; + description { state: "default" 0.0; + min: 0 NAVIFRAME_OH_SHADOW_INC; + rel1 { relative: 0.0 1.0; to: "optionheader_bottom_padding"; } + rel2 { relative: 1.0 1.0; to: "optionheader_bottom_padding"; } + fixed: 0 1; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 1.0; + rel1.to_x: "base"; + rel1.to_y: "optionheader_bg"; + rel2.relative: 1.0 0.0; + rel2.to_x: "base"; + rel2.to_y: "controlbar_bg"; + } + } + part { name: "content_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + + + + + + part { name: "left_btn_separator"; + type: IMAGE; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 2 48; + max: 2 48; + fixed: 1 1; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_left_btn"; } + rel2 { relative: 0.0 1.0; to: "title_left_btn"; } + image.normal: "00_winset_title_line.png"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "right_btn_separator"; + type: IMAGE; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 2 48; + max: 2 48; + fixed: 1 1; + align: 1.0 0.5; + rel1 { relative: 0.0 0.0; to: "title_right_btn"; } + rel2 { relative: 0.0 1.0; to: "title_right_btn"; } + image.normal: "00_winset_title_line.png"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1 { relative: 0.0 0.0; to: "title_bg"; } + rel2 { relative: 0.0 1.0; to: "title_bg"; } + fixed: 1 0; + min: NAVIFRAME_ICON_PADDING_INC; + visible: 0; + } + } + part { name: "padding_center_text1"; + type: RECT; + scale: 1; + mouse_events: 0; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 0.0 0.0; + rel1 { relative: 1.0 0.0; to: "padding_before_text"; } + rel2 { relative: 1.0 1.0; to: "padding_before_text"; } + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: 0 0; + } + description { state: "icon" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_NO_BUTTON_ICON_PADDING_INC 0; + } + description { state: "icon_left_button" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 0; + } + } + part { name: "padding_center_text2"; + type: RECT; + mouse_events: 0; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TEXT_PADDING_INC 0; + } + } + part { name: "elm.text.title"; + type: TEXT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + text { font: "SLP:style=Medium"; + size: NAVIFRAME_TITLE_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + align: 0.5 0.5; + text_class: "slp_medium"; + } + color: NAVIFRAME_TITLE_TEXT_COLOR_INC; + align: 0.0 0.5; + fixed: 1 0; + rel1 { relative: 1.0 0.0; to_x: "padding_center_text1"; to_y: "title_bg"; } + rel2 { relative: 0.0 1.0; to_x: "padding_center_text2"; to_y: "title_bg"; } + } + description { state: "right_and_more_button" 0.0; + inherit: "default" 0.0; + rel2 { relative: 0.0 1.0; to_x: "title_more_btn"; to_y: "title_bg"; } + } + description { state: "subtitle_is_set" 0.0; + inherit: "default" 0.0; + rel2 { relative: 0.0 0.7; to_x: "padding_center_text2"; to_y: "title_bg"; } + } + description { state: "subtitle_right_more_button_is_set" 0.0; + inherit: "default" 0.0; + rel2 { relative: 0.0 0.7; to_x: "title_more_btn"; to_y: "title_bg"; } + } + } + part { name: "elm.text.subtitle"; + type: TEXT; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + text { font: "SLP:style=Medium"; + size: NAVIFRAME_SUBTITLE_FONT_SIZE_INC; + min: 0 0; + max: 1 0; + align: 0.5 0.5; + text_class: "slp_medium"; + } + color: NAVIFRAME_SUBTITLE_TEXT_COLOR_INC; + align: 0.0 0.5; + fixed: 1 0; + rel1 { + relative: 1.0 1.0; + to_x: "padding_center_text1"; + to_y: "elm.text.title"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_center_text2"; + to_y: "elm.text.title"; + } + } + description { state: "right_and_more_button" 0.0; + inherit: "default" 0.0; + rel2 { + relative: 0.0 1.0; + to_x: "title_more_btn"; + to_y: "elm.text.title"; + } + } + } + part { name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_ICON_SIZE_INC; + fixed: 1 1; + rel1 { relative: 0.0 0.0; to: "padding_center_text1"; } + rel2 { relative: 0.0 1.0; to: "padding_center_text1"; } + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + align: 0.0 0.5; + } + } + part { name: "click_event_area"; + ignore_flags: ON_HOLD; + repeat_events: 1; + description { state: "default" 0.0; + rel1 { to: "title_bg"; } + rel2 { to: "title_bg"; } + } + } + part { name: "title_left_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 1 0.5; + rel1 { relative: 0.0 0.0; to: "title_right_btn"; } + rel2 { relative: 0.0 1.0; to: "title_right_btn"; } + } + } + part { name: "title_right_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + align: 1 0.5; + fixed: 1 1; + rel1 { relative: 1.0 0.0; to: "title_bg"; } + rel2 { relative: 1.0 1.0; to: "title_bg"; } + } + } + part { name: "title_more_btn"; + type: SWALLOW; + scale: 1; + clip_to: "title_clip"; + description { state: "default" 0.0; + max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC; + fixed: 1 1; + align: 1 0.5; + rel1 { relative: 0.0 0.0; to: "title_left_btn"; } + rel2 { relative: 0.0 1.0; to: "title_left_btn"; } + } + } + part { name: "optionheader_arrow"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + min: NAVIFRAME_OH_ARROW_SIZE_INC; + max: NAVIFRAME_OH_ARROW_SIZE_INC; + fixed: 1 1; + align: 0.5 0.0; + rel1 { relative: 0.0 1.1; to: "title_more_btn"; } + rel2 { relative: 1.0 1.2; to: "title_more_btn"; } + //image.normal: "00_winset_control_top_arrow.png"; + color: 255 255 255 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + } + } + part { name: "controlbar_bg"; + scale: 1; + description { state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + rel1 { to: "base"; } + rel2 { to: "base"; } + image.normal: "00_winset_control_toolbar_bg.png"; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 0 CONTROLBAR_SMALL_HEIGHT_INC; + max: 999999 CONTROLBAR_SMALL_HEIGHT_INC; + visible: 1; + } + } + part { name: "controlbar_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "controlbar_bg"; + rel2.to: "controlbar_bg"; + } + } + part { name: "elm.prev_btn_bg"; + type: RECT; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "controlbar_bg"; } + rel2.to: "controlbar_bg"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0; + } + } + part { name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "elm.prev_btn_bg"; + rel2.to: "elm.prev_btn_bg"; + } + } + part { name: "controlbar"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + rel1.to: "controlbar_bg"; + rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; } + } + } + } + programs { + program { name: "content_new_pushed"; + signal: "elm,state,new,pushed,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { name: "content_cur_pushed"; + signal: "elm,state,cur,pushed,internal"; + source: ""; + action: STATE_SET "left" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "pushed_finished"; + } + program { name: "content_prev_popped"; + signal: "elm,state,prev,popped,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { name: "content_cur_popped"; + signal: "elm,state,cur,popped,internal"; + source: ""; + action: STATE_SET "right" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "popped_finished"; + } + program { name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,pushed,internal", ""); + } + } + program { name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + script { + set_state(PART:"base", "right", 0.0); + emit("elm,state,new,pushed,internal", ""); + } + } + program { name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + script { + set_state(PART:"base", "left", 0.0); + emit("elm,state,prev,popped,internal", ""); + } + } + program { name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,popped,internal", ""); + } + } + program { name: "visible"; + signal: "elm,state,visible"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "base"; + } + program { name: "title_show"; + signal: "elm,state,title,show"; + source: "elm"; + script { + set_state(PART:"title_bg", "default", 0.0); + if (get_int(oh_show) == 1) { + if (get_int(oh_close) == 1) { + emit("elm,state,optionheader,instant_close", ""); + }else { + emit("elm,state,optionheader,instant_open", ""); + } + } + else + set_state(PART:"optionheader_bg", "default", 0.0); + } + } + program { name: "title_hide"; + signal: "elm,state,title,hide"; + source: "elm"; + action: STATE_SET "hide" 0.0; + target: "title_bg"; + target: "optionheader_bg"; + } + program { name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + set_state(PART:"elm.prev_btn_bg", "visible", 0.0); + } + } + program { name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + set_state(PART:"elm.prev_btn_bg", "default", 0.0); + } + } + program { name: "subtitle_show"; + signal: "elm,state,subtitle,show"; + source: "elm"; + script { + set_int(subtitle_visible, 1); + if (get_int(large_padded_center_align) == 0) + set_state(PART:"elm.text.title", "subtitle_right_more_button_is_set", 0.0); + else + set_state(PART:"elm.text.title", "subtitle_is_set", 0.0); + } + } + program { name: "subtitle_hide"; + signal: "elm,state,subtitle,hide"; + source: "elm"; + script { + set_int(subtitle_visible, 0); + if (get_int(large_padded_center_align) == 0) + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + else + set_state(PART:"elm.text.title", "default", 0.0); + } + } + program { name: "left_btn_show"; + signal: "elm,state,title_left_btn,show"; + source: "elm"; + script { + set_int(left_btn_visible, 1); + set_state(PART:"left_btn_separator", "visible", 0.0); + if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else + set_state(PART:"padding_center_text1", "visible", 0.0); + if ((get_int(more_btn_visible) == 1) && (get_int(right_btn_visible) == 1)) { + if (get_int(subtitle_visible) == 1) + set_state(PART:"elm.text.title", "subtitle_right_more_button_is_set", 0.0); + else + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_state(PART:"elm.text.subtitle", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + } + } + program { name: "left_btn_hide"; + signal: "elm,state,title_left_btn,hide"; + source: "elm"; + script { + set_int(left_btn_visible, 0); + set_state(PART:"left_btn_separator", "default", 0.0); + if ((get_int(more_btn_visible) == 0) && (get_int(right_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "right_btn_show"; + signal: "elm,state,title_right_btn,show"; + source: "elm"; + script { + set_int(right_btn_visible, 1); + set_state(PART:"right_btn_separator", "visible", 0.0); + if (get_int(more_btn_visible) == 1) { + if (get_int(subtitle_visible) == 1) + set_state(PART:"elm.text.title", "subtitle_right_more_button_is_set", 0.0); + else + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_state(PART:"elm.text.subtitle", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) || + (get_int(large_padded_center_align) == 1))) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "right_btn_hide"; + signal: "elm,state,title_right_btn,hide"; + source: "elm"; + script { + set_int(right_btn_visible, 0); + set_state(PART:"right_btn_separator", "default", 0.0); + if ((get_int(more_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "more_btn_show"; + signal: "elm,state,title_more_btn,show"; + source: "elm"; + script { + set_int(more_btn_visible, 1); + if (get_int(right_btn_visible) == 1) { + if (get_int(subtitle_visible) == 1) + set_state(PART:"elm.text.title", "subtitle_right_more_button_is_set", 0.0); + else + set_state(PART:"elm.text.title", "right_and_more_button", 0.0); + set_state(PART:"elm.text.subtitle", "right_and_more_button", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) || + (get_int(large_padded_center_align) == 1))) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "more_btn_hide"; + signal: "elm,state,title_more_btn,hide"; + source: "elm"; + script { + set_int(more_btn_visible, 0); + if ((get_int(right_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) { + set_state(PART:"padding_center_text2", "default", 0.0); + set_int(large_padded_center_align, 0); + } + else { + set_state(PART:"padding_center_text2", "visible", 0.0); + set_int(large_padded_center_align, 1); + } + if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else if (get_int(large_padded_center_align) == 1) + set_state(PART:"padding_center_text1", "visible", 0.0); + else if (get_int(icon_visible) == 1) + set_state(PART:"padding_center_text1", "icon", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,icon,show"; + source: "elm"; + script { + set_int(icon_visible, 1); + if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1)) + set_state(PART:"padding_center_text1", "icon_left_button", 0.0); + else + set_state(PART:"padding_center_text1", "icon", 0.0); + } + } + program { name: "icon_hide"; + signal: "elm,state,icon,hide"; + source: "elm"; + script { + set_int(icon_visible, 0); + if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1)) + set_state(PART:"padding_center_text1", "visible", 0.0); + else + set_state(PART:"padding_center_text1", "default", 0.0); + } + } + program { name: "controlbar_show"; + signal: "elm,state,controlbar,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + } + } + program { name: "controlbar_hide"; + signal: "elm,state,controlbar,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + } + } + program { name: "controlbar_bg_show"; + signal: "elm,state,controlbar_bg,show"; + source: "elm"; + script { + set_state(PART:"controlbar_bg", "show", 0.0); + set_int(cbar_bg, get_int(cbar_bg) + 1); + } + } + program { name: "controlbar_bg_hide"; + signal: "elm,state,controlbar_bg,hide"; + source: "elm"; + script { + set_int(cbar_bg, get_int(cbar_bg) - 1); + if (get_int(cbar_bg) <= 0) + set_state(PART:"controlbar_bg", "default", 0.0); + } + } + program { name: "optionheader_show"; + signal: "elm,state,optionheader,show"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "show", 0.0); + set_state(PART:"optionheader_arrow", "show", 0.0); + set_int(oh_show, 1); + } + } + program { name: "optionheader_hide"; + signal: "elm,state,optionheader,hide"; + source: "elm"; + script { + set_state(PART:"optionheader_bg", "default", 0.0); + set_state(PART:"optionheader_arrow", "default", 0.0); + set_int(oh_show, 0); + } + } + program { name: "optionheader_open"; + signal: "elm,state,optionheader,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_open_set"; + } + program { name: "optionheader_close"; + signal: "elm,state,optionheader,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + transition: LINEAR 0.2; + after: "optionheader_close_set"; + } + program { name: "optionheader_instant_open"; + signal: "elm,state,optionheader,instant_open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_open_set"; + } + program { name: "optionheader_instant_close"; + signal: "elm,state,optionheader,instant_close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "optionheader_bg"; + target: "optionheader_arrow"; + after: "optionheader_close_set"; + } + program { name: "optionheader_close_set"; + signal: "elm,state,optionheader,close_set"; + source: ""; + script { + set_int(oh_close, 1); + } + } + program { name: "optionheader_open_set"; + signal: "elm,state,optionheader,open_set"; + source: ""; + script { + set_int(oh_close, 0); + } + } + program { name: "controlbar_open"; + signal: "elm,state,controlbar,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_close"; + signal: "elm,state,controlbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_instant_open"; + signal: "elm,state,controlbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,controlbar,show", "elm"); + } + } + program { name: "controlbar_instant_close"; + signal: "elm,state,controlbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,controlbar,hide", "elm"); + } + } + program { name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + } + } + +} diff --git a/main/layout/ivug-selectioninfo.edc b/main/layout/ivug-selectioninfo.edc index 00a1340..bf704fd 100755 --- a/main/layout/ivug-selectioninfo.edc +++ b/main/layout/ivug-selectioninfo.edc @@ -1,34 +1,33 @@ -/* - * 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. + */ /* * Refer to themes\groups\selectioninfo.edc */ -#define SELECTION_INFO_BACKGROUND_COLOR_INC 91 91 91 255 -#define SELECTION_INFO_TEXT_COLOR_INC 255 255 255 255 +#define SELECTION_INFO_BACKGROUND_COLOR_INC 42 54 74 255 +#define SELECTION_INFO_TEXT_COLOR_INC 249 249 249 255 #define SELECTION_INFO_MIN_VER_W_INC 720 #define SELECTION_INFO_MIN_HORZ_W_INC 1280 #define SELECTION_INFO_VER_PADDING_INC 48 #define SELECTION_INFO_LEFT_PADDING_INC 16 #define SELECTION_INFO_TEXT_FONT_SIZE_INC 32 -#define SELECTION_INFO_MIN_VER_BOTTOM_64_H_INC 143//=95+48 150 -#define SELECTION_INFO_MIN_VER_BOTTOM_86_H_INC 143//=95+48 186 +#define SELECTION_INFO_MIN_VER_BOTTOM_64_H_INC 160//=95+48 150 +#define SELECTION_INFO_MIN_VER_BOTTOM_86_H_INC 160//=95+48 186 collections { @@ -36,8 +35,6 @@ collections { parts { part { name: "bg"; type: RECT; - mouse_events: 1; - repeat_events: 1; scale : 1; description { state: "default" 0.0; @@ -61,9 +58,10 @@ collections { rel2 { to: "bg"; } color: SELECTION_INFO_TEXT_COLOR_INC; text { - font: "HelveticaNeue"; + font: "SLP"; size: SELECTION_INFO_TEXT_FONT_SIZE_INC; text: ""; + text_class: "slp"; } } } @@ -121,9 +119,10 @@ collections { rel2 { to: "base"; } color: SELECTION_INFO_TEXT_COLOR_INC; text { - font: "HelveticaNeue"; + font: "SLP"; size: SELECTION_INFO_TEXT_FONT_SIZE_INC; text: ""; + text_class: "slp"; } } } @@ -183,9 +182,10 @@ collections { rel2 { to: "base"; } color: SELECTION_INFO_TEXT_COLOR_INC; text { - font: "HelveticaNeue"; + font: "SLP"; size: SELECTION_INFO_TEXT_FONT_SIZE_INC; text: ""; + text_class: "slp"; } } } @@ -229,9 +229,10 @@ collections { rel2 { to: "bg"; } color: SELECTION_INFO_TEXT_COLOR_INC; text { - font: "HelveticaNeue"; + font: "SLP"; size: SELECTION_INFO_TEXT_FONT_SIZE_INC; text: ""; + text_class: "slp"; } } } @@ -289,9 +290,10 @@ collections { rel2 { to: "base"; } color: SELECTION_INFO_TEXT_COLOR_INC; text { - font: "HelveticaNeue"; - size: SELECTION_INFO_TEXT_FONT_SIZE_INC; + font: "SLP"; + size: SELECTION_INFO_TEXT_FONT_SIZE_INC; text: ""; + text_class: "slp"; } } } @@ -351,9 +353,10 @@ collections { rel2 { to: "base"; } color: SELECTION_INFO_TEXT_COLOR_INC; text { - font: "HelveticaNeue"; - size: SELECTION_INFO_TEXT_FONT_SIZE_INC; + font: "SLP"; + size: SELECTION_INFO_TEXT_FONT_SIZE_INC; text: ""; + text_class: "slp"; } } } @@ -369,3 +372,4 @@ collections { } } + diff --git a/main/layout/ivug-setas.edc b/main/layout/ivug-setas.edc index 7ec8ab1..8646f0b 100755 --- a/main/layout/ivug-setas.edc +++ b/main/layout/ivug-setas.edc @@ -1,57 +1,35 @@ -/* - * 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 "ivug-theme.edc" + +#define PADDING_VISIBILITY 0 +collections { -#define BTN_CANCEL_WIDTH 86 -#define BTN_CANCEL_HEIGHT 86 - -#define BTN_OK_WIDTH 86 -#define BTN_OK_HEIGHT 86 - -#define BTN_CANCEL "T01_btn_cancel.png" -#define BTN_CANCEL_PRESS "T01_btn_cancel_press.png" - -#define BTN_OK "T01_btn_ok.png" -#define BTN_OK_PRESS "T01_btn_ok_press.png" -#define BTN_OK_DIM "T01_btn_ok_dim.png" - -#define _STATE_ENABLED 1 -#define _STATE_DISABLED 0 +#define PROGRESSBAR_WIDTH 100 +#define PROGRESSBAR_HEIGHT 100 -collections { group { name: "setas_view"; - images { - image: BTN_CANCEL COMP; - image: BTN_CANCEL_PRESS COMP; - - image: BTN_OK COMP; - image: BTN_OK_PRESS COMP; - image: BTN_OK_DIM COMP; - } - script { - public ok_state = _STATE_ENABLED; - } parts{ part { name: "bg"; type: RECT; - mouse_events: 1; - repeat_events: 0; scale:1; description { state: "default" 0.0; @@ -70,18 +48,50 @@ collections { description { state: "default" 0.0; + visible: 1; rel1 { relative: 0 0; to:bg; } rel2 { relative: 1 1; to:bg; } } } + part{ + name: "setasview.thumbnail"; + type: SWALLOW; + mouse_events: 1; + repeat_events: 0; + scale: 1; //allow scaling + description { + state: "default" 0.0; + align: 0.5 0.5; + visible: 1; + rel1 { relative: 0 0; to:bg; } + rel2 { relative: 1 1; to:bg; } + } + } + + part{ + name: "setasview.progressbar"; + type: SWALLOW; + scale: 1; //allow scaling + + description { + state: "default" 0.0; + min: PROGRESSBAR_WIDTH PROGRESSBAR_WIDTH; + max: PROGRESSBAR_WIDTH PROGRESSBAR_WIDTH; + fixed: 1 1; + visible: 1; + align: 0.5 0.5; + rel1 { relative: 0 0; to:"setasview.photocam"; } + rel2 { relative: 1 1; to:"setasview.photocam"; } + } + } + part { name: "event"; type: RECT; repeat_events: 1; mouse_events: 1; scale:1; - description { state: "default" 0.0; color: 0 0 0 0; @@ -91,188 +101,152 @@ collections { } } - part { name: "setasview.btn_cancel"; - type: IMAGE; - scale: 1; + part{ + name: "setasview.scissorbox"; + type: SWALLOW; mouse_events: 1; + repeat_events: 1; + scale: 1; description { - visible: 0; - min: BTN_CANCEL_WIDTH BTN_CANCEL_HEIGHT; - max: BTN_CANCEL_WIDTH BTN_CANCEL_HEIGHT; - fixed: 1 1; state: "default" 0.0; - align: 1.0 1.0; - rel1 { relative: 0.0 0.0;} - rel2 { relative: 0.944 0.975;} - } - - description { - state: "show" 0.0; - inherit: "default" 0.0; - visible: 1; - image.normal: BTN_CANCEL; + visible: 0; + rel1 { relative: 0 0; to:bg; } + rel2 { relative: 1 1; to:bg; } } + } - description { - state: "pressed" 0.0; - inherit: "default" 0.0; - visible: 1; - image.normal: BTN_CANCEL_PRESS; - } - description { - state: "hide" 0.0; - visible: 0; - } + } + programs { + program { + name: "bg_clicked"; + signal: "mouse,clicked,1"; + source: "event"; + action: SIGNAL_EMIT "setasview,bg,clicked" "edc"; } + } - part { name: "setasview.btn_ok"; - type: IMAGE; - scale: 1; - mouse_events: 1; - description { - state: "default" 0.0; - visible: 1; - min: BTN_OK_WIDTH BTN_OK_HEIGHT; - max: BTN_OK_WIDTH BTN_OK_HEIGHT; - fixed: 1 1; - align: 0.0 1.0; - image.normal: BTN_OK; - rel1 { relative: 0.056 0.0;} - rel2 { relative: 1.0 0.975;} - } + } +} - description { - state: "pressed" 0.0; - inherit: "default" 0.0; - image.normal: BTN_OK_PRESS; - } - description { - state: "dim" 0.0; - inherit: "default" 0.0; - image.normal: BTN_OK_DIM; - } +collections { +#define BTN_SET_CALLER_IMAGE_WIDTH 86 +#define BTN_SET_CALLER_IMAGE_HEIGHT 86 +#if 1 + group { + name: "setas_view_btn"; + + images { + image: "00_winset_control_toolbar_bg.png" COMP; + } + + parts{ + part { + name: "base"; + type: RECT; + scale:1; + mouse_events: 1; + repeat_events: 1; description { - state: "hide" 0.0; - visible: 0; + state: "default" 0.0; + color: 0 0 0 0; + rel1.relative: 0.0 0.0; + rel2.relative: 1.0 1.0; } } + part { name: "controlbar_bg"; + scale: 1; + description { state: "default" 0.0; + min: 0 CONTROLBAR_SMALL_HEIGHT_INC; + max: 999999 CONTROLBAR_SMALL_HEIGHT_INC; + fixed: 0 1; + align: 0.0 1.0; + visible: 1; + rel1 { to: "base"; } + rel2 { to: "base"; } + //image.normal: "00_winset_control_toolbar_bg.png"; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { name: "controlbar_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "controlbar_bg"; + rel2.to: "controlbar_bg"; + visible: 1; + } + description { state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { name: "elm.prev_btn_bg"; + type: RECT; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "controlbar_bg"; } + rel2.to: "controlbar_bg"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0; + } + } + part { name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "elm.prev_btn_bg"; + rel2.to: "elm.prev_btn_bg"; + } + } + part { name: "controlbar"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + rel1.to: "controlbar_bg"; + rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; } + visible: 1; + } + } } programs { -/* For button cancel */ - program { - name: "hide_btn_cancel"; - signal: "setasview,hide,btn_cancel"; - source: "elm"; - action: STATE_SET "hide" 0.0; - target: "setasview.btn_cancel"; - } - - program { - name: "show_btn_cancel"; - signal: "setasview,show,btn_cancel"; - source: "elm"; - action: STATE_SET "show" 0.0; - target: "setasview.btn_cancel"; - } - - program { - name: "btn_cancel_mouse_down"; - signal: "mouse,down,1"; - source: "setasview.btn_cancel"; - action: STATE_SET "pressed" 0.0; - target: "setasview.btn_cancel"; - } - - program { - name: "btn_cancel_mouse_up"; - signal: "mouse,up,1"; - source: "setasview.btn_cancel"; - after: "show_btn_cancel"; - } - - program { - name: "btn_cancel_clicked"; - signal: "mouse,clicked,1"; - source: "setasview.btn_cancel"; - action: SIGNAL_EMIT "setasview,cancel,clicked" ""; - } - -/* For button ok */ - program { - name: "hide_btn_set"; - signal: "setasview,hide,btn_ok"; - source: "elm"; - action: STATE_SET "hide" 0.0; - target: "setasview.btn_ok"; - } - - program { - name: "show_btn_set"; - signal: "setasview,show,btn_ok"; - source: "elm"; - script { - if ( get_int(ok_state) == _STATE_DISABLED ) - set_state(PART:"setasview.btn_ok", "dim", 0.0); - else - set_state(PART:"setasview.btn_ok", "default", 0.0); - } - } - program { - name: "dim_btn_set"; - signal: "setasview,disable,btn_ok"; - source: "elm"; - - script { - set_int(ok_state, _STATE_DISABLED); - set_state(PART:"setasview.btn_ok", "dim", 0.0); - } - } - - program { - name: "enable_btn_set"; - signal: "setasview,enable,btn_ok"; - source: "elm"; - script { - set_int(ok_state, _STATE_ENABLED); - set_state(PART:"setasview.btn_ok", "default", 0.0); - } - } - - program { - name: "btn_set_mouse_down"; - signal: "mouse,down,1"; - source: "setasview.btn_ok"; - - script { - if ( get_int(ok_state) == _STATE_ENABLED ) - set_state(PART:"setasview.btn_ok", "pressed", 0.0); + program { + name: "hide_menu"; + signal: "elm,state,hide"; + source: "event"; + action: STATE_SET "hide" 0.0; + target: "controlbar_clip"; + target: "controlbar_bg"; } - } - - program { - name: "btn_set_mouse_up"; - signal: "mouse,up,1"; - source: "setasview.btn_ok"; - after: "show_btn_set"; - } - - program { - name: "btn_set_clicked"; - signal: "mouse,clicked,1"; - source: "setasview.btn_ok"; - script { - if ( get_int(ok_state) == _STATE_ENABLED ) - { - emit("setasview,set,clicked", ""); - } - } - } + program { + name: "show_menu"; + signal: "elm,state,show"; + source: "event"; + action: STATE_SET "default" 0.0; + target: "controlbar_clip"; + target: "controlbar_bg"; + } } } } + diff --git a/main/layout/ivug-slider.edc b/main/layout/ivug-slider.edc index ea0c0b7..0e3aafa 100755 --- a/main/layout/ivug-slider.edc +++ b/main/layout/ivug-slider.edc @@ -1,19 +1,18 @@ -/* - * 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. + */ // slider layout @@ -24,6 +23,7 @@ group { images { image: "T01_btn_play.png" COMP; + image: "T01_btn_paused.png" COMP; } parts { @@ -41,7 +41,7 @@ group { } } - part { name: "slider.photocam"; + part { name: "slider.contents"; type: SWALLOW; mouse_events: 1; scale: 1; @@ -72,28 +72,28 @@ group { } } - +#if 1 part { name: "slider.icon"; - type: IMAGE; + type: SWALLOW; mouse_events: 1; scale: 1; description { state: "default" 0.0; - align: 0.5 0.5; + align: 0.5 0.5; visible: 0; - fixed: 1 1; - max: 72 72; + fixed: 1 1; + max: 72 72; rel1 { relative: 0.0 0.0; } rel2 { relative: 1.0 1.0; } - image.normal: "T01_btn_play.png"; } description { - state: "show" 0.0; - inherit: "default" 0.0; + state: "show" 0.0; + inherit: "default" 0.0; visible: 1; } } +#endif part { name: "slider.progress"; type: SWALLOW; @@ -135,44 +135,45 @@ group { } program { - name: "show_icon"; - signal: "elm,state,show_icon"; + name: "show_progress"; + signal: "elm,state,show,progress"; source: "slider"; action: STATE_SET "show" 0.0; - target: "slider.icon"; + target: "slider.progress"; } program { - name: "hide_icon"; - signal: "elm,state,hide_icon"; + name: "hide_progress"; + signal: "elm,state,hide,progress"; source: "slider"; action: STATE_SET "default" 0.0; - target: "slider.icon"; + target: "slider.progress"; } - +#if 1 program { - name: "show_progress"; - signal: "elm,state,show,progress"; + name: "show_icon"; + signal: "elm,state,show_icon"; source: "slider"; action: STATE_SET "show" 0.0; - target: "slider.progress"; + target: "slider.icon"; } program { - name: "hide_progress"; - signal: "elm,state,hide,progress"; + name: "hide_icon"; + signal: "elm,state,hide_icon"; source: "slider"; action: STATE_SET "default" 0.0; - target: "slider.progress"; + target: "slider.icon"; } + program { name: "icon_click"; signal: "mouse,clicked,1"; source: "slider.icon"; action: SIGNAL_EMIT "slider,icon,click" ""; } - +#endif }//programs } //group diff --git a/main/layout/ivug-toolbar.edc b/main/layout/ivug-toolbar.edc deleted file mode 100755 index c65ea20..0000000 --- a/main/layout/ivug-toolbar.edc +++ /dev/null @@ -1,886 +0,0 @@ -/* - * 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. - */ - - -/* -* Refer to themes\widgets\toolbar.edc -*/ - -#define ITEM_STATE_ENABLED 0 -#define ITEM_STATE_DISABLED 1 - -/* 1.0 */ -#define BUTTON_CONTROLBAR_ITEM_BUTTON_TEXT_SIZE_INC 28 -#define BUTTON_CONTROLBAR_ITEM_BUTTON_TEXTBLOCK_COLOR_INC "#f9f9f9" -#define BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC 56 56 - -#define BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC 249 249 249 255 -#define BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC 249 249 249 255 - -collections { - - group { name: "elm/toolbar/base/ivug-toolbar/default"; - images { - image: "T01_toolbar_bg.png" COMP; - } - parts { - part { name: "base"; - mouse_events: 1; - description { state: "default" 0.0; - image.normal: "T01_toolbar_bg.png"; - } - } - part { name: "clipper"; - type: RECT; - mouse_events: 0; - description { - state: "default" 0.0; - rel1 { - to: "base"; - offset: 2 2; - } - rel2 { - to: "base"; - offset: -3 -3; - } - } - } - part { name: "elm.swallow.content"; - clip_to: "clipper"; - type: SWALLOW; - description { - state: "default" 0.0; - rel1.to: "clipper"; - rel2.to: "clipper"; - } - } - part { name: "event"; - type: RECT; - mouse_events: 1; - repeat_events: 1; - description { state: "default" 0.0; - color: 0 0 0 0; - } - } - } - } - - group { name: "elm/toolbar/item/ivug-toolbar/default"; - images { - image: "T01_toolbar_press.png" COMP; - } - styles{ - style { name: "toolbar_style"; - base: "font=SLP:style=Medium font_size="BUTTON_CONTROLBAR_ITEM_BUTTON_TEXT_SIZE_INC" align=center color="BUTTON_CONTROLBAR_ITEM_BUTTON_TEXTBLOCK_COLOR_INC" wrap=mixed ellipsis=1"; - tag: "br" "\n"; - tag: "ps" "ps"; - tag: "hilight" "+ font=SLP:style=Bold"; - tag: "b" "+ font=SLP:style=Bold"; - tag: "tab" "\t"; - } - } - - data.item: "transition_animation_on" "1"; - script { - public item_state = ITEM_STATE_ENABLED; - } - parts { - part { name: "bg"; - mouse_events: 0; - description { state: "default" 0.0; - visible: 0; - color: 255 255 255 0; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 0.0; - to: "padding_right_bottom"; - } - image { - normal: "T01_toolbar_press.png"; - border: 3 3 3 3; - } - image.middle: SOLID; - fill.smooth: 0; - } - description { state: "selected" 0.0; - inherit: "default" 0.0; - visible: 1; - color: 255 255 255 255; - } - description { state: "disabled" 0.0; - inherit: "default" 0.0; - visible: 0; - color: 255 255 255 0; - } - } - part { name: "padding_left_top"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - align: 0.0 0.0; - rel2.relative: 0.0 0.0; - min: 10 8; - fixed: 1 1; - visible: 1; - color: 0 0 0 0; - } - } - part { name: "padding_right_bottom"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - align: 1.0 1.0; - rel1.relative: 1.0 1.0; - min: 10 5; - fixed: 1 1; - visible: 1; - color: 0 0 0 0; - } - } - part { - name: "icon_rect"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - min: 0 0; - fixed: 0 1; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 1.0; - to_x: "padding_right_bottom"; - to_y: "padding_left_top"; - } - align: 0.5 0.0; - color: 0 0 0 0; - } - description { state: "visible" 0.0; - min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - fixed: 0 1; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 1.0; - to_x: "padding_right_bottom"; - to_y: "padding_left_top"; - } - align: 0.5 0.0; - color: 0 0 0 0; - } - description { state: "icononly" 0.0; - inherit: "default" 0.0; - } - } - part { name: "padding_after_icon"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; //when only icon or no icon is there - align: 0.0 0.0; - rel1 { - relative: 0.0 1.0; - to: "icon_rect"; - } - rel2.to: "icon_rect"; - fixed: 0 1; - min: 0 0; - color: 0 0 0 0; - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - } - description { state: "icononly" 0.0; - inherit: "default" 0.0; - } - } - part { name: "padding_before_text"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; //when only icon or no icon is there - align: 0.5 1.0; - rel1 { - relative: 1.0 0.0; - to_x: "padding_left_top"; - to_y: "elm.text"; - } - rel2 { - relative: 0.0 0.0; - to_x: "padding_right_bottom"; - to_y: "elm.text"; - } - fixed: 0 1; - min: 0 0; - color: 0 0 0 0; - } - } - part { name: "elm.swallow.icon"; - type: SWALLOW; - scale: 1; - clip_to: "elm.icon.clipper"; - description { state: "default" 0.0; - visible: 0; - align: 0.5 0.0; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 1.0; - to_x: "padding_right_bottom"; - to_y: "padding_left_top"; - } - fixed: 0 1; - } - description { state: "visible" 0.0; - fixed: 0 1; - min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 0.0; - to_x: "padding_right_bottom"; - to_y: "padding_before_text"; - } - aspect: 1.0 1.0; - aspect_preference: HORIZONTAL; - } - description { state: "icononly" 0.0; - min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 0.0; - to: "padding_right_bottom"; - } - aspect: 1.0 1.0; - aspect_preference: HORIZONTAL; - } - } - part { name: "elm.swallow.icon_new"; - type: SWALLOW; - scale: 1; - clip_to: "elm.icon_new.clipper"; - description { state: "default" 0.0; - visible: 0; - align: 0.5 0.0; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 1.0; - to_x: "padding_right_bottom"; - to_y: "padding_left_top"; - } - fixed: 0 1; - } - description { state: "visible" 0.0; - fixed: 0 1; - min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 0.0; - to_x: "padding_right_bottom"; - to_y: "padding_before_text"; - } - aspect: 1.0 1.0; - aspect_preference: HORIZONTAL; - } - description { state: "icononly" 0.0; - min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 0.0; - to: "padding_right_bottom"; - } - aspect: 1.0 1.0; - aspect_preference: HORIZONTAL; - } - } - part { name: "elm.text"; - type: TEXTBLOCK; - mouse_events: 0; - scale: 1; - clip_to: "elm.text.clipper"; - description { state: "default" 0.0; - visible: 1; - rel1 { - relative: 1.0 1.0; - to_x: "padding_left_top"; - to_y: "padding_after_icon"; - } - rel2 { - relative: 0.0 0.0; - to: "padding_right_bottom"; - } - color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC; - fixed: 1 1; - text { - style: "toolbar_style"; - min: 0 1; - max: 0 1; - } - } - description { state: "selected" 0.0; - inherit: "default" 0.0; - visible: 1; - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - visible: 1; - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - description { state: "focused" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - } - part { name: "elm.text_new"; - type: TEXTBLOCK; - mouse_events: 0; - scale: 1; - clip_to: "elm.text_new.clipper"; - description { state: "default" 0.0; - visible: 1; - rel1 { - relative: 1.0 1.0; - to_x: "padding_left_top"; - to_y: "padding_after_icon"; - } - rel2 { - relative: 0.0 0.0; - to: "padding_right_bottom"; - } - color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC; - fixed: 1 1; - text { - style: "toolbar_style"; - min: 0 1; - max: 0 1; - } - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - visible: 1; - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - description { state: "focused" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - } - part { name: "elm.text.clipper"; - type: RECT; - description { state: "default" 0.0; - color: 255 255 255 255; - } - description { state: "animation" 0.0; - color: 255 255 255 0; - } - description { state: "disabled" 0.0; - color: 255 255 255 153; - } - } - part { name: "elm.text_new.clipper"; - type: RECT; - description { state: "default" 0.0; - color: 255 255 255 0; - } - description { state: "animation" 0.0; - color: 255 255 255 255; - } - } - part { name: "elm.icon.clipper"; - type: RECT; - description { state: "default" 0.0; - color: 255 255 255 255; - } - description { state: "animation" 0.0; - color: 255 255 255 0; - } - description { state: "disabled" 0.0; - color: 255 255 255 153; - } - } - part { name: "elm.icon_new.clipper"; - type: RECT; - description { state: "default" 0.0; - color: 255 255 255 0; - } - description { state: "animation" 0.0; - color: 255 255 255 255; - } - } - part { name: "event"; - type: RECT; - mouse_events: 1; - ignore_flags: ON_HOLD; - description { state: "default" 0.0; - color: 0 0 0 0; - } - } - part { name: "event2"; - type: RECT; - mouse_events: 1; - repeat_events: 1; - description { state: "default" 0.0; - color: 0 0 0 0; - } - } - } - programs { - program { name: "pressed"; - signal: "mouse,down,1"; - source: "event"; - script { - if (get_int(item_state) != ITEM_STATE_DISABLED) - set_state(PART:"bg", "selected", 0.0); - } - transition: LINEAR 0.2; - } - program { name: "unpressed"; - signal: "mouse,up,1"; - source: "event2"; - action: STATE_SET "default" 0.0; - target: "bg"; - transition: LINEAR 0.1; - } - program { name: "go"; - signal: "mouse,up,1"; - source: "event"; - action: SIGNAL_EMIT "elm,action,click" "elm"; - } - program { name: "mouse,in"; - signal: "mouse,in"; - source: "event"; - action: SIGNAL_EMIT "elm,mouse,in" "elm"; - } - program { name: "mouse,out"; - signal: "mouse,out"; - source: "event"; - action: SIGNAL_EMIT "elm,mouse,out" "elm"; - } - program { name: "disable"; - signal: "elm,state,disabled"; - source: "elm"; - action: STATE_SET "disabled" 0.0; - target: "bg"; - after: "disable_text"; - } - program { name: "disable_text"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.text", st, 30, vl); - if (!strcmp(st, "visible")) - { - set_state(PART:"elm.text", "disabled_visible", 0.0); - set_state(PART:"elm.text_new", "disabled_visible", 0.0); - } - else - { - set_state(PART:"elm.text", "disabled", 0.0); - set_state(PART:"elm.text_new", "disabled", 0.0); - } - set_state(PART:"elm.text.clipper", "disabled", 0.0); - set_state(PART:"elm.icon.clipper", "disabled", 0.0); - set_int(item_state, ITEM_STATE_DISABLED); - } - } - program { name: "enable"; - signal: "elm,state,enabled"; - source: "elm"; - action: STATE_SET "default" 0.0; - target: "bg"; - after: "enable_text"; - } - program { name: "enable_text"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.text", st, 30, vl); - if (!strcmp(st, "disabled_visible")) - { - set_state(PART:"elm.text", "visible", 0.0); - set_state(PART:"elm.text_new", "visible", 0.0); - } - else - { - set_state(PART:"elm.text", "default", 0.0); - set_state(PART:"elm.text_new", "default", 0.0); - } - set_state(PART:"elm.text.clipper", "default", 0.0); - set_state(PART:"elm.icon.clipper", "default", 0.0); - set_int(item_state, ITEM_STATE_ENABLED); - } - } - program { name: "label_set,animation,forward"; - signal: "elm,state,label_set,forward"; - source: "elm"; - after: "label_set,animation"; - } - program { name: "label_set,animation,backward"; - signal: "elm,state,label_set,backward"; - source: "elm"; - after: "label_set,animation"; - } - program { name: "label_set,animation"; - signal: "elm,state,label_set"; - source: "elm"; - action: STATE_SET "animation" 0.0; - target: "elm.text.clipper"; - target: "elm.text_new.clipper"; - transition: LINEAR 0.2; - after: "label_set,animation,done"; - } - program { name: "label_set,animation,done"; - action: SIGNAL_EMIT "elm,state,label_set,done" "elm"; - } - program { name: "label,reset"; - signal: "elm,state,label,reset"; - source: "elm"; - action: STATE_SET "default" 0.0; - target: "elm.text.clipper"; - target: "elm.text_new.clipper"; - } - program { name: "icon_set,animation,forward"; - signal: "elm,state,icon_set,forward"; - source: "elm"; - after: "icon_set,animation"; - } - program { name: "icon_set,animation,backward"; - signal: "elm,state,icon_set,backward"; - source: "elm"; - after: "icon_set,animation"; - } - program { name: "icon_set,animation"; - signal: "elm,state,icon_set"; - source: "elm"; - action: STATE_SET "animation" 0.0; - target: "elm.icon.clipper"; - target: "elm.icon_new.clipper"; - transition: LINEAR 0.2; - after: "icon_set,animation,done"; - } - program { name: "icon_set,animation,done"; - action: SIGNAL_EMIT "elm,state,icon_set,done" "elm"; - } - program { name: "icon,reset"; - signal: "elm,state,icon,reset"; - source: "elm"; - action: STATE_SET "default" 0.0; - target: "elm.icon.clipper"; - target: "elm.icon_new.clipper"; - } - program { name: "text_show"; - signal: "elm,state,text,visible"; - source: "elm"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.swallow.icon", st, 30, vl); - if (!strcmp(st, "icononly")) - { - set_state(PART:"elm.swallow.icon", "visible", 0.0); - set_state(PART:"icon_rect", "visible", 0.0); - set_state(PART:"padding_after_icon", "visible", 0.0); - } - set_state(PART:"elm.text", "visible", 0.0); - } - } - program { name: "text_hide"; - signal: "elm,state,text,hidden"; - source: "elm"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.swallow.icon", st, 30, vl); - if (!strcmp(st, "visible")) - { - set_state(PART:"elm.swallow.icon", "icononly", 0.0); - set_state(PART:"icon_rect", "icononly", 0.0); - set_state(PART:"padding_after_icon", "icononly", 0.0); - } - set_state(PART:"elm.text", "default", 0.0); - } - } - program { name: "icon_show"; - signal: "elm,state,icon,visible"; - source: "elm"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.text", st, 30, vl); - if (!strcmp(st, "visible")) - { - set_state(PART:"elm.swallow.icon", "visible", 0.0); - set_state(PART:"icon_rect", "visible", 0.0); - set_state(PART:"padding_after_icon", "visible", 0.0); - } - else - { - set_state(PART:"elm.swallow.icon", "icononly", 0.0); - set_state(PART:"icon_rect", "icononly", 0.0); - set_state(PART:"padding_after_icon", "icononly", 0.0); - } - } - } - } - } - - group { name: "elm/toolbar/item/ivug-toolbar/item_horizontal"; - inherit: "elm/toolbar/item/ivug-toolbar/default"; - script { - public item_state = ITEM_STATE_ENABLED; - } - parts { - part { name: "icon_rect"; - description { state: "default" 0.0; - fixed: 1 0; - align: 0.0 0.5; - } - description { state: "visible" 0.0; - fixed: 1 0; - rel2 { - relative: 1.0 0.0; - to_x: "padding_left_top"; - to_y: "padding_right_bottom"; - } - align: 0.0 0.5; - } - } - part { name: "padding_after_icon"; - description { state: "default" 0.0; //when only icon or no icon is there - rel1.relative: 1.0 0.0; - fixed: 1 1; - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - min: 6 0; - } - } - part { name: "padding_before_text"; - description { state: "default" 0.0; //when only icon or no icon is there - align: 1.0 0.5; - rel1 { - relative: 0.0 1.0; - to_x: "elm.text"; - to_y: "padding_left_top"; - } - rel2 { - to_x: "elm.text"; - to_y: "padding_right_bottom"; - } - fixed: 1 0; - min: 6 0; - } - } - part { name: "elm.swallow.icon"; - description { state: "default" 0.0; - align: 0.0 0.5; - rel2 { - relative: 1.0 0.0; - to_x: "padding_left_top"; - to_y: "padding_right_bottom"; - } - fixed: 1 0; - } - description { state: "visible" 0.0; - fixed: 1 0; - align: 1.0 0.5; - rel1 { - relative: 0.0 1.0; - to_x: "padding_before_text"; - to_y: "padding_left_top"; - } - rel2 { - relative: 0.0 0.0; - to_x: "padding_before_text"; - to_y: "padding_right_bottom"; - } - aspect_preference: VERTICAL; - } - description { state: "icononly" 0.0; - aspect_preference: VERTICAL; - } - } - part { name: "elm.swallow.icon_new"; - description { state: "default" 0.0; - align: 0.0 0.5; - rel2 { - relative: 1.0 0.0; - to_x: "padding_left_top"; - to_y: "padding_right_bottom"; - } - fixed: 1 0; - } - description { state: "visible" 0.0; - fixed: 1 0; - align: 1.0 0.5; - rel1 { - relative: 0.0 1.0; - to_x: "padding_before_text"; - to_y: "padding_left_top"; - } - rel2 { - relative: 0.0 0.0; - to_x: "padding_before_text"; - to_y: "padding_right_bottom"; - } - aspect_preference: VERTICAL; - } - description { state: "icononly" 0.0; - aspect_preference: VERTICAL; - } - } - part { name: "elm.text"; - type: TEXTBLOCK; - description { state: "default" 0.0; - rel1 { - relative: 1.0 1.0; - to_x: "padding_after_icon"; - to_y: "padding_left_top"; - } - text { - style: "toolbar_style"; - min: 1 0; - max: 1 0; - } - } - description { state: "selected" 0.0; - inherit: "default" 0.0; - visible: 1; - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - visible: 1; - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - description { state: "focused" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - } - part { name: "elm.text_new"; - type: TEXTBLOCK; - description { state: "default" 0.0; - rel1 { - relative: 1.0 1.0; - to_x: "padding_after_icon"; - to_y: "padding_left_top"; - } - text { - style: "toolbar_style"; - min: 1 0; - max: 1 0; - } - } - description { state: "selected" 0.0; - inherit: "default" 0.0; - visible: 1; - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - visible: 1; - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - description { state: "focused" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - } - } - } - - /*group { name: "elm/toolbar/separator/ivug-toolbar/default"; - images { - image: "separator_v.png" COMP; - } - parts { - part { name: "separator"; // separator group - description { state: "default" 0.0; - min: 2 2; - max: 2 9999; - rel1.offset: 4 4; - rel2.offset: -5 -5; - image { - normal: "separator_v.png"; - } - fill { - smooth: 0; - } - } - } - } - }*/ - - group { name: "elm/toolbar/object/ivug-toolbar/default"; - parts { - part { name: "elm.swallow.object"; // object group - type: SWALLOW; - description { - state: "default" 0.0; - } - } - } - } -} - diff --git a/main/res/images/01_Control icon/T01_controlbar_icon_info.png b/main/res/images/01_Control icon/T01_controlbar_icon_info.png deleted file mode 100755 index 9e746c87882663cf36738ad04a4c82cb4a828795..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3273 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 Hu0mjfQ;iJw diff --git a/main/res/images/T01_Nocontents_broken.png b/main/res/images/T01_Nocontents_broken.png deleted file mode 100755 index 9326d0a5be19bea8add45169d1c4c03f40b54bec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4880 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 -#include - -#include "statistics.h" -#include "ivug-debug.h" -#include "ivug-string.h" -#include "ivug-util.h" -#include "ivug-define.h" -#include "ivug-config.h" -#include "ivug-widget.h" - - -#define _EDJ(o) elm_layout_edje_get(o) - -#define IMAGE_BETWEEN_MARGIN (30) // The value is width between photocam(unit is pixel). - -#endif /* __IVUG_COMMON_H__ */ - diff --git a/main/src/common/ivug-config.c b/main/src/common/ivug-config.c deleted file mode 100755 index 06efce5..0000000 --- a/main/src/common/ivug-config.c +++ /dev/null @@ -1,200 +0,0 @@ -/* - * 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 "ivug-common.h" -#include "ivug-define.h" -#include "ivug-effect.h" -#include "ivug-config.h" - -#include -#include - -// TODO: Request vconf key to setting part, Slide show setting vconf key -#define VCONFKEY_GALLERY_INTERVAL_TIME "db/setting/gallery/interval_time" //double -#define VCONFKEY_GALLERY_REPEAT_STATE "db/setting/gallery/repeat_state" //boolean -#define VCONFKEY_GALLERY_SHUFFLE_STATE "db/setting/gallery/shuffle_state" //boolean -#define VCONFKEY_GALLERY_TRANSITION_EFFECT "db/setting/gallery/ss_effect" //char - -enum { STATE_FALSE = 0, STATE_TRUE = 1, }; - -/* - Set lock screen with given image. - - CAUTION : does not check filepath integrity -*/ -bool ivug_config_set_lockscreen_image(const char* filepath) -{ - if(filepath == NULL) - { - MSG_IMAGEVIEW_ERROR("Lock screen path is NULL"); - return FALSE; - } - - if(vconf_set_str( VCONFKEY_IDLE_LOCK_BGSET, filepath ) < 0) - { - MSG_IMAGEVIEW_ERROR("Lockscreen set Error : %s", filepath); - return FALSE; - } - - MSG_IMAGEVIEW_HIGH("Set Lockscreen filepath = %s", filepath); - - return TRUE; -} - -/* - Set home screen with given image - - CAUTION : does not check filepath integrity -*/ -bool ivug_config_set_homescreen_image( const char* filepath ) -{ - if(filepath == NULL) - { - MSG_IMAGEVIEW_ERROR("Home screen path is NULL"); - return FALSE; - } -// TODO : Need to check file existence????? - if(vconf_set_str(VCONFKEY_BGSET, filepath) < 0) - { - MSG_IMAGEVIEW_ERROR("Homescreen set Error"); - return FALSE; - } - - MSG_IMAGEVIEW_HIGH("Set Homescreen filepath = %s", filepath); - return TRUE; -} - - -static bool -_ivug_config_get_slideshow_repeat_state(void) -{ - int repeat_state = STATE_FALSE; - - if(vconf_get_bool(VCONFKEY_GALLERY_REPEAT_STATE, &repeat_state) < 0) - { - MSG_IMAGEVIEW_ERROR("vconf_get_bool failed, set as repeat state as default: false"); - return false; - } - - MSG_IMAGEVIEW_HIGH("repeat state is: %d", repeat_state); - - return (repeat_state == STATE_TRUE ? true : false); -} - -static bool -_ivug_config_get_slideshow_shuffle_state(void) -{ - int shuffle_state = STATE_FALSE; - - if(vconf_get_bool(VCONFKEY_GALLERY_SHUFFLE_STATE, &shuffle_state) < 0) - { - MSG_IMAGEVIEW_ERROR("vconf_get_bool failed, set as shuffle state as default: false"); - return false; - } - - MSG_IMAGEVIEW_HIGH("shuffle state is: %d", shuffle_state); - - return (shuffle_state == STATE_TRUE ? true : false); -} - -static double -_ivug_config_get_slideshow_interval_time(void) -{ - double interval_time = 0.0; - - if(vconf_get_dbl(VCONFKEY_GALLERY_INTERVAL_TIME, &interval_time) < 0) - { - MSG_IMAGEVIEW_ERROR("vconf_get_dbl failed, set as interval time as -1"); - - interval_time = -1.0; - } - - MSG_IMAGEVIEW_HIGH("interval time is: %f", interval_time); - return interval_time; -} - -static char * -_ivug_config_get_slideshow_effect_type(void) -{ -// TODO : Free returned string?? - char *effect_str = NULL; - effect_str = vconf_get_str(VCONFKEY_GALLERY_TRANSITION_EFFECT); - - if(!effect_str) - { - MSG_IMAGEVIEW_ERROR("vconf_get_str failed, set as effect type as default"); - - effect_str = NULL; - } - - MSG_IMAGEVIEW_HIGH("effect is: %s", effect_str); - - return effect_str; -} - -static ivug_effect_type -_ivug_config_get_effect_type_by_string(char *effect_str) -{ - ivug_retv_if(!effect_str, EFFECT_NONE); - - ivug_effect_type type = IVUG_EFFECT_TYPE_SLIDE; - - if(!strncmp(effect_str, "Slide", strlen(effect_str))) - { - type = IVUG_EFFECT_TYPE_SLIDE; - } - else //Set all other cases as default NONE - { - MSG_SLIDER_WARN("Invalid type : %s", effect_str); - type = EFFECT_NONE; - } - - MSG_IMAGEVIEW_HIGH("effect_str = %s, type = %d", effect_str, type); - - return type; -} - -void -ivug_config_get_slideshow_setting(slide_show_mode *mode, - double *interval_time, - ivug_effect_type *effect_type) -{ - *mode = SLIDE_SHOW_MODE_NORMAL; - - bool state; - - state = _ivug_config_get_slideshow_repeat_state(); - if(state == true) - { - *mode |= SLIDE_SHOW_MODE_REPEAT; - } - - state = _ivug_config_get_slideshow_shuffle_state(); - if(state == true) - { - *mode |= SLIDE_SHOW_MODE_SHUFFLE; - } - - *interval_time = _ivug_config_get_slideshow_interval_time(); - - /* EFFECT_NONE, EFFECT_FADE, EFFECT_BLIND, EFFECT_IRIS */ - char *effect = _ivug_config_get_slideshow_effect_type(); - - *effect_type = _ivug_config_get_effect_type_by_string(effect); -} - - diff --git a/main/src/common/ivug-config.h b/main/src/common/ivug-config.h deleted file mode 100755 index 31d9533..0000000 --- a/main/src/common/ivug-config.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * 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 __IVUG_CONFIG_H__ -#define __IVUG_CONFIG_H__ - -typedef enum { - SLIDE_SHOW_MODE_NORMAL = 0x00, - SLIDE_SHOW_MODE_REPEAT = 0x01, - SLIDE_SHOW_MODE_SHUFFLE = 0x02, - SLIDE_SHOW_MODE_SHUFFLE_REPEAT = 0x03, -} slide_show_mode; - -typedef enum { - IVUG_EFFECT_TYPE_SLIDE = 0x00, - IVUG_EFFECT_TYPE_MAX, -} ivug_effect_type; - -#ifdef __cplusplus -extern "C" { -#endif - -bool ivug_config_set_lockscreen_image(const char* filepath); - -bool ivug_config_set_homescreen_image(const char* filepath); - -void ivug_config_get_slideshow_setting(slide_show_mode * /* OUT */ mode, - double * /* OUT */ interval_time, - ivug_effect_type * /* OUT */ effect_type); - -#ifdef __cplusplus -} -#endif - - -#endif // __IVUG_CONFIG_H__ diff --git a/main/src/common/ivug-datatypes.h b/main/src/common/ivug-datatypes.h deleted file mode 100755 index dc616e3..0000000 --- a/main/src/common/ivug-datatypes.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * 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 __IVUG_DATATYPES_H__ -#define __IVUG_DATATYPES_H__ - -#include "ivug-define.h" - -typedef void *Handle; - -#ifdef _USE_MEDIAINFO_STRINGID_ -typedef const char *UUID; -#else -typedef int UUID; -#endif - -#endif // __IVUG_DATATYPES_H__ - diff --git a/main/src/common/ivug-define.h b/main/src/common/ivug-define.h deleted file mode 100755 index 0cddf5b..0000000 --- a/main/src/common/ivug-define.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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. - */ - - -/* - system widely used definition. -*/ - -#pragma once - -#define IVUG_MAX_FILE_PATH_LEN (4096) - -/* -Definition "PREFIX" is declared in CMakelist.txt - PREFIX is "/opt/ug" - PACKAGE is "ug-image-viewer-efl" - - Path name does not include trailing /. - - DATA_PATH is /opt/data -*/ -#define LOCALE_PATH PREFIX"/res/locale" -#define IMAGE_PATH PREFIX"/res/images/"PACKAGE -#define EDJ_PATH PREFIX"/res/edje/"PACKAGE - -/* - Home screen and Lock screen image should be put in DATA_PATH. -*/ -#define DATA_PATH DATADIR"/"PACKAGE - -// TODO : Add comments -#define IV_WINDOW_SIZE (41)//41 /* it's better to be odd number */ -#define IV_WINDOW_SIZE_FOR_SLIDE_SHOW (1) -#define IV_RELOAD_OFFSET (4)//IV_WINDOW_SIZE/10 // it's better to be larger than 2 - -#define USE_WIN_AS_PARENT - -#define NAVI_OPTION_BTN_STYLE "multiline" - -#define IVUG_DEFAULT_BG_COLOR 48 - -#define _USE_MEDIAINFO_STRINGID_ - -#define FEATURE_DYNAMIC_POPUP_HEIGHT - -#define USE_CUSTOM_STYLE - diff --git a/main/src/common/ivug-string.h b/main/src/common/ivug-string.h deleted file mode 100755 index ab4458d..0000000 --- a/main/src/common/ivug-string.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * 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 __IVUG_STRING_H__ -#define __IVUG_STRING_H__ - -#include - -/* Original code is in appcore-common.h */ -#define _(str) gettext(str) /**< gettext alias */ -#define gettext_noop(str) (str) /**< keyword for xgettext to extract translatable strings */ -#define N_(str) gettext_noop(str) /**< gettext_noop alias */ - - -#define LOCALE_PATH PREFIX"/res/locale" /*TODO!!!*/ - -#ifndef PACKAGE -#error PACKAGE is not defined -#endif - -#ifndef LOCALE_PATH -#error LOCALE_PATH is not defined -#endif - -//string -#define IVUG_TEXT_DOMAIN PACKAGE -#define IVUG_LOCALEDIR LOCALE_PATH - -// Not yet translated -#define IDS_NULL _("") - -#define IDS_INVALID_IMAGE_FILE (dgettext(IVUG_TEXT_DOMAIN, "IDS_IV_POP_INVALID_IMAGE_FILE")) -#define IDS_PERMISSION_DENIED (dgettext(IVUG_TEXT_DOMAIN, "IDS_IV_POP_PERMISSION_DENIED")) -#define IDS_APPLICATION_NOT_INSTALLED (dgettext("sys_string","IDS_COM_BODY_APPLICATION_NOT_INSTALLED")) - -/*#define Details*/ -#define IDS_FORMAT (dgettext(IVUG_TEXT_DOMAIN, "IDS_IV_BODY_FILE_FORMAT")) -#define IDS_DATE_CREATED (dgettext(IVUG_TEXT_DOMAIN, "IDS_IV_BODY_DATE_CREATED")) -#define IDS_LOCATION (dgettext(IVUG_TEXT_DOMAIN, "IDS_COM_BODY_LOCATION")) -#define IDS_FILE_LOCATION (dgettext(IVUG_TEXT_DOMAIN, "IDS_IV_BODY_FILE_LOCATION")) -#define IDS_RESOLUTION (dgettext(IVUG_TEXT_DOMAIN, "IDS_IV_BODY_RESOLUTION")) -#define IDS_LATITUDE (dgettext(IVUG_TEXT_DOMAIN, "IDS_IV_BODY_LATITUDE")) -#define IDS_LONGITUDE (dgettext(IVUG_TEXT_DOMAIN, "IDS_IV_BODY_LONGITUDE")) - -#define IDS_N_A (dgettext(IVUG_TEXT_DOMAIN, "IDS_IV_BODY_N_A")) -#define IDS_PRINT (dgettext(IVUG_TEXT_DOMAIN, "IDS_IV_BODY_PRINT")) - -/* Registered string in STMS IV */ -#define IDS_ADDED (dgettext(IVUG_TEXT_DOMAIN, "IDS_IV_POP_ADDED")) -#define IDS_SLIDE_SHOW (dgettext(IVUG_TEXT_DOMAIN, "IDS_IV_OPT_SLIDE_SHOW")) - -#define IDS_SD_CARD_REMOVED (dgettext(IVUG_TEXT_DOMAIN, "IDS_IV_POP_SD_CARD_REMOVED")) -#define IDS_SET_AS (dgettext(IVUG_TEXT_DOMAIN, "IDS_IV_OPT_SET_AS")) - -#define IDS_HOME_SCREEN_WALLPAPER (dgettext(IVUG_TEXT_DOMAIN, "IDS_IV_HEADER_HOME_SCREEN_WALLPAPER_ABB")) -#define IDS_LOCK_SCREEN_WALLPAPER (dgettext(IVUG_TEXT_DOMAIN, "IDS_IV_HEADER_LOCK_SCREEN_WALLPAPER_ABB")) -#define IDS_SET_WALLPAPER_FOR_HOME_SCREEN_AND_LOCK_SCREEN (dgettext(IVUG_TEXT_DOMAIN, "IDS_IV_POP_SET_WALLPAPER_FOR_HOME_SCREEN_AND_LOCK_SCREEN")) -#define IDS_HOME_AND_LOCK_SCREEN_WALLPAPER (dgettext(IVUG_TEXT_DOMAIN, "IDS_IV_OPT_HOME_AND_LOCK_SCREEN_WALLPAPER")) - -// System string. -#define IDS_DELETE_MSG (dgettext("sys_string","IDS_COM_POP_DELETE_Q")) -#define IDS_NAME (dgettext("sys_string", "IDS_COM_BODY_DETAILS_NAME")) -#define IDS_SIZE (dgettext("sys_string", "IDS_COM_BODY_SIZE")) - -#define IDS_COPY (dgettext("sys_string","IDS_COM_BODY_COPY")) - -#define IDS_ERROR (dgettext("sys_string","IDS_COM_POP_ERROR")) -#define IDS_UNKNOWN (dgettext("sys_string", "IDS_COM_BODY_UNKNOWN")) - -#define IDS_LOADING (dgettext("sys_string", "IDS_COM_BODY_LOADING")) - -#define IDS_BLUETOOTH (dgettext("sys_string", "IDS_COM_BODY_BLUETOOTH")) - -#define IDS_CANCEL (dgettext("sys_string", "IDS_COM_SK_CANCEL")) -#define IDS_DONE (dgettext("sys_string","IDS_COM_SK_DONE")) - -#define IDS_SET (dgettext("sys_string","IDS_COM_SK_SET")) -#define IDS_BACK (dgettext("sys_string","IDS_COM_BODY_BACK")) - -#define IDS_OK (dgettext("sys_string","IDS_COM_SK_OK")) -#define IDS_DELETE (dgettext("sys_string","IDS_COM_BODY_DELETE")) -#define IDS_DELETED (dgettext("sys_string","IDS_COM_POP_DELETED")) - -#define IDS_SAVED (dgettext("sys_string","IDS_COM_POP_SAVED")) -#define IDS_NO (dgettext("sys_string","IDS_COM_SK_NO")) -#define IDS_YES (dgettext("sys_string","IDS_COM_SK_YES")) - -#define IDS_SUCCESS (dgettext("sys_string", "IDS_COM_POP_SUCCESS")) -#define IDS_FAILED (dgettext("sys_string", "IDS_COM_POP_FAILED")) - -#define IDS_DETAILS (dgettext("sys_string","IDS_COM_BODY_DETAILS")) - -#define IDS_CLOSE (dgettext("sys_string", "IDS_COM_BODY_CLOSE")) -#define IDS_NO_NAME (dgettext("sys_string", "IDS_COM_BODY_NO_NAME")) - -#endif // __IVUG_STRING_H__ - - diff --git a/main/src/control/ivug-ext-ug.c b/main/src/control/ivug-ext-ug.c deleted file mode 100755 index e3c5398..0000000 --- a/main/src/control/ivug-ext-ug.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * 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 "ivug-ext-ug.h" -#include "ivug-data.h" -#include "ivug-popup.h" - -#include -#include -#include -#include // UG_INIT_EFL - -//define -#define VIDEOPLAYER_PKG_NAME "org.tizen.video-player" -#define BLUETOOTH_PKG_NAME "org.tizen.bluetooth" - -#define MIME_TYPE_LEN 255 - -bool -ivug_ext_aul_launch(Evas_Object *parent, enum IVUG_EXT_AUL_TYPE type, const char *filepath, void *data) -{ - if(!filepath) - { - MSG_UTIL_ERROR("file path is NULL"); - return false; - } - MSG_IMAGEVIEW_HIGH("Creating AUL. type=%d file path =%s", type, filepath); - - bundle* b = bundle_create(); - char mime_type[MIME_TYPE_LEN] = {0,}; - aul_get_mime_from_file(filepath, mime_type, sizeof(mime_type)); - MSG_IMAGEVIEW_HIGH("mime type=%s", mime_type); - - IV_ASSERT(b!= NULL); - switch( type ) - { - case IVUG_EXT_AUL_VIDEOPLAYER: - bundle_add( b, "path", filepath); - bundle_add( b, "launching_application", "image_viewer"); - aul_launch_app(VIDEOPLAYER_PKG_NAME, b); - break; - - case IVUG_EXT_AUL_SIMPLE_VIDEOPLAYER: - bundle_add( b, "path", filepath); - bundle_add( b, "launching_application", "light_play_view"); -// Camera -> Image Viewer -> Video player, In this case, launching_application bundle's value should be "light_play_view" - - aul_launch_app(VIDEOPLAYER_PKG_NAME, b); - break; - - default: - bundle_free(b); - return false; - } - - bundle_free(b); - - return true; -} - - diff --git a/main/src/control/ivug-ext-ug.h b/main/src/control/ivug-ext-ug.h deleted file mode 100755 index dc4a924..0000000 --- a/main/src/control/ivug-ext-ug.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 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 "ivug-common.h" -#include "ivug-data.h" - -#ifndef __IVUG_EXT_UG_H__ -#define __IVUG_EXT_UG_H__ - -typedef enum IVUG_EXT_AUL_TYPE{ - IVUG_EXT_AUL_NONE = 0x00, - IVUG_EXT_AUL_VIDEOPLAYER, - IVUG_EXT_AUL_SIMPLE_VIDEOPLAYER, -} _ivug_ext_aul_type; - - -bool -ivug_ext_aul_launch(Evas_Object *parent, enum IVUG_EXT_AUL_TYPE type, const char *filepath, void *data); - -#endif //__IVUG_EXT_UG_H__ diff --git a/main/src/control/ivug-main.c b/main/src/control/ivug-main.c deleted file mode 100755 index 3efb9c8..0000000 --- a/main/src/control/ivug-main.c +++ /dev/null @@ -1,258 +0,0 @@ -/* - * 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 "ivug-common.h" -#include "ivug-main.h" -#include "ivug-data.h" -#include "ivug-util.h" - - -#include // ug_destroy_me -#include - -#define MAX_INSTALNCE (5) - -typedef struct -{ - struct ui_gadget *ug; // ug handle - - Evas_Object *parent_win; -// EFL theme - Elm_Theme *th; - -// Window Geometry - int win_w, win_h; //size - - MediaSvcHandle *media_svc_hadle; - -} AppData; - -static Eina_List *ContextList = NULL; - -Elm_Theme* -gGetSystemTheme(void) -{ - AppData *ugContext; - ugContext = eina_list_data_get(ContextList); - - IV_ASSERT(ugContext != NULL); - - return ugContext->th; -} - -void -gGetSystemDimension(int *w, int *h) -{ - AppData *ugContext; - ugContext = eina_list_data_get(ContextList); - - IV_ASSERT(ugContext != NULL); - IV_ASSERT(w != NULL); - IV_ASSERT(h != NULL); - - *w = ugContext->win_w; - *h = ugContext->win_h; -} - -int gGetScreenWidth() -{ - AppData *ugContext; - ugContext = eina_list_data_get(ContextList); - - IV_ASSERT(ugContext != NULL); - - return ugContext->win_w; - -} - -int gGetScreenHeight() -{ - AppData *ugContext; - ugContext = eina_list_data_get(ContextList); - - IV_ASSERT(ugContext != NULL); - - return ugContext->win_h; - -} - -struct ui_gadget * -gGetUGHandle(void) -{ - AppData *ugContext; - ugContext = eina_list_data_get(ContextList); - - IV_ASSERT(ugContext != NULL); - - MSG_IMAGEVIEW_HIGH("Get ug handle = 0x%08x", ugContext->ug); - - return ugContext->ug; -} - -MediaSvcHandle * -gGetMediaSVCHandle(void) -{ - AppData *ugContext; - ugContext = eina_list_data_get(ContextList); - - IV_ASSERT(ugContext != NULL); - - return ugContext->media_svc_hadle; -} - -#define IVUG_NAVIFRAME_NAME EDJ_PATH"/ivug-naviframe.edj" -#define IVUG_TOOLLBAR_NAME EDJ_PATH"/ivug-toolbar.edj" -#define IVUG_BUTTON_NAME EDJ_PATH"/ivug-button.edj" -#define IVUG_SELECTION_INFO_NAME EDJ_PATH"/ivug-selectioninfo.edj" -#define IVUG_GENLIST EDJ_PATH"/ivug-genlist.edj" - -static char *edj[] = { - IVUG_NAVIFRAME_NAME, - IVUG_TOOLLBAR_NAME, - IVUG_BUTTON_NAME, - IVUG_SELECTION_INFO_NAME, - IVUG_GENLIST, - NULL, -}; - -bool -ivug_main_init(struct ui_gadget *ug) -{ - AppData *Context = malloc(sizeof(AppData)); - if(Context == NULL) - { - MSG_IVUG_ERROR("Cannot allock memory"); - return false; - } - - Context->ug = ug; - Context->parent_win = ug_get_window(); - -//get window width, height - int w, h; - - evas_object_geometry_get(Context->parent_win, NULL, NULL, &w, &h); - MSG_IMAGEVIEW_HIGH("Screen WH(%dx%d)", w, h); -// ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h); - Context->win_w = w; - Context->win_h = h; - - - int i = 0; - - Context->th = elm_theme_new(); - - IV_ASSERT(Context->th != NULL); - - elm_theme_ref_set(Context->th, NULL); - - for ( i = 0; edj[i] != NULL; i++) - { - elm_theme_extension_add(Context->th, edj[i]); - } - - ContextList = eina_list_prepend(ContextList, Context); - - MSG_IVUG_HIGH("Append to list. Context=0x%08x", Context); - -//media browser service. - int err = media_svc_connect(&(Context->media_svc_hadle)); - if (err == MB_SVC_ERROR_NONE) - { - bindtextdomain(IVUG_TEXT_DOMAIN, IVUG_LOCALEDIR); //bind text domain - return TRUE; - } - -/**** Error routine ****/ - MSG_SDATA_WARN("media service init error=%d", err); - - Context = eina_list_data_get(ContextList); - ContextList = eina_list_remove_list(ContextList, ContextList); - - if(Context->th) - { - int i = 0; - for ( i = 0; edj[i] != NULL; i++) - { - elm_theme_extension_del(Context->th, edj[i]); - } - - elm_theme_free(Context->th); - } - - MSG_IVUG_HIGH("Remove from list. Context=0x%08x, ug=0x%08x", Context, Context->ug); - - free(Context); - - return false; -} - - -bool -ivug_main_deinit(struct ui_gadget *ug) -{ - AppData *Context; - - Eina_List *l = NULL; - Eina_List *l_next = NULL; - - EINA_LIST_FOREACH_SAFE(ContextList, l, l_next, Context) - { - if(Context == NULL) - { - MSG_SDATA_ERROR("Context is NULL"); - return false; - } - if (Context->ug == ug) - { - ContextList = eina_list_remove_list(ContextList, l); - break; - } - } - - //media browser service. - int err = media_svc_disconnect(Context->media_svc_hadle); - if (err != MB_SVC_ERROR_NONE) - { - MSG_SDATA_WARN("media service finalize error=%d", err); - // go through - } - else - { - MSG_SDATA_HIGH("MInfo finalized"); - } - - if(Context->th) - { - int i = 0; - for ( i = 0; edj[i] != NULL; i++) - { - elm_theme_extension_del(Context->th, edj[i]); - } - elm_theme_free(Context->th); - } - - MSG_IVUG_HIGH("Remove from list. Context=0x%08x, ug=0x%08x", Context, Context->ug); - - free(Context); - - return true; -} - - - - diff --git a/main/src/control/ivug-main.h b/main/src/control/ivug-main.h deleted file mode 100755 index 86d9837..0000000 --- a/main/src/control/ivug-main.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * 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 __IVUG_MAIN_H__ -#define __IVUG_MAIN_H__ - -#include "ivug-common.h" -#include -#include - -bool -ivug_main_deinit(struct ui_gadget *ug); - -bool -ivug_main_init(struct ui_gadget *ug); - -Elm_Theme* -gGetSystemTheme(void); - -struct ui_gadget * -gGetUGHandle(void); - -MediaSvcHandle * -gGetMediaSVCHandle(void); - -int gGetScreenWidth(); -int gGetScreenHeight(); - - -#endif //__IVUG_MAIN_H__ diff --git a/main/src/control/ivug-parameter.c b/main/src/control/ivug-parameter.c index 5717181..5bc94c7 100755 --- a/main/src/control/ivug-parameter.c +++ b/main/src/control/ivug-parameter.c @@ -1,26 +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. - */ - - -#include +/* + * 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 "ivug-common.h" #include "ivug-debug.h" #include "ivug-parameter.h" +#include "ivug-file-info.h" + +#include "ivug-db.h" //bundle key #define IVUG_BUNDLE_KEY_VIEW_MODE "View Mode" @@ -30,6 +31,7 @@ #define IVUG_BUNDLE_KEY_VIEW_BY "View By" #define IVUG_BUNDLE_KEY_INDEX "Index" #define IVUG_BUNDLE_KEY_SORT_BY "Sort By" +#define IVUG_BUNDLE_KEY_FOOTSTEPS "Footsteps" #define IVUG_BUNDLE_KEY_MAX_LONGITUDE "LON_MAX" #define IVUG_BUNDLE_KEY_MIN_LONGITUDE "LON_MIN" @@ -38,11 +40,28 @@ #define IVUG_BUNDLE_KEY_SETAS_TYPE "Setas type" +#define IVUG_BUNDLE_KEY_RESOLUTION "Resolution" +#define IVUG_BUNDLE_KEY_FIXED_RATIO "Fixed ratio" + #define IVUG_BUNDLE_KEY_MEDIA_TYPE "Media type" +#define IVUG_BUNDLE_KEY_MSS_SERVER_ID "MSS_ServerID" +#define IVUG_BUNDLE_KEY_MSS_SORT_TYPE "MSS_Sort_type" + +#define IVUG_BUNDLE_KEY_STANDALONE "Standalone" + +#define IVUG_BUNDLE_KEY_CONTACT_ID "Contact id" + //default values #define IVUG_DEFAULT_MODE IVUG_MODE_SINGLE -#define IVUG_DEFAULT_INDEX (-1) +#define IVUG_DEFAULT_INDEX (1) // First item + +static inline +void _ivug_free(char **val) +{ + free(*val); + *val = NULL; +} static ivug_mode _get_view_mode(ivug_parameter* data, const char* val) @@ -56,6 +75,8 @@ _get_view_mode(ivug_parameter* data, const char* val) #define IVUG_BUNDLE_VALUE_VIEW_MODE_CAMERA "CAMERA" #define IVUG_BUNDLE_VALUE_VIEW_MODE_DISPLAY "DISPLAY" #define IVUG_BUNDLE_VALUE_VIEW_MODE_SETAS "SETAS" +#define IVUG_BUNDLE_VALUE_VIEW_MODE_SLIDESHOW "SLIDESHOW" + int len = strlen(val); if (strncmp(val, IVUG_BUNDLE_VALUE_VIEW_MODE_NORMAL, len) == 0 @@ -91,6 +112,14 @@ _get_view_mode(ivug_parameter* data, const char* val) data->view_by = IVUG_VIEW_BY_FILE; return IVUG_MODE_SETAS; } + else if(strncmp(val, IVUG_BUNDLE_VALUE_VIEW_MODE_SLIDESHOW, len) == 0) + { + if(data->view_by != IVUG_VIEW_BY_ALL) + { + data->view_by = IVUG_VIEW_BY_FOLDER; + } + return IVUG_MODE_SLIDESHOW; + } MSG_IVUG_ERROR("Invalid mode : %s", val); return IVUG_MODE_INVAILD; @@ -102,8 +131,10 @@ _get_view_by(const char* val) { //bundle value #define IVUG_BUNDLE_VALUE_VIEW_BY_ALL "All" +#define IVUG_BUNDLE_VALUE_VIEW_BY_FAVORITES "Favorites" #define IVUG_BUNDLE_VALUE_VIEW_BY_FLODER "By Folder" #define IVUG_BUNDLE_VALUE_VIEW_BY_PLACES "Places" +#define IVUG_BUNDLE_VALUE_VIEW_BY_CONTACT_ID "Contact id" IV_ASSERT(val != NULL); @@ -121,6 +152,10 @@ _get_view_by(const char* val) { return IVUG_VIEW_BY_PLACES; } + else if (strncmp(val, IVUG_BUNDLE_VALUE_VIEW_BY_CONTACT_ID, len) == 0) + { + return IVUG_VIEW_BY_CONTACT_ID; + } MSG_IVUG_ERROR("Invalid view by : %s", val); @@ -135,6 +170,10 @@ _get_setas_type(const char* val) IV_ASSERT(val != NULL); #define IVUG_BUNDLE_VALUE_SETAS_UG_WALLPAPER "Wallpaper" +#define IVUG_BUNDLE_VALUE_SETAS_UG_CALLERID "CallerID" +#define IVUG_BUNDLE_VALUE_SETAS_UG_VIDEO_CALLEID "VideoCallID" +#define IVUG_BUNDLE_VALUE_SETAS_UG_CROP "Crop" +#define IVUG_BUNDLE_VALUE_SETAS_UG_WALLPAPER_ONLY "Wallpaper only" int len = strlen(val); @@ -142,6 +181,22 @@ _get_setas_type(const char* val) { return IVUG_SET_AS_UG_TYPE_WALLPAPER; } + else if (strncmp(val, IVUG_BUNDLE_VALUE_SETAS_UG_WALLPAPER_ONLY, len) == 0 ) + { + return IVUG_SET_AS_UG_TYPE_WALLPAPER_ONLY; + } + else if (strncmp(val, IVUG_BUNDLE_VALUE_SETAS_UG_CALLERID, len) == 0) + { + return IVUG_SET_AS_UG_TYPE_CALLER_ID; + } + else if (strncmp(val, IVUG_BUNDLE_VALUE_SETAS_UG_VIDEO_CALLEID, len) == 0) + { + return IVUG_SET_AS_UG_TYPE_VIDEO_CALL_ID; + } + else if (strncmp(val, IVUG_BUNDLE_VALUE_SETAS_UG_CROP, len) == 0) + { + return IVUG_SET_AS_UG_TYPE_CROP; + } MSG_IVUG_ERROR("Invalid setas ug type : %s", val); return IVUG_SET_AS_UG_TYPE_INVALID; @@ -174,38 +229,54 @@ _get_media_type(const char* val) return IVUG_MEDIA_TYPE_MAX; } +static bool _data_print(service_h service, const char *key, void *user_data) +{ + char *value; + + service_get_extra_data(service, key, &value); + MSG_IVUG_HIGH(" %s : %s", key, value); -static void -_bundle_print(const char *key, const char *val, void *data) + free(value); + + return true; +} + +static void _print_service_data(service_h service) { - MSG_IVUG_HIGH(" %s:%s",key, val); + int ret = service_foreach_extra_data(service, _data_print, NULL); + + if(SERVICE_ERROR_NONE != ret) + { + MSG_IVUG_ERROR("service_foreach_extra_data ERROR"); + } } //parsing bundle ivug_parameter* -ivug_param_create_from_bundle(bundle* b) +ivug_param_create_from_bundle(service_h service) { - if (b == NULL) + if (service == NULL) { MSG_IVUG_WARN("bundle value is NULL"); return NULL; } - int nbundle_cnt = bundle_get_count(b); - - if ( nbundle_cnt == 0 ) - { - MSG_IVUG_WARN("bundle count is %d", nbundle_cnt); - return NULL; - } - //print key and value. MSG_IVUG_HIGH("**********************************"); - MSG_IVUG_HIGH(" Bundle Count = %d", nbundle_cnt); - bundle_iterate(b, _bundle_print, NULL); + _print_service_data(service); MSG_IVUG_HIGH("**********************************"); + char *path = NULL; + service_get_uri(service, &path); // app gadget + if(path) + { + MSG_IMAGEVIEW_ERROR("App gadget launched %s", path); + service_add_extra_data (service, "Path", path); + service_add_extra_data (service, "View Mode", "SINGLE"); + _ivug_free(&path); + } + //parsing param ivug_parameter* data = (ivug_parameter*)calloc(1, sizeof(ivug_parameter)); @@ -215,15 +286,31 @@ ivug_param_create_from_bundle(bundle* b) return NULL; } +// appsvc + char* standalone = NULL; + + service_get_extra_data (service, IVUG_BUNDLE_KEY_STANDALONE, &standalone); + if (standalone != NULL) + { + data->bStandalone = true; + _ivug_free(&standalone); + } + else + { + data->bStandalone = false; + } + // View By - const char* szViewBy = NULL; + char* szViewBy = NULL; - szViewBy = bundle_get_val(b, IVUG_BUNDLE_KEY_VIEW_BY); + service_get_extra_data (service, IVUG_BUNDLE_KEY_VIEW_BY, &szViewBy); if (szViewBy != NULL) { MSG_IVUG_HIGH("View By = %s", szViewBy); data->view_by = _get_view_by(szViewBy); + + _ivug_free(&szViewBy); } else { @@ -232,13 +319,14 @@ ivug_param_create_from_bundle(bundle* b) } //parse image index at album - const char* val = NULL; + char* val = NULL; - val = bundle_get_val(b, IVUG_BUNDLE_KEY_INDEX); + service_get_extra_data (service, IVUG_BUNDLE_KEY_INDEX, &val); if(val) { - data->start_index = atoi(val); + data->start_index = ivug_atoi(val); MSG_IVUG_HIGH("Slide Index = %d", data->start_index); + _ivug_free(&val); } else { @@ -247,14 +335,14 @@ ivug_param_create_from_bundle(bundle* b) } //parse mode - const char* szMode = NULL; - - szMode = bundle_get_val(b, IVUG_BUNDLE_KEY_VIEW_MODE); + char* szMode = NULL; + service_get_extra_data (service, IVUG_BUNDLE_KEY_VIEW_MODE, &szMode); if (szMode != NULL) { data->mode = _get_view_mode(data, szMode); MSG_IVUG_HIGH("View mode is %s(%d)", szMode, data->mode); + _ivug_free(&szMode); } else { @@ -263,19 +351,25 @@ ivug_param_create_from_bundle(bundle* b) } //parse path - const char* szFilePath = NULL; - - szFilePath = bundle_get_val(b, IVUG_BUNDLE_KEY_PATH); + char* szFilePath = NULL; + service_get_extra_data (service, IVUG_BUNDLE_KEY_PATH, &szFilePath); if ( szFilePath != NULL ) { data->filepath = strdup(szFilePath); MSG_IVUG_HIGH("Current File = %s", data->filepath); + _ivug_free(&szFilePath); } + else + { + MSG_IVUG_ERROR("File path is NULL"); - //parse album id -album id is cluster id of media service - val = bundle_get_val(b, IVUG_BUNDLE_KEY_ALBUM_IDX); + ivug_param_delete(data); + return NULL; + } + //parse album id -album id is cluster id of media service + service_get_extra_data (service, IVUG_BUNDLE_KEY_ALBUM_IDX, &val); if(val && data->view_by != IVUG_VIEW_BY_ALL) { data->album_id = uuid_getuuid(val); @@ -286,6 +380,9 @@ ivug_param_create_from_bundle(bundle* b) data->album_id = INVALID_UUID; MSG_IVUG_WARN("Album index is NULL"); } + if(val) + _ivug_free(&val); + if (data->mode == IVUG_MODE_CAMERA) { /* @@ -296,19 +393,28 @@ ivug_param_create_from_bundle(bundle* b) ********************************** */ // Get album id from file path. - UUID cluster_id = ivug_get_album_id_from_filepath(data->filepath); + media_handle m_handle = ivug_db_get_folder_handle(ecore_file_dir_get(data->filepath)); + if(m_handle == NULL) + { + MSG_IVUG_FATAL("View by Folder. but media handle is NULL" ); + ivug_param_delete(data); + return NULL; + } + + data->album_id = ivug_db_get_folder_id(m_handle); - data->album_id = uuid_assign(cluster_id); + ivug_db_destroy_folder_handle(m_handle); MSG_IVUG_HIGH("Get Album ID(%s) from file %s", uuid_getchar(data->album_id), data->filepath); } // TODO : Check parameter integrity - val = bundle_get_val(b, IVUG_BUNDLE_KEY_MEDIA_TYPE); + service_get_extra_data (service, IVUG_BUNDLE_KEY_MEDIA_TYPE, &val); if(val != NULL) { data->media_type = _get_media_type(val); MSG_IVUG_HIGH("Media Type=%s(%d)", val, data->media_type); + _ivug_free(&val); } else { @@ -318,59 +424,114 @@ ivug_param_create_from_bundle(bundle* b) long long int m = 0; long int e = 0; - val = bundle_get_val(b, IVUG_BUNDLE_KEY_MAX_LONGITUDE); + service_get_extra_data (service, IVUG_BUNDLE_KEY_MAX_LONGITUDE, &val); if(val != NULL) { eina_convert_atod(val, strlen(val), &m, &e); data->max_longitude = ldexp((double)m, e); MSG_IVUG_HIGH("Max Longitude =%f", data->max_longitude); + _ivug_free(&val); } else { MSG_IVUG_MED("Max Longitude is not specified."); } - val = bundle_get_val(b, IVUG_BUNDLE_KEY_MIN_LONGITUDE); + service_get_extra_data (service, IVUG_BUNDLE_KEY_MIN_LONGITUDE, &val); if(val != NULL) { eina_convert_atod(val, strlen(val), &m, &e); data->min_longitude = ldexp((double)m, e); MSG_IVUG_HIGH("Min Longitude =%f", data->min_longitude); + _ivug_free(&val); } else { MSG_IVUG_MED("Min Longitude is not specified."); } - val = bundle_get_val(b, IVUG_BUNDLE_KEY_MAX_LATITUDE); + service_get_extra_data (service, IVUG_BUNDLE_KEY_MAX_LATITUDE, &val); if(val != NULL) { eina_convert_atod(val, strlen(val), &m, &e); data->max_latitude = ldexp((double)m, e); MSG_IVUG_HIGH("Max Latitude =%f", data->max_latitude); + _ivug_free(&val); } else { MSG_IVUG_MED("Max Latitude is not specified."); } - val = bundle_get_val(b, IVUG_BUNDLE_KEY_MIN_LATITUDE); + service_get_extra_data (service, IVUG_BUNDLE_KEY_MIN_LATITUDE, &val); if(val != NULL) { eina_convert_atod(val, strlen(val), &m, &e); data->min_latitude = ldexp((double)m, e); MSG_IVUG_HIGH("Min Latitude =%f", data->min_latitude); + _ivug_free(&val); } else { MSG_IVUG_MED("Min Latitude is not specified."); } - val = bundle_get_val(b, IVUG_BUNDLE_KEY_SETAS_TYPE); + service_get_extra_data (service, IVUG_BUNDLE_KEY_SETAS_TYPE, &val); if (val) { MSG_IVUG_HIGH("SetAs UG Type=%s", val); data->setas_type = _get_setas_type(val); + + char* resolution = NULL; + + service_get_extra_data (service, IVUG_BUNDLE_KEY_RESOLUTION, &resolution); + if(resolution) + { + sscanf(resolution, "%5dx%5d", &(data->width), &(data->height)); + MSG_IVUG_HIGH("Rectangle width = %d, height = %d", data->width, data->height); + if(data->width == 0 || data->height == 0) + { + MSG_IVUG_ERROR("Resolution is invalid"); + _ivug_free(&resolution); + _ivug_free(&val); + ivug_param_delete(data); + return NULL; + } + } + else + { + /* TODO : remove default value, width & height needed */ + data->width = 100; + data->height = 100; + MSG_IVUG_HIGH("Rectangle ratio is not set. Set as default : %dx%d", data->width, data->height); + } + + data->bRatioFix = false; + char* bRatioFix = NULL; + + service_get_extra_data (service, IVUG_BUNDLE_KEY_FIXED_RATIO, &bRatioFix); + if(bRatioFix) + { + MSG_IVUG_HIGH("Fixed ratio=%s", bRatioFix); + if(strcmp(bRatioFix, "TRUE") == 0) + { + data->bRatioFix = true; + } + _ivug_free(&bRatioFix); + } + _ivug_free(&val); + } + + data->footsteps = false; /* default */ + service_get_extra_data (service, IVUG_BUNDLE_KEY_FOOTSTEPS, &val); + if (val) + { + MSG_IVUG_HIGH("Footsteps=%s", val); + if(strcmp(val, "TRUE") == 0) + { + data->footsteps = true; + } + _ivug_free(&val); } return data; diff --git a/main/src/control/ivug-parameter.h b/main/src/control/ivug-parameter.h index 1de14c4..7a97336 100755 --- a/main/src/control/ivug-parameter.h +++ b/main/src/control/ivug-parameter.h @@ -1,94 +1,85 @@ -/* - * 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 __IVUG_PARAMETER_H__ #define __IVUG_PARAMETER_H__ -#ifdef __cplusplus -extern "C" { -#endif - #include -#include +#include +#include "ivug-datatypes.h" typedef enum { IVUG_MODE_INVAILD = 0x00, - IVUG_MODE_NORMAL, // normal + IVUG_MODE_NORMAL, IVUG_MODE_SINGLE, // just show one slide IVUG_MODE_DISPLAY, // from "take a photo" in messenger IVUG_MODE_FILE, // file viewer(can flick) IVUG_MODE_CAMERA, // camera(can flick) IVUG_MODE_SETAS, // SetAs in setting menu. + IVUG_MODE_SLIDESHOW, // Slideshow } ivug_mode; -typedef enum { - IVUG_VIEW_BY_INVAILD = 0x00, - IVUG_VIEW_BY_FILE, - IVUG_VIEW_BY_ALL, - IVUG_VIEW_BY_FOLDER, - IVUG_VIEW_BY_PLACES, -} ivug_view_by; - //set as ug typedef enum { IVUG_SET_AS_UG_TYPE_INVALID = 0x00, IVUG_SET_AS_UG_TYPE_WALLPAPER, + IVUG_SET_AS_UG_TYPE_CALLER_ID, + IVUG_SET_AS_UG_TYPE_VIDEO_CALL_ID, + IVUG_SET_AS_UG_TYPE_CROP, // For OSP + IVUG_SET_AS_UG_TYPE_WALLPAPER_ONLY, IVUG_SET_AS_UG_TYPE_MAX, } ivug_setas_type; -typedef enum { - IVUG_MEDIA_TYPE_ALL = 0x00, //default value - IVUG_MEDIA_TYPE_IMAGE, - IVUG_MEDIA_TYPE_VIDEO, - IVUG_MEDIA_TYPE_MAX, -} ivug_media_type; - -typedef enum { - IVUG_MEDIA_SORT_NONE = 0x00, /**< No sort */ - IVUG_MEDIA_ASC_BY_NAME, /**< Ascending sort as file name */ - IVUG_MEDIA_DESC_BY_NAME, /**< Descending sort as file name */ - IVUG_MEDIA_ASC_BY_DATE, /**< Ascending sort as created date */ - IVUG_MEDIA_DESC_BY_DATE, /**< Descending sort as created date */ -} ivug_sort_type; - typedef struct { ivug_mode mode; + ivug_setas_type setas_type; // Only needed when mode is IVUG_MODE_SETAS + + bool bStandalone; // launched by appsvc + + ivug_view_by view_by; char* filepath; UUID album_id; //cluster id of media service - ivug_view_by view_by; - ivug_setas_type setas_type; ivug_media_type media_type; ivug_sort_type sort_type; // TODO : extract from here. sort type can be used in case of default /* for places view */ + bool footsteps; double max_longitude; double min_longitude; double max_latitude; double min_latitude; + /* for set as view crop box*/ + unsigned int width; + unsigned int height; + bool bRatioFix; + int start_index; } ivug_parameter; +#ifdef __cplusplus +extern "C" { +#endif + ivug_parameter* -ivug_param_create_from_bundle(bundle* b); +ivug_param_create_from_bundle(service_h service); void ivug_param_delete(ivug_parameter* data); diff --git a/main/src/control/ivug-uuid.c b/main/src/control/ivug-uuid.c deleted file mode 100755 index b2c8eeb..0000000 --- a/main/src/control/ivug-uuid.c +++ /dev/null @@ -1,94 +0,0 @@ -/* - * 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 "ivug-uuid.h" - -UUID uuid_assign(UUID id) -{ -#ifdef _USE_MEDIAINFO_STRINGID_ - if ( id == NULL ) - return NULL; - - return strdup(id); -#else - return id; -#endif -} - - -void uuid_free(UUID id) -{ -#ifdef _USE_MEDIAINFO_STRINGID_ - if ( id != NULL ) - free((void *)id); -#endif -} - - -int uuid_compare(UUID id1, UUID id2) -{ -#ifdef _USE_MEDIAINFO_STRINGID_ - return strcmp(id1, id2); -#else - return id1 - id2; -#endif -} - -const char *uuid_getchar(UUID id) -{ -#ifdef _USE_MEDIAINFO_STRINGID_ - if ( id == NULL ) - { - return "NULL"; - } - - return id; -#else - { - static char buffer[255]; - - sprintf(buffer, "%d", id); - - return buffer; - } -#endif - -} - - -UUID uuid_getuuid(const char *szID) -{ - if ( szID == NULL ) - { - return INVALID_UUID; - } - -#ifdef _USE_MEDIAINFO_STRINGID_ - return strdup(szID); -#else - return atoi(szID); -#endif - -} - -bool uuid_is_valid(UUID id) -{ - return (id != INVALID_UUID) ? true : false; -} - - - diff --git a/main/src/control/ivug-uuid.h b/main/src/control/ivug-uuid.h deleted file mode 100755 index e90bf6b..0000000 --- a/main/src/control/ivug-uuid.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * 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 __IVUG_UUID_H__ -#define __IVUG_UUID_H__ - -#include "ivug-common.h" -#include - -#ifdef _USE_MEDIAINFO_STRINGID_ - #define INVALID_UUID ((UUID)NULL) -#else - #define INVALID_UUID ((UUID)-1) -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -UUID uuid_assign(UUID id); - -void uuid_free(UUID id); - -int uuid_compare(UUID id1, UUID id2); - -const char *uuid_getchar(UUID id); - -UUID uuid_getuuid(const char *szID); - -bool uuid_is_valid(UUID id); - - -#ifdef __cplusplus -} -#endif - -#endif // __IVUG_UUID_H__ - diff --git a/main/src/data/ivug-data-filter.c b/main/src/data/ivug-data-filter.c deleted file mode 100755 index 754a723..0000000 --- a/main/src/data/ivug-data-filter.c +++ /dev/null @@ -1,101 +0,0 @@ -/* - * 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 "ivug-common.h" -#include "ivug-data-filter.h" - -List_Filter *ivug_data_filter_create(const ivug_parameter *param) -{ - IV_ASSERT(param != NULL); - - List_Filter *filter = calloc(1, sizeof(List_Filter)); - - IV_ASSERT(filter != NULL); - - filter->view_by = param->view_by; - filter->media_type = param->media_type; - filter->sort_type = param->sort_type; - - MSG_SDATA_HIGH("param->view_by is %d", param->view_by); - switch(param->view_by) - { - case IVUG_VIEW_BY_PLACES: - filter->place.max_longitude = param->max_longitude; - filter->place.min_longitude = param->min_longitude; - filter->place.max_latitude = param->max_latitude; - filter->place.min_latitude = param->min_latitude; - break; - case IVUG_VIEW_BY_FILE: - filter->file_path = strdup(param->filepath); - break; - case IVUG_VIEW_BY_ALL: - filter->album_id = uuid_assign(param->album_id); - break; - - case IVUG_VIEW_BY_FOLDER: - filter->album_id = uuid_assign(param->album_id); - break; - - case IVUG_VIEW_BY_INVAILD: - default: - MSG_SDATA_WARN("Invalid ViewBy : %d", param->view_by); - break; - - } - - return filter; - -} - -void ivug_data_filter_delete(List_Filter *filter) -{ - IV_ASSERT(filter != NULL); - - MSG_SDATA_HIGH("Removing filter. ViewBy=%d", filter->view_by); - - switch(filter->view_by) - { - case IVUG_VIEW_BY_PLACES: - break; - - case IVUG_VIEW_BY_FILE: - if ( filter->file_path ) - { - free(filter->file_path); - } - break; - case IVUG_VIEW_BY_ALL: - uuid_free(filter->album_id); - break; - - case IVUG_VIEW_BY_FOLDER: - uuid_free(filter->album_id); - - break; - - case IVUG_VIEW_BY_INVAILD: - default: - MSG_SDATA_WARN("Invalid ViewBy : %d", filter->view_by); - break; - } - - - free(filter); -} - - - diff --git a/main/src/data/ivug-data-filter.h b/main/src/data/ivug-data-filter.h deleted file mode 100755 index e4969de..0000000 --- a/main/src/data/ivug-data-filter.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * 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 __IVUG_DATA_FILTER_H__ -#define __IVUG_DATA_FILTER_H__ - -#include "ivug-parameter.h" - -typedef struct { - ivug_view_by view_by; - ivug_media_type media_type; - ivug_sort_type sort_type; - - union { /* CAUTION : Union type. check view_by variable before free()*/ - char *file_path; - struct { - double max_longitude; - double min_longitude; - double max_latitude; - double min_latitude; - } place; - - UUID album_id; // Cluster id - }; - -} List_Filter; - - -#ifdef __cplusplus -extern "C" { -#endif - -List_Filter *ivug_data_filter_create(const ivug_parameter *param); -void ivug_data_filter_delete(List_Filter *filter); - -#ifdef __cplusplus -} -#endif - - -#endif // __IVUG_DATA_FILTER_H__ - diff --git a/main/src/data/ivug-data-list.c b/main/src/data/ivug-data-list.c deleted file mode 100755 index 697b158..0000000 --- a/main/src/data/ivug-data-list.c +++ /dev/null @@ -1,282 +0,0 @@ -/* - * 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 "ivug-main.h" -#include "ivug-common.h" - -#include "ivug-data-priv.h" - -// List -static int -_ivug_list_count_cb(Mitem* item, void* user_data ) -{ - int *count = (int *)user_data; - - (*count)++; - - return 0; -} - -//Eina List Function. -static int -_ivug_list_mitem_cb(Mitem* item, void* user_data ) -{ - IV_ASSERT(user_data != NULL); - Eina_List **list = (Eina_List **)user_data; - - *list = eina_list_prepend(*list, item); - - return 0; -} - - -Eina_List * -ivug_list_load_items(List_Filter *filter, int stp, int endp) -{ - IV_ASSERT(filter != NULL); - - Eina_List *item_list = NULL; - - if (filter->view_by == IVUG_VIEW_BY_FILE) - { - Eina_List *list = NULL; - Media_Data *mData = ivug_alloc_mediadata_from_filepath(filter->file_path); - - list = eina_list_append(list, mData); - return list; - } - -// TODO : Check idx validation. - minfo_item_filter item_filter = {0, }; //create filter - - switch(filter->media_type) - { - case IVUG_MEDIA_TYPE_IMAGE: - item_filter.file_type = MINFO_ITEM_IMAGE; - break; - case IVUG_MEDIA_TYPE_VIDEO: - item_filter.file_type = MINFO_ITEM_VIDEO; - break; - case IVUG_MEDIA_TYPE_ALL: - item_filter.file_type = MINFO_ITEM_IMAGE | MINFO_ITEM_VIDEO; - break; - default: - MSG_SITEM_FATAL("Invalid media type : %d", filter->media_type); - return NULL; - break; - } - - item_filter.favorite = MINFO_MEDIA_FAV_ALL; - - if(filter->view_by == IVUG_VIEW_BY_PLACES) - { - item_filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_ASC; - } - else - { - item_filter.sort_type = MINFO_MEDIA_SORT_BY_DATE_DESC; //MINFO_MEDIA_SORT_BY_NAME_ASC; //minfo_media_sort_type - } - - item_filter.start_pos = stp; - item_filter.end_pos = endp; - item_filter.with_meta = false; - - int ret = MB_SVC_ERROR_NONE; - - switch(filter->view_by) - { - case IVUG_VIEW_BY_FOLDER: - ret = minfo_get_item_list(gGetMediaSVCHandle(), filter->album_id, item_filter, _ivug_list_mitem_cb, &item_list); - break; - - case IVUG_VIEW_BY_ALL: - ret = minfo_get_all_item_list(gGetMediaSVCHandle(), MINFO_CLUSTER_TYPE_LOCAL_ALL, item_filter, _ivug_list_mitem_cb, &item_list); - break; - - case IVUG_VIEW_BY_PLACES: - ret = minfo_get_geo_item_list(gGetMediaSVCHandle(), INVALID_UUID, MINFO_CLUSTER_TYPE_LOCAL_ALL, item_filter, - filter->place.min_longitude, filter->place.max_longitude, - filter->place.min_latitude, filter->place.max_latitude, - _ivug_list_mitem_cb, &item_list); // NULL means query all folder - break; - default: - MSG_SDATA_FATAL("Invalid Mode=%d", filter->view_by); - return NULL; - } - - if ( ret != MB_SVC_ERROR_NONE ) - { - MSG_SDATA_ERROR("[%s] Error=%d VieBy=%d", __func__, ret, filter->view_by); - return NULL; - } - -// Creating media_list. - Eina_List *slide_list = NULL; - - Eina_List *item; - Mitem* mitem; - - Media_Data *mdata = NULL; - - EINA_LIST_FOREACH(item_list, item, mitem) - { - mdata = ivug_alloc_mediadata_from_mitem(mitem); - - IV_ASSERT(mdata != NULL); - - MSG_SDATA_LOW("Add Mdata. Mdata=0x%08x %s", mdata, mdata->filepath); - slide_list = eina_list_prepend(slide_list, mdata); - } - - EINA_LIST_FREE(item_list, mitem) - { - minfo_destroy_mtype_item(mitem); - } - - eina_list_free(item_list); - - MSG_SDATA_HIGH("Item loaded(%d~%d)", stp, endp); - - return slide_list; -} - - -int -ivug_list_get_item_cnt(List_Filter *filter) -{ - IV_ASSERT(filter != NULL); - -// TODO : Check idx validation. - minfo_item_filter item_filter = {0, }; //create filter - - switch(filter->media_type) - { - case IVUG_MEDIA_TYPE_IMAGE: - item_filter.file_type = MINFO_ITEM_IMAGE; - break; - case IVUG_MEDIA_TYPE_VIDEO: - item_filter.file_type = MINFO_ITEM_VIDEO; - break; - case IVUG_MEDIA_TYPE_ALL: - item_filter.file_type = MINFO_ITEM_IMAGE | MINFO_ITEM_VIDEO; - break; - default: - MSG_SITEM_FATAL("Invalid media type : %d", filter->media_type); - return -1; - break; - } - - item_filter.favorite = MINFO_MEDIA_FAV_ALL; - - if(filter->view_by == IVUG_VIEW_BY_PLACES) - { - item_filter.sort_type = MINFO_MEDIA_SORT_BY_NAME_ASC; - } - else - { - item_filter.sort_type = MINFO_MEDIA_SORT_BY_DATE_DESC; //MINFO_MEDIA_SORT_BY_NAME_ASC; //minfo_media_sort_type - } - - item_filter.start_pos = -1; - item_filter.end_pos = -1; - item_filter.with_meta = false; - - int ret = MB_SVC_ERROR_NONE; - - int count = 0; - - switch(filter->view_by) - { - case IVUG_VIEW_BY_ALL : - ret = minfo_get_item_cnt(gGetMediaSVCHandle(), filter->album_id, item_filter, &count); - if(ret < 0) - { - MSG_SDATA_ERROR("Error! AlbumUUID=%s Ret=%d", uuid_getchar(filter->album_id), ret ); - return -1; - } - - MSG_SDATA_HIGH("IVUG_VIEW_BY_ALL. MediaType=%d Count=%d", filter->media_type, count); - return count; - break; - -/* minfo_get_geo_item_list doesn't provide minfo get count api */ -/* So get total count menually by list callback function */ - case IVUG_VIEW_BY_PLACES: - ret = minfo_get_geo_item_list(gGetMediaSVCHandle(), INVALID_UUID, MINFO_CLUSTER_TYPE_LOCAL_ALL, item_filter, - filter->place.min_longitude, filter->place.max_longitude, - filter->place.min_latitude, filter->place.max_latitude, - _ivug_list_count_cb, &count); // NULL means query all folder - - if (ret < 0) - { - MSG_SDATA_ERROR("minfo_get_geo_item_list ERROR"); - return -1; - } - - MSG_SDATA_HIGH("IVUG_VIEW_BY_PLACES. Count=%d", count); - return count; - - break; - case IVUG_VIEW_BY_FOLDER: - ret = minfo_get_item_cnt(gGetMediaSVCHandle(), filter->album_id, item_filter, &count); - if(ret < 0) - { - MSG_SDATA_ERROR("Error! AlbumUUID=%s Ret=%d", uuid_getchar(filter->album_id), ret ); - return -1; - } - MSG_SDATA_HIGH("IVUG_VIEW_BY_FOLDER. Count=%d", count); - return count; - - break; - - case IVUG_VIEW_BY_FILE: - return 1; // item count is always 1 when by file - break; - - default: - MSG_SDATA_ERROR("Unhandled view_by : %d", filter->view_by); - break; - } - - return -1; -} - - -void ivug_list_delete_items(Eina_List *items) -{ - Media_Data* mdata; - - if ( items == NULL ) - { - MSG_SDATA_HIGH("Item list is NULL."); - return; - } - - MSG_SDATA_HIGH("Removing items"); - - EINA_LIST_FREE(items, mdata) - { - if(mdata == NULL) - { - MSG_IVUG_ERROR("media list is NULL, can not free all media list"); - } - else - { - ivug_free_mediadata(mdata); - } - } -} diff --git a/main/src/data/ivug-data-list.h b/main/src/data/ivug-data-list.h deleted file mode 100755 index 59920b7..0000000 --- a/main/src/data/ivug-data-list.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * 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 __IVUG_DATA_LIST_H__ -#define __IVUG_DATA_LIST_H__ - -#include "ivug-data-filter.h" - -#ifdef __cplusplus -extern "C" { -#endif - -Eina_List *ivug_list_load_items(List_Filter *filter, int stp, int endp); - -int ivug_list_get_item_cnt(List_Filter *filter); - -void ivug_list_delete_items(Eina_List *items); - - -#ifdef __cplusplus -} -#endif - -#endif - - diff --git a/main/src/data/ivug-data-priv.h b/main/src/data/ivug-data-priv.h deleted file mode 100755 index eb10f3d..0000000 --- a/main/src/data/ivug-data-priv.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * 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 __IVUG_DATA_PRIV_H -#define __IVUG_DATA_PRIV_H - -#include "ivug-data.h" -#include "ivug-parameter.h" -#include "ivug-data-filter.h" - -typedef struct { - Eina_List *header; - - /* window loading setting */ - int window_size; - int window_reload_offset; - int window_count; - - int left_end; - int right_end; - -/*save bundle param*/ - List_Filter *filter; - - Eina_List *ss_shuffle_header; - Media_Item *ss_shuffle_current; - Media_Item *ss_shuffle_end; - -} _Media_List; - - -#ifdef __cplusplus -extern "C" { -#endif - -Eina_List * -_ivug_data_create_window_size_list(Media_List *mList, int start_index, int total_count); - - - -#ifdef __cplusplus -} -#endif - - -#endif // __IVUG_DATA_PRIV_H - diff --git a/main/src/data/ivug-data-shuffle.c b/main/src/data/ivug-data-shuffle.c deleted file mode 100755 index fa4d07d..0000000 --- a/main/src/data/ivug-data-shuffle.c +++ /dev/null @@ -1,238 +0,0 @@ -/* - * 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 "ivug-common.h" -#include "ivug-data.h" -#include "ivug-data-priv.h" -#include "ivug-data-shuffle.h" - -static void _swap_eina_list(Eina_List* list, int i, int j) -{ - Eina_List *first; - Eina_List *second; - int temp; - - if ( i == j ) return ; - - first = eina_list_nth_list(list, i); - second = eina_list_nth_list(list, j); - - temp = (int)(first->data); - first->data = second->data; - second->data = (void *)temp; -} - -void _shuffle_eina_list(Eina_List *list, int count) -{ - int i; - int r; - - IV_ASSERT(list != NULL); - - srand((unsigned)time(NULL)); - - for(i=0; iss_shuffle_header, (void * )cur_index); - if(item == NULL) - { - MSG_SDATA_ERROR("Can't find cur index item %d", cur_index); - item = _mList->ss_shuffle_header; - } - _mList->ss_shuffle_end = item; - _mList->ss_shuffle_current = eina_list_next(item); - - if( _mList->ss_shuffle_current == NULL) - { - _mList->ss_shuffle_current = _mList->ss_shuffle_header; /* back to first */ - } - - return true; -} - -void ivug_data_deinit_shuffle_slide_show(Media_List *mList, int total_count) -{ - IV_ASSERT(mList != NULL); - - _Media_List *_mList = (_Media_List *)mList; - - _mList->ss_shuffle_end = NULL; - _mList->ss_shuffle_current = NULL; - - _shuffle_eina_list(_mList->ss_shuffle_header, total_count); -} - -void ivug_data_create_shuffled_list(Media_List *mList, int total_count) -{ - _Media_List *_mList = (_Media_List *)mList; - - _mList->ss_shuffle_header = _create_eina_list(total_count); - _shuffle_eina_list(_mList->ss_shuffle_header, total_count); // Shuffle - -} - -int ivug_data_get_next_slide_show_index(Media_List *mList, slide_show_mode ss_mode, int next_index, int total_count, bool increase_flag) -{ - IV_ASSERT(mList != NULL); - _Media_List *_mList = (_Media_List *)mList; - int index = -1; - Eina_List *item = NULL; - Eina_List *list = NULL; - - if(ss_mode & SLIDE_SHOW_MODE_SHUFFLE) - { - item = _mList->ss_shuffle_current; - - list = eina_list_next(item); - if ( list == NULL) - { - list = _mList->ss_shuffle_header; /* back to start */ - } - if(list == _mList->ss_shuffle_end && !(ss_mode & SLIDE_SHOW_MODE_REPEAT)) - { - if(increase_flag == true) - { - _mList->ss_shuffle_current = NULL; - } - return -1; - } - if(increase_flag == true) - { - _mList->ss_shuffle_current = list; - } - index = (int)eina_list_data_get(list); - } - else - { - index = next_index + 1; - if(index > total_count && (ss_mode & SLIDE_SHOW_MODE_REPEAT) ) - { - index = 1; /* back to start */ - } - } - return index; -} - -Media_Item * ivug_data_get_current_slide_show_item(Media_List *mList, slide_show_mode ss_mode, int cur_index, int *next_index, int total_count) -{ - IV_ASSERT(mList != NULL); - - Eina_List *item = NULL; - int index; - Media_Item *slide_show_item = NULL; - _Media_List *_mList = (_Media_List *)mList; - - if(ss_mode & SLIDE_SHOW_MODE_SHUFFLE) - { - item = _mList->ss_shuffle_current; - - index = (int)eina_list_data_get(item); - } - else - { - index = cur_index + 1; - if(index > total_count && (ss_mode & SLIDE_SHOW_MODE_REPEAT) ) - { - index = 1; /* back to start */ - } - } - MSG_SDATA_HIGH("*******current shuffle index is %d", index); - - slide_show_item = _ivug_data_create_window_size_list(mList, index, total_count); - if(slide_show_item == NULL) - { - MSG_SDATA_HIGH("*******current shuffle item is NULL"); - return NULL; - } - *next_index = index; - - return slide_show_item; -} - -Media_Item * ivug_data_set_next_slide_show_item(Media_List *mList, slide_show_mode ss_mode, int *next_index, int total_count) -{ - IV_ASSERT(mList != NULL); - - int index; - Media_Item *slide_show_item = NULL; - - index = ivug_data_get_next_slide_show_index(mList, ss_mode, *next_index, total_count, false); - if(index < 0) - { - MSG_SDATA_HIGH("*******Next slide show item is NULL"); - return NULL; - } - - MSG_SDATA_HIGH("*******Next slide show index is %d", index); - - slide_show_item = _ivug_data_create_window_size_list(mList, index, total_count); - if(slide_show_item == NULL) - { - MSG_SDATA_HIGH("*******Next slide show item is NULL"); - return NULL; - } - ivug_data_append_media_item(mList, slide_show_item); - - return slide_show_item; -} - - -Media_Item * -ivug_data_get_next_shuffle_item(Media_List *mList) -{ - IV_ASSERT(mList != NULL); - - _Media_List *_mList = (_Media_List *)mList; - - return _mList->ss_shuffle_current; // current is set at next slide -} - diff --git a/main/src/data/ivug-data-shuffle.h b/main/src/data/ivug-data-shuffle.h deleted file mode 100755 index c478443..0000000 --- a/main/src/data/ivug-data-shuffle.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * 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 __IVUG_DATA_SHUFFLER_H__ -#define __IVUG_DATA_SHUFFLER_H__ - -#include "ivug-config.h" -#include "ivug-data.h" - -typedef struct { - Eina_List *ss_shuffle_header; - Eina_List *ss_shuffle_current; - Eina_List *ss_shuffle_end; -} SlideShow_List; - -#ifdef __cplusplus -extern "C" { -#endif - -bool ivug_data_init_shuffle_slide_show(Media_List *mList, slide_show_mode ss_mode, int cur_index, int total_count); - -void ivug_data_deinit_shuffle_slide_show(Media_List *mList, int total_count); - -Media_Item * ivug_data_get_current_slide_show_item(Media_List *mList, slide_show_mode ss_mode, int cur_index, int *next_index, int total_count); - -Media_Item * ivug_data_set_next_slide_show_item(Media_List *mList, slide_show_mode ss_mode, int *cur_index, int total_count); - -Media_Item * ivug_data_get_next_shuffle_item(Media_List *mList); - -int ivug_data_get_next_slide_show_index(Media_List *mList, slide_show_mode ss_mode, int cur_index, int total_count, bool increase_flag); - -void ivug_data_create_shuffled_list(Media_List *mList, int total_count); - -#ifdef __cplusplus -} -#endif - - -#endif // __IVUG_DATA_SHUFFLER_H__ - diff --git a/main/src/data/ivug-data.c b/main/src/data/ivug-data.c deleted file mode 100755 index 4e05214..0000000 --- a/main/src/data/ivug-data.c +++ /dev/null @@ -1,683 +0,0 @@ -/* - * 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 "ivug-main.h" -#include "ivug-common.h" - -#include "ivug-data.h" -#include "ivug-util.h" -#include "ivug-data-priv.h" -#include "ivug-data-list.h" -#include "ivug-data-filter.h" - - -#include - -static bool -_ivug_data_set_window_section(Media_List *mList, int start_index, int total_count, int *stp, int *endp) -{ - IV_ASSERT(mList != NULL); - - _Media_List *_mList = (_Media_List *)mList; - - //if(total_count > _mList->window_size && start_index > 0) // TODO : IV_ASSERT(start_index > 0); after fix gallery - if(start_index > 0 && total_count > 0 && start_index <= total_count) // TODO : IV_ASSERT(start_index > 0); after fix gallery - { - *stp = (start_index-1) - (_mList->window_size/2); - if(*stp < 0) - { - *stp = 0; - } - *endp = (start_index-1) + (_mList->window_size/2); - if(*endp > total_count-1) - { - *endp = total_count-1; - } - if(_mList->window_count > 0) - { - if(*stp < _mList->left_end) /* load left window */ - { - if(*endp > _mList->left_end-1) - { - *endp = _mList->left_end -1; - } - _mList->left_end = *stp; - } - if(*endp > _mList->right_end) /* load right window */ - { - if(*stp < _mList->right_end+1) - { - *stp = _mList->right_end +1; - } - _mList->right_end = *endp; - } - } - else // first window loding - { - MSG_SDATA_HIGH("First window loading"); - _mList->left_end = *stp; - _mList->right_end = *endp; - _mList->window_count++; - } - MSG_SDATA_HIGH("Window loading [%d~%d]", *stp, *endp); - - MSG_SDATA_HIGH("true : _mlist [%d~%d]", _mList->left_end, _mList->right_end); - return true; - } - else - { - if(_mList->window_count == 0) - { - MSG_SDATA_HIGH("Entire loading"); - _mList->left_end = 0; - _mList->right_end = total_count-1; - } - MSG_SDATA_HIGH("false : _mlist [%d~%d]", _mList->left_end, _mList->right_end); - return false; - } -} - - -static bool -_ivug_data_add_media_item(Eina_List **list, const char *filepath) -{ - IV_ASSERT(list != NULL); - - int ret = 0; - Mitem* item = NULL; - - if (ivug_is_web_uri(filepath) == false) - { //local file. - ret = minfo_get_item(gGetMediaSVCHandle(), filepath, &item); //get cluster id - if (ret != MB_SVC_ERROR_NONE) - { - MSG_SDATA_ERROR("Cannot find file in media db for %s", filepath); - } - } - - Media_Data* mdata = NULL; - - if (item != NULL) - { - mdata = ivug_alloc_mediadata_from_mitem(item); - minfo_destroy_mtype_item(item); - } - else - { - mdata = ivug_alloc_mediadata_from_filepath(filepath); - } - - if ( mdata == NULL ) - { - MSG_SDATA_ERROR("Cannot create slide data for %s", filepath); - return false; - } - - *list = eina_list_append(*list, mdata); - - return true; - -} - -Eina_List *_ivug_data_create_window_size_list(Media_List *mList, int start_index, int total_count) -{ - IV_ASSERT(mList != NULL); - - _Media_List *_mList = (_Media_List *)mList; - Eina_List* slide_list = NULL; - - MSG_SDATA_HIGH("start index is %d", start_index); - - if(start_index < 1 || start_index > total_count) - { - MSG_SDATA_ERROR("start index is invalid %d", start_index); - return NULL; - } - -// Eina_List *ivug_list_load_items(List_Filter *filter, int stp, int endp); - - int stp = 0, endp = 0; - - _ivug_data_set_window_section(mList, start_index, total_count, &stp, &endp); - - slide_list = ivug_list_load_items(_mList->filter, stp, endp); - - if(slide_list == NULL) - { - MSG_SDATA_ERROR("Create list ERROR"); - return NULL; - } - - return slide_list; -} - -static Media_Item * -_ivug_data_create_list(Media_List *mList, Eina_List **list, const char *filepath, int *start_index, int *total_count) -{ - IV_ASSERT(mList != NULL); - IV_ASSERT(filepath != NULL); - - MSG_SDATA_HIGH("Creating slide data list"); - - _Media_List *_mList = (_Media_List *)mList; - Media_Item *item = NULL; - - *total_count = -1; - - if(_mList->filter->view_by == IVUG_VIEW_BY_FILE) - { - if (filepath == NULL) - { - MSG_SDATA_ERROR("file path is NULL"); - return NULL; - } - - // No need to create list. just one file only. - if ( _ivug_data_add_media_item(list, filepath) == false) - { - MSG_SDATA_ERROR("Cannot add file : %s", filepath); - return NULL; - } - *total_count = 1; - item = *list; - return item; - } - else - { - *total_count = ivug_list_get_item_cnt(_mList->filter); - - *list = _ivug_data_create_window_size_list(mList, *start_index, *total_count); - } - - if(*list == NULL) - { - MSG_SDATA_ERROR("list is NULL"); - return NULL; - } - - if(*total_count == 1) - { - item = *list; - *start_index = 1; - return item; - } - else if(*start_index > 0 && *start_index <= *total_count) - { - item = eina_list_nth_list(*list, (*start_index-1)-_mList->left_end); - } - - Media_Data *mdata = NULL; - bool find = false; - int index = 0; - - if(item != NULL) - { - MSG_SDATA_HIGH("start index exist"); - mdata = ivug_data_get_data(item); - - if(mdata != NULL) - { - if ((mdata)->filepath) - { - if(strncmp(filepath, mdata->filepath, strlen(filepath)) == 0) - { - MSG_SLIDER_HIGH("Founded Filepath=%s Index=%d", ivug_get_filename(mdata->filepath), *start_index); - index = *start_index; // recieve from bundle - find = true; - } - } - if (find == false && mdata->fileurl) - { - if (strncmp(filepath, mdata->fileurl, strlen(filepath)) == 0) //match - { - MSG_SLIDER_HIGH("Founded Fileurl=%s Index=%d", ivug_get_filename(mdata->fileurl), *start_index); - index = *start_index; // recieve from bundle - find = true; - } - } - if(find == false) - { - MSG_SLIDER_WARN("param index is not match to real index"); - } - } - } - //check indexed item - if(item == NULL || find == false) // start index is not exist || can't find filename at window list - { - item = ivug_data_find_item(*list, filepath, &index); - - if (item == NULL) - { - // TODO : find file at whole file list - MSG_SLIDER_ERROR("Item is not found for file %s", filepath); - return NULL; - } - } - *start_index = index; - MSG_SDATA_HIGH("Create slide data list END"); - return item; -} - -Media_List *ivug_data_init_media_list(const ivug_parameter *param) -{ - _Media_List *_mList = calloc(1, sizeof(_Media_List)); - IV_ASSERT(_mList != NULL); - - _mList->window_size = IV_WINDOW_SIZE; - _mList->window_reload_offset = IV_RELOAD_OFFSET; - _mList->window_count = 0; - _mList->left_end = 0; - - _mList->filter = ivug_data_filter_create(param); - - return (Media_List *)_mList; -} - -Media_Item * -ivug_data_create_media_list_from_param - (Media_List *mList, Eina_List **list, const char *filepath, int *start_index, int *total_count) -{ - IV_ASSERT(mList != NULL); - - MSG_SDATA_HIGH("Creating slide data list"); - - _Media_List *_mList = (_Media_List *)mList; - - if(list == NULL) - { - return _ivug_data_create_list(mList, &(_mList->header), filepath, start_index, total_count); - } - else - { - return _ivug_data_create_list(mList, list, filepath, start_index, total_count); - } -} - -bool ivug_data_set_window_size(Media_List *mList, int size) -{ - _Media_List *_mList = (_Media_List *)mList; - - if(size < 1) - { - MSG_SDATA_ERROR("Set window size error, size = %d", size); - _mList->window_size = 0; - return false; - } - - _mList->window_size = size; - return true; -} - -void ivug_data_reset_window_load_count(Media_List *mList) -{ - _Media_List *_mList = (_Media_List *)mList; - - _mList->window_count = 0; -} - -void -ivug_data_delete_media_list(Media_List *mList) -{ - IV_ASSERT(mList != NULL); - _Media_List *_mList = (_Media_List *)mList; - - MSG_SDATA_HIGH("Removing all media data"); - - ivug_list_delete_items(_mList->header); - - ivug_data_filter_delete(_mList->filter); - - free(_mList); -} - - - -#ifdef TRACE_CALLER -Media_Data * -dbg_ivug_data_get_data(Media_Item *media_item, const char *func, unsigned int line) -#else -Media_Data * -ivug_data_get_data(Media_Item *media_item) -#endif // TRACE_CALLER -{ -#ifdef TRACE_CALLER - MSG_SDATA_HIGH("Called by %s(%d) Item=0x%08x", func, line, media_item); -#endif - IV_ASSERT(media_item != NULL); - - Eina_List *item = media_item; - - return eina_list_data_get(item); - -} - -Media_Item * -ivug_data_get_first(Media_List *mList) -{ - IV_ASSERT(mList != NULL); - _Media_List *_mList = (_Media_List *)mList; - - return (Media_Item *)_mList->header; -} - - -Media_Item * -ivug_data_get_next(Media_Item *media_item) -{ - IV_ASSERT(media_item != NULL); - - Eina_List *item = media_item; - - Eina_List *list; - - list = eina_list_next(item); - - if ( list == NULL ) - { - MSG_SDATA_ERROR("Next item is NULL"); - return NULL; - } - - return list; -} - -Media_Item * -ivug_data_get_prev(Media_Item *media_item) -{ - IV_ASSERT(media_item != NULL); - - Eina_List *item = media_item; - - Eina_List *list; - - list = eina_list_prev(item); - - if ( list == NULL ) - { - MSG_SDATA_ERROR("Prev item is NULL"); - return NULL; - } - - return list; -} - -Media_Item * -ivug_data_find_item(Eina_List *list, const char* fileuri, int /*OUT*/ *index) -{ - IV_ASSERT(list != NULL); - IV_ASSERT(fileuri != NULL); - - Eina_List *item; - Media_Data* mdata; - - unsigned int i = 1; - - EINA_LIST_FOREACH(list, item, mdata) - { - if(mdata == NULL) - { - MSG_SDATA_FATAL("sdata cannot be NULL"); - return NULL; - } - - if (mdata->filepath) - { - if (strncmp(mdata->filepath, fileuri, strlen(mdata->filepath)) == 0) //match - { - MSG_SDATA_HIGH("Founded Filepath=%s Index=%d", ivug_get_filename(mdata->filepath), i); - *index = i; - return item; - } - } - - if (mdata->fileurl) - { - if (strncmp(mdata->fileurl, fileuri, strlen(mdata->fileurl)) == 0) //match - { - MSG_SDATA_HIGH("Founded Fileuri=%s Index=%d", mdata->fileurl, i); - *index = i; - return item; - } - } - i++; - } - - *index = 0; - return NULL; -} - - -bool -ivug_data_delete_media_item(Media_List *mList, Media_Item *media_item) -{ - IV_ASSERT(mList != NULL); - IV_ASSERT(media_item != NULL); - - _Media_List *_mList = (_Media_List *)mList; - - int ret; - - Media_Data* mdata; - - mdata = (Media_Data*)eina_list_data_get(media_item); - - IV_ASSERT(mdata != NULL); - - if (uuid_is_valid(mdata->mediaID) == true) - { - ret = minfo_delete_media_id(gGetMediaSVCHandle(), mdata->mediaID); - - if (ret == MB_SVC_ERROR_NONE) - { - if (mdata->filepath) - { - if(ivug_remove_file(mdata->filepath) == false) - { - MSG_SDATA_ERROR("unlink error , file path =%s", mdata->filepath); - } - } - } - else - { - MSG_SDATA_ERROR("minfo_delete_media_id faild=%d uuid=%s file=%s", ret, uuid_getchar(mdata->mediaID), mdata->filepath); - goto ERROR; - } - - } - else - { - if (mdata->filepath) - { - if(ivug_remove_file(mdata->filepath) == false) - { - MSG_SDATA_ERROR("file remove error , file path =%s", mdata->filepath); - } - } - else - { - MSG_SDATA_ERROR("delete faild file path is NULL"); - goto ERROR; - } - - } - -// TODO : Handle when current is deleted - ivug_free_mediadata(mdata); // Free data - - _mList->header = eina_list_remove_list(_mList->header, media_item); - _mList->right_end--; - - return true; - -ERROR: - ivug_free_mediadata(mdata); // Free data - _mList->header = eina_list_remove_list(_mList->header, media_item); - _mList->right_end--; - - MSG_SDATA_ERROR("ivug_data_delete_slide faild."); - return false; - -} - -/* it delete start ~ end item */ -/* if end is null, it delete until last */ -bool -ivug_data_delete_window_list(Media_List *mList, Media_Item *start_item, Media_Item *end_item) -{ - IV_ASSERT(mList != NULL); - IV_ASSERT(start_item != NULL); - - _Media_List *_mList = (_Media_List *)mList; - - Media_Item *current = start_item; - Media_Item *next = NULL; - - Media_Data* mdata; - - do - { - MSG_SDATA_HIGH("delete window list"); - next = eina_list_next(current); - - mdata = (Media_Data*)eina_list_data_get(current); - ivug_free_mediadata(mdata); // Free data - _mList->header = eina_list_remove_list(_mList->header, current); - if(end_item == NULL) /* delete right window */ - { - /* TODO : _mList->right_end--; */ - } - else /* delete left window */ - { - /* TODO : _mList->left_end++; */ - } - current = next; - }while(current && current != end_item); - - if(current) /* delete end item */ - { - mdata = (Media_Data*)eina_list_data_get(current); - ivug_free_mediadata(mdata); // Free data - _mList->header = eina_list_remove_list(_mList->header, current); - _mList->left_end++; /* this case is delete left window */ - } - - _mList->window_count--; - - return true; -} - - -void -ivug_data_delete_all_window_list(Media_List *mList) -{ - _Media_List *_mList = (_Media_List *)mList; - - ivug_data_delete_window_list(mList, _mList->header, NULL); -} - - -void ivug_data_append_media_item(Media_List *mList, Eina_List* list) -{ - IV_ASSERT(mList != NULL); - - _Media_List *_mList = (_Media_List *)mList; - - MSG_SDATA_HIGH("original : slide_list_count is %d", eina_list_count(_mList->header)); - if(_mList->window_count > 3) - { - /* TODO : delete window item */ - //ivug_data_delete_window_list(mList, _mList->header, _mList->contact_point); - MSG_SDATA_HIGH("after delete : slide_list_count is %d", eina_list_count(_mList->header)); - } - //_mList->contact_point = eina_list_last(_mList->header); - - _mList->header = eina_list_merge(_mList->header, list); - MSG_SDATA_HIGH("merge next : slide_list_count is %d", eina_list_count(_mList->header)); - - _mList->window_count++; -} - -void ivug_data_prepend_media_item(Media_List *mList, Eina_List* list) -{ - IV_ASSERT(mList != NULL); - - _Media_List *_mList = (_Media_List *)mList; - - MSG_SDATA_HIGH("original : slide_list_count is %d", eina_list_count(_mList->header)); - if(_mList->window_count > 3) - { - /* TODO : delete window item */ - //ivug_data_delete_window_list(mList, _mList->contact_point, NULL); - MSG_SDATA_HIGH("after delete : slide_list_count is %d", eina_list_count(_mList->header)); - } - //_mList->contact_point = _mList->header; - - _mList->header = eina_list_merge(list, _mList->header); - MSG_SDATA_HIGH("merge prev : slide_list_count is %d", eina_list_count(_mList->header)); - - _mList->window_count++; -} - - -Load_State -ivug_data_set_window_loading(Media_List *mList, int cur_index, int total_count) -{ - Eina_List* slide_list_prev = NULL; - Eina_List* slide_list_next = NULL; - int start = -1; - - IV_ASSERT(mList != NULL); - - _Media_List *_mList = (_Media_List *)mList; - - /* load right widow */ - if(_mList->right_end < total_count-1 && cur_index-1 > _mList->right_end - _mList->window_reload_offset) - { - /* start index is basis for view's index(1~total) because +1 needed */ - start = (_mList->right_end+1) + (_mList->window_size/2+1); - if(start > total_count) // index is 1~total - { - start = total_count; - } - MSG_SDATA_HIGH("start = %d, _mList->right_end = %d", start, _mList->right_end); - slide_list_next = _ivug_data_create_window_size_list(mList, start, total_count); - if(slide_list_next != NULL) - { - ivug_data_append_media_item(mList, slide_list_next); - return IVUG_SLIDER_LOADED_RIGHT; - } - } - /* load left widow */ - else if(_mList->left_end > 0 && cur_index-1 < _mList->left_end + _mList->window_reload_offset) - { - /* start index is basis for view's index(1~total) because +1 needed */ - start = (_mList->left_end+1) - (_mList->window_size/2+1); - if(start < 1) // index is 1~total - { - start = 1; - } - MSG_SDATA_HIGH("start = %d, _mList->left_end = %d", start, _mList->left_end); - slide_list_prev = _ivug_data_create_window_size_list(mList, start, total_count); - if(slide_list_prev != NULL) - { - ivug_data_prepend_media_item(mList, slide_list_prev); - return IVUG_SLIDER_LOADED_LEFT; - } - } - return IVUG_SLIDER_LOADED_NONE; -} - diff --git a/main/src/data/ivug-data.h b/main/src/data/ivug-data.h deleted file mode 100755 index 2dd9965..0000000 --- a/main/src/data/ivug-data.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * 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 __IVUG_DATA_H__ -#define __IVUG_DATA_H__ - -#include "ivug-common.h" -#include "ivug-parameter.h" -#include "ivug-mediadata.h" - - -typedef enum { - IVUG_SLIDER_LOADED_NONE = 0x00, /* default value */ - IVUG_SLIDER_LOADED_LEFT, - IVUG_SLIDER_LOADED_RIGHT, - IVUG_SLIDER_LOADED_STATUS_MAX, -} Load_State; - - -/* Opaque pointer for media list. */ -typedef void *Media_List; -typedef Eina_List Media_Item; // Same as Eina_List - -#undef TRACE_CALLER - -bool -ivug_data_set_window_size(Media_List *mList, int size); - -Load_State -ivug_data_set_window_loading(Media_List *mList, int cur_index, int total_count); - -void ivug_data_reset_window_load_count(Media_List *mList); - -Media_List * ivug_data_init_media_list(const ivug_parameter *param); - -Media_Item * -ivug_data_create_media_list_from_param(Media_List *mList, Eina_List **list, const char *filepath, int *start_index, int *total_count); - -void -ivug_data_delete_media_list(Media_List *mList); - -void -ivug_data_delete_all_window_list(Media_List *mList); - -Media_Item * -ivug_data_get_first(Media_List *mList); - -Media_Item * -ivug_data_get_prev(Media_Item *media_item); - -Media_Item * -ivug_data_get_next(Media_Item *media_item); - -#ifdef TRACE_CALLER -#define ivug_data_get_data(media_item) dbg_ivug_data_get_data(media_item , __func__, __LINE__) - -Media_Data * -dbg_ivug_data_get_data(Media_Item *media_item, const char *func, unsigned int line); -#else -Media_Data * -ivug_data_get_data(Media_Item *media_item); -#endif - -void ivug_data_append_media_item(Media_List *mList, Eina_List* list); - -bool ivug_data_delete_media_item(Media_List *mList, Media_Item *media_item); - -Media_Item * ivug_data_find_item(Eina_List *list, const char* fileuri, int /*OUT*/ *index); - -#endif //__IVUG_DATA_H__ - diff --git a/main/src/data/ivug-mediadata.c b/main/src/data/ivug-mediadata.c deleted file mode 100755 index b46a5da..0000000 --- a/main/src/data/ivug-mediadata.c +++ /dev/null @@ -1,301 +0,0 @@ -/* - * 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 "ivug-main.h" -#include "ivug-common.h" -#include -#include "ivug-mediadata.h" -#include "ivug-file-info.h" - -Media_Data *ivug_alloc_mediadata_from_mitem(Mitem * item) -{ - IV_ASSERT(item != NULL); - IV_ASSERT(item->file_url != NULL); - Media_Data * mdata = NULL; - mdata = (Media_Data *) calloc(1, sizeof(Media_Data)); - if (mdata == NULL) - { - MSG_SDATA_ERROR("Cannot allocate memory"); - return NULL; - } - - mdata->mediaID = uuid_assign(item->uuid); - - //file url - mdata->fileurl = strdup(item->file_url); - if (mdata->fileurl == NULL) - { - MSG_SDATA_ERROR("strdup return NULL"); - free(mdata); - return NULL; - } - - if (item->type == MINFO_ITEM_IMAGE) - { - //check file path. - MSG_SDATA_HIGH("Local image : %s. %s", uuid_getchar( mdata->mediaID ), mdata->fileurl); - - mdata->thumbnail_path = NULL; - - mdata->slide_type = SLIDE_TYPE_IMAGE; - mdata->filepath = strdup(mdata->fileurl); - if (mdata->filepath == NULL) - { - free(mdata->fileurl); - MSG_SDATA_ERROR("strdup return NULL"); - free(mdata); - return NULL; - } - } - else if (item->type == MINFO_ITEM_VIDEO) - { - MSG_SDATA_HIGH("Local video : %s. %s", uuid_getchar(mdata->mediaID), mdata->fileurl); - - if (item->thumb_url) - { - mdata->thumbnail_path = strdup(item->thumb_url); //thumbnail address - if (mdata->thumbnail_path == NULL) - { - free(mdata->fileurl); - MSG_SDATA_ERROR("strdup return NULL"); - free(mdata); - return NULL; - } - } - - mdata->slide_type = SLIDE_TYPE_VIDEO; - mdata->filepath = strdup(mdata->fileurl); - if (mdata->filepath == NULL) - { - free(mdata->fileurl); - if (mdata->thumbnail_path) - { - free(mdata->thumbnail_path); - } - MSG_SDATA_ERROR("strdup return NULL"); - free(mdata); - return NULL; - } - } - return mdata; -} - -Media_Data *ivug_alloc_mediadata_from_filepath(const char *filepath) -{ - IV_ASSERT(filepath != NULL); - - - // No need to create list. just one file only. - Mitem * item = NULL; - if (ivug_is_web_uri(filepath) == false) - { - - //local file. - int ret = MB_SVC_ERROR_NONE; - ret = minfo_get_item(gGetMediaSVCHandle(), filepath, &item); //get cluster id - if (ret != MB_SVC_ERROR_NONE) - { - MSG_SDATA_ERROR("Cannot find file in media db for %s",filepath); - // Go through - } - } - - Media_Data * mdata = NULL; - if (item != NULL) - { - MSG_SDATA_HIGH("File path is given. but founded in DB."); - mdata = ivug_alloc_mediadata_from_mitem(item); - minfo_destroy_mtype_item(item); - if (mdata == NULL) - { - MSG_SDATA_ERROR("Cannot add file : %s", filepath); - return NULL; - } - return mdata; - } - mdata = (Media_Data *) calloc(1, sizeof(Media_Data)); - if (mdata == NULL) - { - MSG_SDATA_ERROR("Cannot allocate memory"); - return NULL; - } - mdata->mediaID = INVALID_UUID; //copy id mitem - - char *mime_type = NULL; - mime_type = ivug_fileinfo_get_mime_type(filepath); - if (mime_type == NULL) - { - MSG_SDATA_WARN("file path is not vaild = %s", filepath); - mdata->slide_type = SLIDE_TYPE_UNKNOWN; - mdata->fileurl = NULL; - mdata->filepath = NULL; - return mdata; - } - - - Media_Type slide_type = SLIDE_TYPE_NONE; - - //image - if (strncmp(mime_type, "image/", strlen("image/")) == 0) - { - slide_type = SLIDE_TYPE_IMAGE; - } - else if (strncmp(mime_type, "video/", strlen("video/")) == 0) - { - slide_type = SLIDE_TYPE_VIDEO; - } - else - { - slide_type = SLIDE_TYPE_NONE; - } - MSG_SDATA_HIGH("File=%s Mime=%s", filepath, mime_type); - free(mime_type); //free strdup - - mdata->thumbnail_path = NULL; - - if (slide_type == SLIDE_TYPE_IMAGE) - { - mdata->slide_type = SLIDE_TYPE_IMAGE; - mdata->fileurl = strdup(filepath); - if (mdata->fileurl == NULL) - { - MSG_SDATA_ERROR("strdup return NULL"); - goto ERROR; - } - mdata->filepath = strdup(filepath); - if (mdata->filepath == NULL) - { - MSG_SDATA_ERROR("strdup return NULL"); - free(mdata->fileurl); - goto ERROR; - } - } - else if (slide_type == SLIDE_TYPE_VIDEO) - { - mdata->slide_type = SLIDE_TYPE_VIDEO; - mdata->fileurl = strdup(filepath); - if (mdata->fileurl == NULL) - { - MSG_SDATA_ERROR("strdup return NULL"); - goto ERROR; - } - mdata->filepath = strdup(filepath); - if (mdata->filepath == NULL) - { - MSG_SDATA_ERROR("strdup return NULL"); - free(mdata->fileurl); - goto ERROR; - } - } - else - { - MSG_SDATA_WARN("file path is not vaild = %s", filepath); - mdata->slide_type = SLIDE_TYPE_UNKNOWN; - mdata->fileurl = NULL; - mdata->filepath = NULL; - } - return mdata; -ERROR: - - if (mdata) - { - free(mdata); - } - return NULL; -} - -void ivug_free_mediadata(Media_Data * mdata) -{ - IV_ASSERT(mdata != NULL); - - uuid_free(mdata->mediaID); - - //file path - if (mdata->filepath) - { - //IVUG_DEBUG_MSG("filepath =%s", sd->filepath); - free(mdata->filepath); - mdata->filepath = NULL; - } - - //file url - if (mdata->fileurl) - { - MSG_SDATA_HIGH("Remove media data. %s", mdata->fileurl); - free(mdata->fileurl); - mdata->fileurl = NULL; - } - - if (mdata->thumbnail_path) - { - free(mdata->thumbnail_path); - mdata->thumbnail_path = NULL; - } - - free(mdata); -} - -bool ivug_delete_mediadata(Media_Data * mdata) -{ - IV_ASSERT(mdata != NULL); - - if (uuid_is_valid(mdata->mediaID) == true ) - { - int ret = minfo_delete_media_id(gGetMediaSVCHandle(), mdata->mediaID); - - if (ret == MB_SVC_ERROR_NONE) - { - if (mdata->filepath) - { - MSG_SDATA_HIGH("File removed. %s", mdata->filepath); - if (ivug_remove_file(mdata->filepath) == false) - { - MSG_SDATA_ERROR("file remove error : %s", mdata->filepath); - } - } - else - { - MSG_SDATA_ERROR("File path is NULL", mdata->filepath); - } - } - else - { - MSG_SDATA_ERROR("minfo_delete_media_id faild=%d uuid=%s file=%s", ret, uuid_getchar(mdata->mediaID), mdata->filepath); - return false; - } - } - else - { - if (mdata->filepath) - { - MSG_SDATA_HIGH("File removed. %s", mdata->filepath); - - if (ivug_remove_file(mdata->filepath) == false) - { - MSG_SDATA_ERROR("file remove error : %s", mdata->filepath); - } - } - else - { - MSG_SDATA_ERROR("File path is NULL", mdata->filepath); - } - - } - - return true; -} - diff --git a/main/src/data/ivug-mediadata.h b/main/src/data/ivug-mediadata.h deleted file mode 100755 index 43b5e9e..0000000 --- a/main/src/data/ivug-mediadata.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - * 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 __IVUG_MEDIADATA_H__ -#define __IVUG_MEDIADATA_H__ - -#include -#include // Mitem - -//slide type -typedef enum { - SLIDE_TYPE_NONE = 0x00, - SLIDE_TYPE_IMAGE, - SLIDE_TYPE_VIDEO, - SLIDE_TYPE_UNKNOWN, // File is exists but it's type is unknown. -} Media_Type; - -/* - This struct represents data for slide. - thumbnail_path is slide's thumbnail image path. - fileurl is saved item in media service. - filepath is local file path. if fileurl is http://.../test.jpg, filepath is NULL, when complete download filepath change to saved local file path. -*/ -typedef struct { -//Data - Media_Type slide_type; //image, video - - UUID mediaID; // Media ID - - char* thumbnail_path; // thumbnail image file path. - char* fileurl; // file url. - char* filepath; // file path in local file system. -} Media_Data; - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Converting Media_Data from filepath - * @param filepath[in] - * -**/ -Media_Data *ivug_alloc_mediadata_from_filepath(const char* filepath); - -/** - * Converting Mitem to Media_Data - * @param item[in] - * -**/ -Media_Data *ivug_alloc_mediadata_from_mitem(Mitem* item); - - -/** - * Free memory used by Media_Data - * @param mdata[in] - * -**/ -void ivug_free_mediadata(Media_Data* mdata); - -/** - * - * Delete file indicated by @p mdata - * -**/ -bool ivug_delete_mediadata(Media_Data* mdata); - - -#ifdef __cplusplus -} -#endif - -#endif // __IVUG_MEDIADATA_H__ \ No newline at end of file diff --git a/main/src/effect/include/ivug-anim.h b/main/src/effect/include/ivug-anim.h deleted file mode 100755 index cf7ddfa..0000000 --- a/main/src/effect/include/ivug-anim.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * 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 __IVUG_ANIM_H__ -#define __IVUG_ANIM_H__ - -#include - -typedef enum { - ANIM_TYPE_LINEAR, - ANIM_TYPE_QUARTIC_INOUT, - ANIM_TYPE_QUINTIC_INOUT, - ANIM_TYPE_SINE, -} anim_type_t; - -/* - t: current time b: start time c: change in value d: duration -*/ -typedef double (*anim_transit_func_t) (double t, double b, double c, double d); - -typedef struct { -/* private */ - double duration; - double t_start; - double t_varing; - - anim_transit_func_t transit_func; - - void *user_data; -} anim_handle_t; - -anim_handle_t *create_animation(); - -void delete_animation(anim_handle_t *anim); - -bool update_animation(anim_handle_t *anim, double current, int *value); - -bool set_animation_type(anim_handle_t *anim, anim_type_t type); - -bool set_animation(anim_handle_t *anim, int start, int end, double duration); - -#endif diff --git a/main/src/effect/include/ivug-effect.h b/main/src/effect/include/ivug-effect.h deleted file mode 100755 index 7594c54..0000000 --- a/main/src/effect/include/ivug-effect.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * 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 __IVUG_EFFECT_H__ -#define __IVUG_EFFECT_H__ - -#include -#include -#include "ivug-anim.h" - -#define EFFECT_LBYTES_ARGB8888(w) (((w) * 4)) -#define MAX_PERCENT (100.0f) -#define MIN_PERCENT (0.0f) - -#ifdef __cplusplus -extern "C" { -#endif - -typedef void *Effect_Data ; - -typedef void (*FuncFinished)(void *data); - -typedef struct { - Effect_Data eng_data; - - FuncFinished pFinishedCB; - void *ClientData; - - double t_base; // start time. - anim_handle_t *anim; - Ecore_Animator *animator; - - struct { - Effect_Data (*init) (Evas_Object *src, Evas_Object *dst, int screen_w, int screen_h, int rotation); - void (*animate) (Effect_Data data, double percent); - void (*pause) (Effect_Data data); /* Not used*/ - void (*resume) (Effect_Data data); /* Not used*/ - void (*finalize) (Effect_Data data); - - double (*get_duration)(Effect_Data data); - } func; - -} Effect_Engine; - -typedef enum _Effect_Type { - EFFECT_NONE, - EFFECT_SLIDE, - EFFECT_MAX -} Effect_Type; - - -Effect_Engine *ivug_effect_add(Effect_Type type); - -bool ivug_effect_init(Effect_Engine *engine, Evas_Object *src, Evas_Object *dst, int w, int h, int rotation); -bool ivug_effect_start(Effect_Engine *engine, FuncFinished pFunc, void *data); -bool ivug_effect_pause(Effect_Engine *engine); -bool ivug_effect_resume(Effect_Engine *engine); -bool ivug_effect_finalize(Effect_Engine *engine); - - -/* - Private function for adding effect. Do not use below functions directly.. -*/ -Effect_Engine *ivug_fade_add(void); -Effect_Engine *ivug_iris_add(void); -Effect_Engine *ivug_dissolve_add(void); -Effect_Engine *ivug_blind_add(void); -Effect_Engine *ivug_slide_add(void); - - -#ifdef __cplusplus -} -#endif - - -#endif /* __IVUG_EFFECT_H__ */ diff --git a/main/src/effect/ivug-anim.c b/main/src/effect/ivug-anim.c deleted file mode 100755 index b12d1fb..0000000 --- a/main/src/effect/ivug-anim.c +++ /dev/null @@ -1,178 +0,0 @@ -/* - * 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 /* for NULL */ -#include -#include - -#include "ivug-common.h" - -#include "ivug-anim.h" - -/* - t: current time b: start time c: change in value d: duration -*/ -static double _anim_linear(double t, double b, double c, double d) -{ - if(d != 0.0) - t /= d; - return b + c * (t); -} - -static double _anim_sine(double t, double b, double c, double d) -{ -/* TODO : Consider below table reconstruct. need only 0.0 ~ 1.0 range*/ - static const double const SIN_TABLE[91] = { - 0.0000f, 0.0174f, 0.0349f, 0.0523f, 0.0698f, - 0.0872f, 0.1045f, 0.1219f, 0.1392f, 0.1564f, - 0.1736f, 0.1908f, 0.2079f, 0.2249f, 0.2419f, - 0.2588f, 0.2756f, 0.2924f, 0.3090f, 0.3256f, - 0.3420f, 0.3584f, 0.3746f, 0.3907f, 0.4067f, - 0.4226f, 0.4384f, 0.4540f, 0.4695f, 0.4848f, - 0.5000f, 0.5150f, 0.5299f, 0.5446f, 0.5592f, - 0.5736f, 0.5878f, 0.6018f, 0.6157f, 0.6293f, - 0.6528f, 0.6561f, 0.6691f, 0.6820f, 0.6947f, - 0.7071f, 0.7193f, 0.7314f, 0.7431f, 0.7547f, - 0.7660f, 0.7772f, 0.7880f, 0.7986f, 0.8090f, - 0.8191f, 0.8290f, 0.8387f, 0.8480f, 0.8571f, - 0.8660f, 0.8746f, 0.8829f, 0.8910f, 0.8988f, - 0.9063f, 0.9135f, 0.9205f, 0.9272f, 0.9336f, - 0.9397f, 0.9455f, 0.9511f, 0.9563f, 0.9613f, - 0.9659f, 0.9703f, 0.9744f, 0.9781f, 0.9816f, - 0.9848f, 0.9877f, 0.9903f, 0.9926f, 0.9945f, - 0.9962f, 0.9976f, 0.9986f, 0.9994f, 0.9998f, - 1.0f - }; - - if(d != 0.0) - t /= d; /* normalize */ - - int idx = (int)(90.0 * t); - - return b + c * (SIN_TABLE[idx]); - -} - -static double _anim_ease_inout_quartic(double t, double b, - double c, double d) -{ - if(d != 0.0) - t /= d; - double ts = t * t; - double tc = ts * t; - return b + c * (-2 * tc + 3 * ts); - -} - -static double _anim_ease_inout_quintic(double t, double b, - double c, double d) -{ - if(d != 0.0) - t /= d; - double ts = t * t; - double tc = ts * t; - return b + c * (6 * tc * ts + -15 * ts * ts + 10 * tc); -} - -anim_handle_t *create_animation() -{ - anim_handle_t *anim; - - anim = calloc(1, sizeof(anim_handle_t)); - - if (anim == NULL) { - MSG_IVUG_ERROR("Cannot allocate memory"); - return NULL; - } - - return anim; - -} - -void delete_animation(anim_handle_t *anim) -{ - IV_ASSERT(anim != NULL); - - free(anim); - -} - -bool set_animation_type(anim_handle_t *anim, anim_type_t type) -{ - IV_ASSERT(anim != NULL); - - switch (type) { - case ANIM_TYPE_LINEAR: - anim->transit_func = _anim_linear; - break; - case ANIM_TYPE_QUARTIC_INOUT: - anim->transit_func = _anim_ease_inout_quartic; - break; - - case ANIM_TYPE_QUINTIC_INOUT: - anim->transit_func = _anim_ease_inout_quintic; - break; - - case ANIM_TYPE_SINE: - anim->transit_func = _anim_sine; - break; - default: - MSG_IVUG_ERROR("Invalid transition type=%d", type); - return false; - break; - } - - return true; -} - -bool set_animation(anim_handle_t *anim, int start, int end, double duration) -{ - IV_ASSERT(anim != NULL); - - MSG_IVUG_MED("Set Anim. Start=%d End=%d Dur=%f", start, end, duration); - anim->duration = duration; - anim->t_start = start; - anim->t_varing = end - start; - - return true; -} - -bool update_animation(anim_handle_t *anim, double current, int *value) -{ - IV_ASSERT(anim != NULL); - IV_ASSERT(anim->transit_func != NULL); - - if (current >= anim->duration) { - *value = anim->t_start + anim->t_varing; - MSG_IVUG_MED("End Start:%f Varing:%f Duration=%f", - anim->t_start, anim->t_varing, anim->duration); - - MSG_IVUG_MED("End Current=%f Value=%d", current, *value); - - return false; /* End of animation */ - } - - MSG_IVUG_MED("Start:%f Varing:%f Duration=%f Current=%f", anim->t_start, - anim->t_varing, anim->duration, current); - - *value = (int)anim->transit_func(current, anim->t_start, anim->t_varing, - anim->duration); - - MSG_IVUG_MED("Value = %d", *value); - - return true; -} diff --git a/main/src/effect/ivug-effect.c b/main/src/effect/ivug-effect.c deleted file mode 100755 index ea17ee5..0000000 --- a/main/src/effect/ivug-effect.c +++ /dev/null @@ -1,201 +0,0 @@ -/* - * 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 "ivug-common.h" -#include "ivug-effect.h" - -#define SIN_TABLE_NUM 91 - -/* Animation acceleration table */ -static const float const EFFECT_SIN_TABLE[SIN_TABLE_NUM] = { - 0.0000f, 0.0174f, 0.0349f, 0.0523f, 0.0698f, - 0.0872f, 0.1045f, 0.1219f, 0.1392f, 0.1564f, - 0.1736f, 0.1908f, 0.2079f, 0.2249f, 0.2419f, - 0.2588f, 0.2756f, 0.2924f, 0.3090f, 0.3256f, - 0.3420f, 0.3584f, 0.3746f, 0.3907f, 0.4067f, - 0.4226f, 0.4384f, 0.4540f, 0.4695f, 0.4848f, - 0.5000f, 0.5150f, 0.5299f, 0.5446f, 0.5592f, - 0.5736f, 0.5878f, 0.6018f, 0.6157f, 0.6293f, - 0.6528f, 0.6561f, 0.6691f, 0.6820f, 0.6947f, - 0.7071f, 0.7193f, 0.7314f, 0.7431f, 0.7547f, - 0.7660f, 0.7772f, 0.7880f, 0.7986f, 0.8090f, - 0.8191f, 0.8290f, 0.8387f, 0.8480f, 0.8571f, - 0.8660f, 0.8746f, 0.8829f, 0.8910f, 0.8988f, - 0.9063f, 0.9135f, 0.9205f, 0.9272f, 0.9336f, - 0.9397f, 0.9455f, 0.9511f, 0.9563f, 0.9613f, - 0.9659f, 0.9703f, 0.9744f, 0.9781f, 0.9816f, - 0.9848f, 0.9877f, 0.9903f, 0.9926f, 0.9945f, - 0.9962f, 0.9976f, 0.9986f, 0.9994f, 0.9998f, - 1.0f -}; - -#define SLIDESHOW_ANI_TIME (1.0f) - - -static Eina_Bool -_on_effect_animator(void *data) -{ - IV_ASSERT( data != NULL); - Effect_Engine *engine = data; - - int value = 0; - - if ( update_animation(engine->anim, ecore_loop_time_get() - engine->t_base, &value) == false ) // If last frame - { - engine->animator = NULL; - - MSG_EFFECT_HIGH("Last effect frame. value=%d", value); - - engine->func.animate(engine->eng_data, value); // Draw last frame. - // Inform to user. - if ( engine->pFinishedCB ) - { - engine->pFinishedCB(engine->ClientData); - } - - return ECORE_CALLBACK_CANCEL; - } - - engine->func.animate(engine->eng_data, value); - - return ECORE_CALLBACK_RENEW; -} - - -bool ivug_effect_init(Effect_Engine *engine, Evas_Object *src, Evas_Object *dst, int w, int h, int rotation) -{ - IV_ASSERT(engine != NULL ); - - void *data = engine->func.init(src, dst, w, h, rotation); - if (data == NULL) { - MSG_EFFECT_ERROR("init returned data is NULL"); - - return false; - } - - engine->eng_data = data; - - engine->anim = create_animation(); - return true; -} - -bool ivug_effect_start(Effect_Engine *engine, FuncFinished pFunc, void *data) -{ - ivug_retvm_if(engine == NULL, false, "engine is NULL"); - - IV_ASSERT(engine->func.animate != NULL); - IV_ASSERT(engine->eng_data != NULL); - -// Set up slide show animator - engine->t_base = ecore_loop_time_get(); - - double duration = SLIDESHOW_ANI_TIME; - - if (engine->func.get_duration ) - { - duration = engine->func.get_duration(engine->eng_data); - } - - set_animation_type(engine->anim, ANIM_TYPE_LINEAR); - set_animation(engine->anim, 0, 100, duration); // 0~100% during 1 seconds - - engine->pFinishedCB = pFunc; - engine->ClientData = data; - - if (engine->animator == NULL) - { - engine->animator = ecore_animator_add(_on_effect_animator, engine); - } - - return true; -} - -bool ivug_effect_pause(Effect_Engine *engine) -{ -/* Unused. */ - return true; -} - -bool ivug_effect_resume(Effect_Engine *engine) -{ -/* Unused. */ - return true; -} - -bool ivug_effect_finalize(Effect_Engine *engine) -{ - ivug_retvm_if(engine == NULL, false, "engine is NULL"); - - if ( engine->animator ) - { - ecore_animator_del(engine->animator); - engine->animator = NULL; - } - - if (engine->eng_data) - { - if (engine->func.finalize) - { - MSG_EFFECT_HIGH("finalize"); - engine->func.finalize(engine->eng_data); - } - else - { - MSG_EFFECT_ERROR("engine->func.finalize is NULL"); - } - - engine->eng_data = NULL; - } - else - { - MSG_EFFECT_ERROR("engine->eng_data is NULL"); - } - - if ( engine->anim ) - { - delete_animation(engine->anim); - } - - free(engine); - engine = NULL; - - return true; -} - -Effect_Engine *ivug_effect_add(Effect_Type type) -{ - Effect_Engine *eng = NULL; - - switch (type) { - case EFFECT_SLIDE: - eng = ivug_slide_add(); - break; - - default: - MSG_EFFECT_ERROR("Unknown effect type=%d", type); - return NULL; - break; - } - - if (eng == NULL) - { - MSG_EFFECT_ERROR("Cannot create effect enigne. type=%d", type); - return NULL; - } - - return eng; -} diff --git a/main/src/effect/ivug-slide.c b/main/src/effect/ivug-slide.c deleted file mode 100755 index adb38f9..0000000 --- a/main/src/effect/ivug-slide.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - * 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 "ivug-common.h" -#include "ivug-effect.h" - - -typedef struct { - Evas_Object *src; - Evas_Object *dst; - - int screen_w; - int screen_h; -} Priv_Data; - - -static Effect_Data __ivug_slide_init(Evas_Object *src, Evas_Object *dst, int screen_w, int screen_h, int rotation) -{ - Priv_Data *pData = calloc(1, sizeof(Priv_Data)); - IV_ASSERT(pData != NULL); - - pData->src = src; - pData->dst = dst; - - pData->screen_w = screen_w; - pData->screen_h = screen_h; - - evas_object_stack_below(dst, src); - - evas_object_move(pData->src, 0, 0); - -// ivug_slider_item_move(sd->slide[NEXT_SLIDE], x + sd->slide[CENTER_SLIDE]->w + IMAGE_BETWEEN_MARGIN , y); - - return (Effect_Data)pData; -} - -static void __ivug_slide_anim(Effect_Data data, double percent) -{ - Priv_Data *pData = (Priv_Data *)data; - - int first = 0; - int last = -pData->screen_w -IMAGE_BETWEEN_MARGIN; - - int value = (double)first * (1.0f - percent / 100.0f) + (double)last * (percent / 100.0f); - - MSG_EFFECT_MED("Slide animation. Value=%d %f", value, percent); - - Evas_Coord ox, oy, ow, oh; - evas_object_geometry_get(pData->src, &ox, &oy, &ow, &oh); - - evas_object_move(pData->src, value, oy); - evas_object_move(pData->dst, value + ow + IMAGE_BETWEEN_MARGIN, oy); - -} - -static void __ivug_slide_pause(Effect_Data data) -{ - -} - -static void __ivug_slide_resume(Effect_Data data) -{ - -} - -static void __ivug_slide_finialize(Effect_Data data) -{ - Priv_Data *pData = (Priv_Data *)data; - - free(pData); - -} - -static double __ivug_slide_get_duration(Effect_Data data) -{ - return 0.2f; -} - - - -Effect_Engine *ivug_slide_add(void) -{ - Effect_Engine *eng_slide = calloc(1, sizeof(Effect_Engine)); - ivug_retvm_if(eng_slide == NULL, NULL, "calloc failed"); - - eng_slide->func.init = __ivug_slide_init; - eng_slide->func.animate = __ivug_slide_anim; - eng_slide->func.pause = __ivug_slide_pause; - eng_slide->func.resume = __ivug_slide_resume; - eng_slide->func.finalize = __ivug_slide_finialize; - eng_slide->func.get_duration = __ivug_slide_get_duration; - - return eng_slide; -} diff --git a/main/src/effect/template.c b/main/src/effect/template.c deleted file mode 100755 index 22868eb..0000000 --- a/main/src/effect/template.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * 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 "ivug-common.h" -#include "ivug-effect.h" - - -typedef struct { - Evas_Object *src; - Evas_Object *dst; - - Evas_Object *object; - Evas_Object *orig_cliper; - - Evas_Object *cliper; - - int screen_w; - int screen_h; -} effect_data; - - -static Effect_Data __ivug_init(Evas_Object *src, Evas_Object *dst, int screen_w, int screen_h, int rotation) -{ - IVUG_FUNC_ENTER(); - - IVUG_FUNC_LEAVE(); -} - -static void __ivug_anim(Effect_Data data, double percent) -{ -/* IVUG_FUNC_ENTER(); */ - -/* IVUG_FUNC_LEAVE(); */ -} - -static void __ivug_pause(Effect_Data data) -{ - IVUG_FUNC_ENTER(); - - IVUG_FUNC_LEAVE(); -} - -static void __ivug_resume(Effect_Data data) -{ - IVUG_FUNC_ENTER(); - - IVUG_FUNC_LEAVE(); -} - -static void __ivug_spin_finialize(Effect_Data data) -{ - IVUG_FUNC_ENTER(); - - IVUG_FUNC_LEAVE(); -} - -Effect_Engine *ivug_xxx_add(void) -{ - Effect_Engine *eng_spin = calloc(1, sizeof(Effect_Engine)); - ivug_retvm_if(eng_spin == NULL, NULL, "calloc failed"); - - eng_spin->func.init = &__ivug_init; - eng_spin->func.animate = &__ivug_anim; - eng_spin->func.pause = &__ivug_pause; - eng_spin->func.resume = &__ivug_resume; - eng_spin->func.finalize = &__ivug_finialize; - - return eng_spin; -} diff --git a/main/src/ug-image-viewer.c b/main/src/ug-image-viewer.c index 44958fd..ab2377f 100755 --- a/main/src/ug-image-viewer.c +++ b/main/src/ug-image-viewer.c @@ -1,37 +1,98 @@ -/* - * 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 + #include /*EFL*/ #include "ivug-common.h" //common #include "ivug-util.h" -#include "ivug-main.h" #include "ivug-main-view.h" #include "ivug-setas-view.h" +#include "ivug-crop-ug.h" #include "ivug-details-view.h" -#include "ivug-slider.h" + +#include "ivug-callback.h" +#include "ivug-context.h" #include "ug-image-viewer.h" -#include "ivug-data.h" #include "ivug-parameter.h" +static void _on_base_resize(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Evas_Coord x,y,w,h; + evas_object_geometry_get(obj, &x, &y, &w, &h); + + MSG_IMAGEVIEW_HIGH("Base layout resized geomtery XYWH(%d,%d,%d,%d) angle=%d", x, y, w, h, elm_win_rotation_get(ug_get_window())); +} + +static void _on_base_move(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Evas_Coord x,y,w,h; + evas_object_geometry_get(obj, &x, &y, &w, &h); + + MSG_IMAGEVIEW_HIGH("Base layout moved geomtery XYWH(%d,%d,%d,%d) angle=%d", x, y, w, h, elm_win_rotation_get(ug_get_window())); +} + +static void _on_receive_mouse_down (void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + MSG_MAIN_HIGH("Base layout clicked : %s Layer=%d",evas_object_name_get(obj), evas_object_layer_get(obj)); +} + +static void _print_render_method(Evas *e) +{ + IV_ASSERT(e != NULL ); + + Eina_List *engines, *l; + int cur_id; + int id; + char *name; + + engines = evas_render_method_list (); + if (!engines) { + MSG_IMAGEVIEW_ERROR("No engine is specified"); + return; + } + + cur_id = evas_output_method_get (e); + + EINA_LIST_FOREACH (engines, l, name) { + id = evas_render_method_lookup (name); + if (name && id == cur_id) + { + MSG_IMAGEVIEW_HIGH("Render method is %s", name); + break; + } + } + +} + +static void _on_render_post(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + MSG_IMAGEVIEW_HIGH("***************render_post***************"); +} + +static void _on_render_pre(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + MSG_IMAGEVIEW_HIGH("***************render_pre***************"); +} + static Evas_Object *create_fullview(Evas_Object *win, struct ug_data *ugd) { Evas_Object *base; @@ -42,7 +103,7 @@ static Evas_Object *create_fullview(Evas_Object *win, struct ug_data *ugd) Eina_Bool ret; ret = elm_layout_file_set(base , EDJ_PATH"/ivug-base.edj", "ivug_base" ); - + evas_object_name_set(base, "Base layout"); if ( ret == EINA_FALSE) { MSG_IMAGEVIEW_HIGH("Cannot set layout. EDJ=%s Group=%s", EDJ_PATH"/ivug-base.edj", "ivug_base"); @@ -65,16 +126,20 @@ static Evas_Object *create_frameview(Evas_Object *parent, struct ug_data *ugd) /* Create Frame view */ base = elm_layout_add(parent); + evas_object_name_set(base, "Base layout frame"); elm_layout_theme_set(base, "layout", "application", "default"); return base; } -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) { struct ug_data *ugd; - PERF_CHECK_BEGIN("On Create"); + PERF_CHECK_END(LVL0, "UG_MODULE_INIT -> On Create"); + + PERF_CHECK_BEGIN(LVL0, "On Create"); MSG_IMAGEVIEW_HIGH("Image Viewer : %s ug=0x%08x", __func__, ug); @@ -96,25 +161,27 @@ static void *on_create(struct ui_gadget *ug, enum ug_mode mode, bundle *data, vo return NULL; } - PERF_CHECK_BEGIN(LVL1 "main_init"); + PERF_CHECK_BEGIN(LVL1, "init context"); //init - if (!ivug_main_init(ug)) + if (!ivug_context_init(ug)) { MSG_IMAGEVIEW_ERROR("ivug_main_init error"); return NULL; } - PERF_CHECK_END(LVL1 "main_init"); + PERF_CHECK_END(LVL1, "init context"); - PERF_CHECK_BEGIN(LVL1 "parse bundle"); + PERF_CHECK_BEGIN(LVL1, "parse bundle"); - ugd->ivug_param = ivug_param_create_from_bundle(data); + ugd->ivug_param = ivug_param_create_from_bundle(service); if ( ugd->ivug_param == NULL ) { MSG_IMAGEVIEW_ERROR("Cannot parse parameter"); - ivug_main_deinit(ug); + ivug_context_deinit(ug); return NULL; } - PERF_CHECK_END(LVL1 "parse bundle"); + PERF_CHECK_END(LVL1, "parse bundle"); + + PERF_CHECK_BEGIN(LVL1, "creating base"); //create base if (mode == UG_MODE_FULLVIEW) @@ -127,6 +194,7 @@ static void *on_create(struct ui_gadget *ug, enum ug_mode mode, bundle *data, vo MSG_IMAGEVIEW_MED("create base layout for FrameView"); ugd->base = create_frameview(ug_get_window(), ugd); } + PERF_CHECK_END(LVL1, "creating base"); if ( ugd->base == NULL ) { @@ -134,14 +202,60 @@ static void *on_create(struct ui_gadget *ug, enum ug_mode mode, bundle *data, vo return NULL; } + MSG_IMAGEVIEW_HIGH("UG base created : 0x%08x", ugd->base); + evas_object_event_callback_add(ugd->base, EVAS_CALLBACK_MOUSE_DOWN, _on_receive_mouse_down, NULL); + + evas_object_event_callback_add(ugd->base, EVAS_CALLBACK_RESIZE, _on_base_resize, NULL); + evas_object_event_callback_add(ugd->base, EVAS_CALLBACK_MOVE, _on_base_move, NULL); + + evas_object_event_callback_add(ugd->base, EVAS_CALLBACK_RENDER_PRE, _on_render_pre, NULL); + evas_object_event_callback_add(ugd->base, EVAS_CALLBACK_RENDER_POST, _on_render_post, NULL); + if(ugd->ivug_param->mode == IVUG_MODE_SETAS) { MSG_IMAGEVIEW_HIGH("UG types=%d", ugd->ivug_param->setas_type); - if(ugd->ivug_param->setas_type == IVUG_SET_AS_UG_TYPE_WALLPAPER) + ivug_setas_mode setas_mode = IVUG_SETAS_UG; + if(ugd->ivug_param->bStandalone == true) + { + setas_mode = IVUG_SETAS_APPSVC; + } + + if(ugd->ivug_param->setas_type == IVUG_SET_AS_UG_TYPE_CALLER_ID) + { + ugd->setas_view = ivug_setas_view_callerid_ug_create(ugd->base, ugd->ivug_param->filepath, + setas_mode, ugd->ivug_param->width, ugd->ivug_param->height); + } + else if(ugd->ivug_param->setas_type == IVUG_SET_AS_UG_TYPE_VIDEO_CALL_ID) + { + ugd->setas_view = ivug_setas_view_video_call_id_ug_create(ugd->base, ugd->ivug_param->filepath, + setas_mode, ugd->ivug_param->width, ugd->ivug_param->height); + } + else if(ugd->ivug_param->setas_type == IVUG_SET_AS_UG_TYPE_WALLPAPER) { // From Wall paper in Setting - ugd->setas_view = ivug_setas_view_screen_ug_create(ugd->base, ugd->ivug_param->filepath); + if(setas_mode == IVUG_SETAS_APPSVC) + { + ugd->setas_view = ivug_setas_view_screen_ug_create(ugd->base, ugd->ivug_param->filepath, + setas_mode, IVUG_CTRLBAR_SET_SCREEN_HOME); + } + else + { + ugd->setas_view = ivug_setas_view_screen_ug_create(ugd->base, ugd->ivug_param->filepath, + setas_mode, IVUG_CTRLBAR_SET_SCREEN_UNDEFINED); + } + } + else if(ugd->ivug_param->setas_type == IVUG_SET_AS_UG_TYPE_CROP) + { + // Crop UG + ugd->crop_ug = ivug_crop_ug_create(ugd->base, + ugd->ivug_param->width, ugd->ivug_param->height, + ugd->ivug_param->bRatioFix, ugd->ivug_param->filepath); + } + else if(ugd->ivug_param->setas_type == IVUG_SET_AS_UG_TYPE_WALLPAPER_ONLY) + { + ugd->setas_view = ivug_setas_view_screen_ug_create(ugd->base, ugd->ivug_param->filepath, + setas_mode, IVUG_CTRLBAR_SET_SCREEN_HOME); } else { @@ -149,19 +263,22 @@ static void *on_create(struct ui_gadget *ug, enum ug_mode mode, bundle *data, vo return NULL; } - if(ugd->setas_view == NULL) + if(ugd->setas_view == NULL && ugd->crop_ug == NULL) { MSG_IMAGEVIEW_ERROR("SetAS UG creation failed Type:%d", ugd->ivug_param->setas_type); - ivug_main_deinit(ug); - if (ugd->base) - { - evas_object_del(ugd->base); - ugd->base = NULL; - } - return NULL; + goto ON_CREATE_ERROR; } - Evas_Object *layout = ivug_setas_view_object_get(ugd->setas_view); + Evas_Object *layout = NULL; + + if(ugd->setas_view) + { + layout = ivug_setas_view_object_get(ugd->setas_view); + } + else if(ugd->crop_ug) + { + layout = ivug_crop_ug_get_layout(ugd->crop_ug); + } elm_object_part_content_set(ugd->base, "elm.swallow.content", layout); //swallow evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); @@ -170,59 +287,92 @@ static void *on_create(struct ui_gadget *ug, enum ug_mode mode, bundle *data, vo } else { - PERF_CHECK_BEGIN(LVL1 "main_view_create"); + PERF_CHECK_BEGIN(LVL1, "main_view_create"); ugd->main_view = ivug_main_view_create(ugd->base, ugd->ivug_param->mode, ugd->ivug_param->view_by); + PERF_CHECK_END(LVL1, "main_view_create"); + if (ugd->main_view == NULL) //set main view. { MSG_IMAGEVIEW_ERROR("Main View Layout Lading Fail"); - ivug_main_deinit(ug); - if (ugd->base) - { - evas_object_del(ugd->base); - ugd->base = NULL; - } - return NULL; + goto ON_CREATE_ERROR; } - PERF_CHECK_END(LVL1 "main_view_create"); - // Load list. + PERF_CHECK_BEGIN(LVL1, "main_view_load_list"); + if ( ivug_main_view_load_list(ugd->main_view, ugd->ivug_param) == false) { MSG_IMAGEVIEW_ERROR("Cannot load media list."); // Need popup? - ivug_main_deinit(ug); - if (ugd->base) - { - evas_object_del(ugd->base); - ugd->base = NULL; - } - return NULL; - + goto ON_CREATE_ERROR; } Evas_Object *layout = ivug_main_view_object_get(ugd->main_view); elm_object_part_content_set(ugd->base, "elm.swallow.content", layout); //swallow + evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_show(layout); - + PERF_CHECK_END(LVL1, "main_view_load_list"); } - PERF_CHECK_END("On Create"); + + PERF_CHECK_BEGIN(LVL1, "Force render"); + + evas_render(evas_object_evas_get(ugd->base)); + + PERF_CHECK_END(LVL1, "Force render"); + + PERF_CHECK_END(LVL0, "On Create"); + + PERF_CHECK_BEGIN(LVL0, "On Create -> On Start"); return ugd->base; + +ON_CREATE_ERROR: + if(ugd->main_view) + { + ivug_main_view_destroy(ugd->main_view); + } + ivug_context_deinit(ug); + if (ugd->base) + { + evas_object_del(ugd->base); + ugd->base = NULL; + } + return NULL; } -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) { + PERF_CHECK_END(LVL0, "On Create -> On Start"); + + PERF_CHECK_BEGIN(LVL0, "On Start"); + MSG_IMAGEVIEW_HIGH("Image Viewer : %s", __func__); + + if (!ug || !priv) + { + MSG_IMAGEVIEW_ERROR("Invalid UG. UG=0x%08x Priv=0x%08x", ug, priv); + return ; + } + + struct ug_data *ugd = (struct ug_data *)priv; + + if ( ugd->main_view ) + { + PERF_CHECK_BEGIN(LVL1, "main_view_start"); + ivug_main_view_start(ugd->main_view); + PERF_CHECK_END(LVL1, "main_view_start"); + } + + PERF_CHECK_END(LVL0, "On Start"); } -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) { MSG_IMAGEVIEW_HIGH("Image Viewer : %s", __func__); @@ -236,12 +386,12 @@ static void on_pause(struct ui_gadget *ug, bundle *data, void *priv) if ( ugd->main_view ) { - ivug_slider_stop_slide_show(ugd->main_view->slider); + ivug_main_view_pause(ugd->main_view); } } -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) { MSG_IMAGEVIEW_HIGH("Image Viewer : %s", __func__); @@ -255,18 +405,16 @@ static void on_resume(struct ui_gadget *ug, bundle *data, void *priv) if ( ugd->main_view ) { - ivug_main_view_update(ugd->main_view); - -// ivug_slider_resume_slide_show(ugd->main_view->slider); + ivug_main_view_resume(ugd->main_view); } } -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) { MSG_IMAGEVIEW_HIGH("Image Viewer : %s UG=0x%08x", __func__, ug); - PERF_CHECK_BEGIN("On Destroy"); + PERF_CHECK_BEGIN(LVL0, "On Destroy"); if (!ug || !priv) { @@ -277,17 +425,28 @@ static void on_destroy(struct ui_gadget *ug, bundle *data, void *priv) struct ug_data *ugd = (struct ug_data *)priv; MSG_IMAGEVIEW_HIGH("On Destroy : ug=0x%08x", ug); - //destroy main view. - if ( ugd->main_view ) - { - ivug_main_view_destroy(ugd->main_view); - ugd->main_view = NULL; - } if(ugd->setas_view) { + PERF_CHECK_BEGIN(LVL1, "SetAsView"); ivug_setas_view_destroy(ugd->setas_view); ugd->setas_view = NULL; + PERF_CHECK_END(LVL1, "SetAsView"); + } + + if(ugd->crop_ug) + { + ivug_crop_ug_destroy(ugd->crop_ug); + ugd->crop_ug = NULL; + } + + //destroy main view. + if ( ugd->main_view ) + { + PERF_CHECK_BEGIN(LVL1, "MainView"); + ivug_main_view_destroy(ugd->main_view); + ugd->main_view = NULL; + PERF_CHECK_END(LVL1, "MainView"); } //delete param. @@ -298,30 +457,66 @@ static void on_destroy(struct ui_gadget *ug, bundle *data, void *priv) } //finalize data - if ( !ivug_main_deinit(ug)) + PERF_CHECK_BEGIN(LVL1, "Context"); + if ( !ivug_context_deinit(ug)) { MSG_IMAGEVIEW_ERROR("ivug_main_deinit failed"); } + PERF_CHECK_END(LVL1, "Context"); if (ugd->base) { + PERF_CHECK_BEGIN(LVL1, "Base layout"); evas_object_del(ugd->base); ugd->base = NULL; + PERF_CHECK_END(LVL1, "Base layout"); } MSG_IMAGEVIEW_HIGH("Destroyed all ug"); - PERF_CHECK_END("On Destroy"); - + PERF_CHECK_END(LVL0, "On Destroy"); } +static bool _data_print(service_h service, const char *key, void *user_data) +{ + MSG_IVUG_HIGH(" %s", key); + + return true; +} -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) { MSG_IMAGEVIEW_HIGH("Image Viewer : %s UG=0x%08x", __func__, ug); //on message + + if (!ug || !priv) + { + MSG_IMAGEVIEW_ERROR("Invalid UG. UG=0x%08x Priv=0x%08x", ug, priv); + return; + } + + int ret = service_foreach_extra_data(service, _data_print, NULL); + + if(SERVICE_ERROR_NONE != ret) + { + MSG_IVUG_ERROR("service_foreach_extra_data ERROR"); + } + + struct ug_data *ugd = (struct ug_data *)priv; + + //ivug_msg_type msg_type = IVUG_MSG_NONE; + + if(ugd->main_view == NULL) + { + MSG_IMAGEVIEW_ERROR("main view is NULL"); + return; + } + + ivug_callback_call(gGetCallbackHandle(), service, NULL, NULL); + + return; } -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) { if (!ug || !priv) { @@ -330,8 +525,6 @@ static void on_event(struct ui_gadget *ug, enum ug_event event, bundle *data, vo } MSG_IMAGEVIEW_HIGH("Image Viewer : %s UG=0x%08x", __func__, ug); //on message - //struct ug_data *ugd = (struct ug_data *)priv; - switch (event) { case UG_EVENT_LOW_MEMORY: MSG_IMAGEVIEW_HIGH("Get Event : Low Memory"); @@ -342,6 +535,14 @@ static void on_event(struct ui_gadget *ug, enum ug_event event, bundle *data, vo case UG_EVENT_LANG_CHANGE: MSG_IMAGEVIEW_HIGH("Get Event : Language changed"); break; + + case UG_EVENT_ROTATE_PORTRAIT: + case UG_EVENT_ROTATE_LANDSCAPE: + case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN: + case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN: + // Rotate event is not used now.. plz, use only resized callback. + break; + default: MSG_IMAGEVIEW_ERROR("Unknown event type : %d", event); break; @@ -352,7 +553,7 @@ UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops) { struct ug_data *ugd; - MSG_IMAGEVIEW_HIGH("UG_MODULE_INIT"); + MSG_IMAGEVIEW_HIGH("UG_MODULE_INIT. Ver=12.0"); if (!ops) { @@ -367,7 +568,7 @@ UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops) return -1; } - PERF_INIT(); + IV_PERF_INIT(); ops->create = on_create; ops->start = on_start; @@ -379,6 +580,8 @@ UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops) ops->priv = ugd; ops->opt = UG_OPT_INDICATOR_ENABLE; + PERF_CHECK_BEGIN(LVL0, "UG_MODULE_INIT -> On Create"); + return 0; } @@ -400,9 +603,21 @@ UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops) MSG_IMAGEVIEW_HIGH("UG_MODULE_EXIT"); - PERF_SHOW_RESULT(stdout); +#ifdef TA_SAVETO_FILE + FILE *fp = NULL; + + fp = fopen(DATADIR"/"PACKAGE"/TimeAnal", "a"); + + IV_ASSERT(fp != NULL); + + PERF_SHOW_RESULT(fp); + + fclose(fp); +#else + PERF_SHOW_RESULT(stderr); +#endif - PERF_DEINIT(); + IV_PERF_DEINIT(); } diff --git a/main/src/ug-image-viewer.h b/main/src/ug-image-viewer.h index 412a53b..4c21b7c 100755 --- a/main/src/ug-image-viewer.h +++ b/main/src/ug-image-viewer.h @@ -1,25 +1,23 @@ -/* - * 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_IMAGE_VIEWER_H__ #define __UG_IMAGE_VIEWER_H__ #include -#include #include "ivug-common.h" @@ -30,11 +28,11 @@ typedef struct ug_data { // View Data; Ivug_MainView *main_view; Ivug_SetAsView *setas_view; + IvugCropUG *crop_ug; ivug_parameter* ivug_param; bool bUseBlackTheme; // TODO : SetAs view from setting does not use black theme - } _AppData; #ifdef __cplusplus @@ -48,3 +46,4 @@ extern "C" { #endif #endif /* __UG_IMAGE_VIEWER_H__ */ + diff --git a/main/src/util/ivug-file-info.c b/main/src/util/ivug-file-info.c deleted file mode 100755 index 6419761..0000000 --- a/main/src/util/ivug-file-info.c +++ /dev/null @@ -1,403 +0,0 @@ -/* - * 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 "ivug-common.h" - -#include //for exif -#include -#include -#include -#include - -#include "ivug-file-info.h" - -bool _get_video_gps_info(const char *filepath, double *latitude, double *longitude) -{ - IV_ASSERT(filepath != NULL); - IV_ASSERT(latitude != NULL); - IV_ASSERT(longitude != NULL); - - MMHandleType tag = (MMHandleType) NULL; - int err = -1; - char *err_msg = NULL; - double gps_value = 0.0; - - *latitude = 0.0; - *longitude = 0.0; - - err = mm_file_create_tag_attrs(&tag, filepath); - if (!tag) - { - MSG_UTIL_ERROR("mm_file_create_tag_attrs ERROR %s", filepath); - return false; - } - - err = mm_file_get_attrs(tag, &err_msg, MM_FILE_TAG_LATIDUE, &gps_value, NULL); - if (err == 0) - { - MSG_UTIL_HIGH("latitude: %f", gps_value); - if (gps_value != 0.0) - { - *latitude = gps_value; - } - } - else if (err_msg) - { - MSG_UTIL_ERROR("mm_file_get_attrs fails : %s", err_msg); - free(err_msg); - err_msg = NULL; - mm_file_destroy_tag_attrs(tag); - - return false; - } - - err = mm_file_get_attrs(tag, &err_msg, MM_FILE_TAG_LONGITUDE, &gps_value, NULL); - if (err == 0) - { - MSG_UTIL_HIGH("longitude: %f", gps_value); - if (gps_value != 0.0) - { - *longitude = gps_value; - } - } - else if (err_msg) - { - MSG_UTIL_ERROR("mm_file_get_attrs fails : %s", err_msg); - free(err_msg); - err_msg = NULL; - mm_file_destroy_tag_attrs(tag); - return false; - } - - mm_file_destroy_tag_attrs(tag); - return true; -} - -bool _get_image_gps_info(const char* filepath, double *latitude, double *longitude) -{ - IV_ASSERT(filepath != NULL); - IV_ASSERT(latitude != NULL); - IV_ASSERT(longitude != NULL); - -#define BUF_LEN (255) - - ExifData *ed = NULL; - ExifEntry *entry = NULL; - ExifIfd ifd; - ExifTag tag; - char buf[BUF_LEN+1] = {'\0',}; - - /** get exifdata*/ - ed = exif_data_new_from_file(filepath); - if (!ed) - { - return false; - } - - ifd = EXIF_IFD_GPS; - tag = EXIF_TAG_GPS_LATITUDE; - - /** get exifentry*/ - entry = exif_data_get_entry(ed, tag); - - if (!entry) - { - return false; - } - - /** get value of the entry*/ - if(exif_entry_get_value(entry, buf, BUF_LEN) == NULL) - { - exif_data_unref(ed); - return false; - } - - { - buf[strlen(buf)] = '\0'; - double tmp_arr[3] = { 0.0, 0.0, 0.0 }; - int count = 0; - char* p = strtok(buf, ", "); - /** split the buf by , */ - while(p != NULL) - { - tmp_arr[count] = atof(p); - count++; - p=strtok(NULL, ", "); - } - - if( count != 3 ) - { - MSG_UTIL_ERROR("Cannot get latitude info : %s", p); - exif_data_unref(ed); - return false; - } - *latitude = tmp_arr[0] + tmp_arr[1]/60 + tmp_arr[2]/3600; - } - - tag = EXIF_TAG_GPS_LONGITUDE; - - entry = exif_data_get_entry(ed, tag); - - /** get value of the entry*/ - if(exif_entry_get_value(entry, buf, BUF_LEN) == NULL) - { - exif_data_unref(ed); - return false; - } - - { - buf[strlen(buf)] = '\0'; - double tmp_arr[3] = { 0.0, 0.0, 0.0 }; - int count = 0; - char* p = strtok(buf, ", "); - /** split the buf by , */ - while(p != NULL) - { - tmp_arr[count] = atof(p); - count++; - p=strtok(NULL, ", "); - } - - if( count != 3 ) - { - MSG_UTIL_ERROR("Cannot get Longitude info : %s", p); - exif_data_unref(ed); - return false; - } - - *longitude = tmp_arr[0] + tmp_arr[1]/60 + tmp_arr[2]/3600; - } - - exif_data_unref(ed); - - return true; -} - - - -static bool _get_image_resolution(const char *path, int * /* OUT */ pWidth, int * /* OUT */pHeight) -{ - IV_ASSERT(path != NULL); - - int width = 0; - int height = 0; - - Evas *canvas; - Ecore_Evas *ee; - - ee = ecore_evas_buffer_new(1, 1); - if (!ee) - { - MSG_DETAIL_ERROR("Cannot get EVAS"); - return false; - } - - canvas = ecore_evas_get(ee); - - Evas_Object *img = evas_object_image_add(canvas); - - evas_object_image_file_set(img, NULL, NULL); - evas_object_image_load_orientation_set(img, EINA_TRUE); - evas_object_image_load_scale_down_set(img, 0); - - evas_object_image_file_set(img, path, NULL); // TODO : Error check - evas_object_image_size_get(img, &width, &height); - - evas_object_image_file_set(img, NULL, NULL); - evas_object_del(img); - - ecore_evas_free(ee); - - *pWidth = width; - *pHeight = height; - - MSG_DETAIL_HIGH("widht & height is [%d, %d]", width, height); - - return true; -} - - -static bool -_get_video_resolution(const char *path, int * /* OUT */ pWidth, int * /* OUT */pHeight) -{ - IV_ASSERT(path != NULL); - - int w = 0; - int h = 0; - int error_code = MM_ERROR_NONE; - - MMHandleType content = 0; - char *err_attr_name = NULL; - - error_code = mm_file_create_content_attrs(&content, path); - - if ( error_code != MM_ERROR_NONE ) - { - MSG_UTIL_ERROR("mm_file_create_content_attrs() failed : ret=0x%08x", error_code); - return false; - } - - error_code = MM_ERROR_NONE; - error_code = mm_file_get_attrs(content, &err_attr_name, - MM_FILE_CONTENT_VIDEO_WIDTH, &w, - MM_FILE_CONTENT_VIDEO_HEIGHT, &h, - NULL - ); - - if (error_code != MM_ERROR_NONE) - { - MSG_DETAIL_ERROR("mm_file_get_attrs() failed : ret=0x%08x", error_code); - MSG_DETAIL_ERROR("Error attribute name : %s", err_attr_name); - free(err_attr_name); - - error_code = mm_file_destroy_content_attrs(content); - if (error_code != 0) - { - MSG_DETAIL_ERROR("mm_file_destroy_content_attrs() failed : ret=0x%08x", error_code); - } - - return false; - } - - *pWidth = w; - *pHeight = h; - - error_code = mm_file_destroy_content_attrs(content); - if (error_code != 0) - { - MSG_DETAIL_ERROR("mm_file_destroy_content_attrs() failed : ret=0x%08x", error_code); - } - - return true; -} - -bool ivug_fileinfo_get_image_resolution(const char *path, int * /* OUT */ pWidth, int * /* OUT */pHeight) -{ - if ( path == NULL ) - { - MSG_UTIL_ERROR("Cannot get image resolution. path is NULL"); - return false; - } - - if(ivug_is_file_exist(path) == false) - { - MSG_UTIL_ERROR("%s : %s is not exist", __func__, path); - return false; - } - - return _get_image_resolution(path, pWidth, pHeight); -} - - -bool ivug_fileinfo_get_video_resolution(const char *path, int * /* OUT */ pWidth, int * /* OUT */pHeight) -{ - if ( path == NULL ) - { - MSG_UTIL_ERROR("Cannot get video resolution. path is NULL"); - return false; - } - - if(ivug_is_file_exist(path) == false) - { - MSG_UTIL_ERROR("%s : %s is not exist", __func__, path); - return false; - } - - return _get_video_resolution(path, pWidth, pHeight); -} - -bool ivug_fileinfo_get_video_gps_info(const char *path, double *latitude, double *longitude) -{ - if ( path == NULL ) - { - MSG_UTIL_ERROR("Cannot get video gps location. path is NULL"); - return false; - } - - if(ivug_is_file_exist(path) == false) - { - MSG_UTIL_ERROR("%s : %s is not exist", __func__, path); - return false; - } - - return _get_video_gps_info(path, latitude, longitude); -} - - -bool ivug_fileinfo_get_image_gps_info(const char* path, double *latitude, double *longitude) -{ - if ( path == NULL ) - { - MSG_UTIL_ERROR("Cannot get image gps location. path is NULL"); - return false; - } - - if(ivug_is_file_exist(path) == false) - { - MSG_UTIL_ERROR("%s : %s is not exist", __func__, path); - return false; - } - - return _get_image_gps_info(path, latitude, longitude); -} - - -char *ivug_fileinfo_get_file_extension(const char *path) -{ - if ( path == NULL ) - { - MSG_UTIL_ERROR("Cannot get file extension. path is NULL"); - return NULL; - } - - char *ext = NULL; - - ext = strrchr(path, '.'); - - if ( (ext != NULL) && ((ext+1) != NULL) ) - { - return strdup(ext + 1); - } - - return NULL; - -} - -char *ivug_fileinfo_get_mime_type(const char *path) -{ - if ( path == NULL ) - { - MSG_UTIL_ERROR("Cannot get mine type. path is NULL"); - return NULL; - } - - //check mine type. - char *mime_type = NULL; - - efreet_mime_init(); - const char *type = NULL; - type = efreet_mime_type_get(ecore_file_file_get(path)); - if ( type != NULL ) - { - mime_type = strdup(type); - } - efreet_mime_shutdown(); - - return mime_type; -} - - diff --git a/main/src/util/ivug-file-info.h b/main/src/util/ivug-file-info.h deleted file mode 100755 index ac8a3fa..0000000 --- a/main/src/util/ivug-file-info.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * 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 __IVUG_FILE_INFO_H__ -#define __IVUG_FILE_INFO_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - ivug_fileinfo_*() returns false when error. otherwise return true and fill proper value in [out] param -*/ -bool ivug_fileinfo_get_image_gps_info(const char* filepath, double * /* OUT */ latitude, double * /* OUT */ longitude); -bool ivug_fileinfo_get_video_gps_info(const char *filepath, double * /* OUT */ latitude, double * /* OUT */ longitude); - -bool ivug_fileinfo_get_video_resolution(const char *filepath, int * /* OUT */ pWidth, int * /* OUT */pHeight); -bool ivug_fileinfo_get_image_resolution(const char *filepath, int * /* OUT */ pWidth, int * /* OUT */pHeight); - - -/* - return file extension string. - - CAUTION : user should free returned string. -*/ -char *ivug_fileinfo_get_file_extension(const char *filepath); - - -/* - return mine type from file. - - CAUTION : user should free returned string. -*/ -char *ivug_fileinfo_get_mime_type(const char *path); - - -#ifdef __cplusplus -} -#endif - - -#endif // __IVUG_FILE_INFO_H__ - diff --git a/main/src/util/ivug-listpopup.c b/main/src/util/ivug-listpopup.c deleted file mode 100755 index 6ea395f..0000000 --- a/main/src/util/ivug-listpopup.c +++ /dev/null @@ -1,274 +0,0 @@ -/* - * 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 "ivug-common.h" -#include "ivug-listpopup.h" - - -#define POPUP_RESPONSE_NOT_SELECTED (-99) - - -typedef struct { - Evas_Object *popup; - - Evas_Smart_Cb response; - void* user_data; - -} Selectpopup; - - -static char * -_on_label_set(void *data, Evas_Object *obj, const char *part) -{ - IV_ASSERT( data != NULL); - - ivug_listpopup_item *item = (ivug_listpopup_item *)data; - - return strdup(item->caption); //dump -} - - -static void -_on_genlist_selected(void *data, Evas_Object *obj, void *event_info) -{ - Selectpopup *pData = data; - Evas_Object *genlist = obj; - Elm_Object_Item *genitem = (Elm_Object_Item *)event_info; - - IV_ASSERT( genlist != NULL); - - if (genitem == NULL) - { - MSG_MAIN_ERROR("genlist item is NULL"); - return; - } - - ivug_listpopup_item *item = (ivug_listpopup_item *)elm_object_item_data_get(genitem); - -// Call response - pData->response(pData->user_data, pData->popup, item); - -} - - -static ivug_listpopup_item *_dup_item(ivug_listpopup_item *item) -{ - ivug_listpopup_item *newitem = NULL; - - newitem = calloc(1, sizeof(ivug_listpopup_item)); - - newitem->index = item->index; - - if ( item->iconpath ) - newitem->iconpath = strdup(item->iconpath); - - if ( item->caption ) - newitem->caption = strdup(item->caption); // Should be freed - - newitem->data = item->data; - - return newitem; -} - - -static void _on_genlist_item_del(void *data, Evas_Object *obj) -{ - IV_ASSERT( data != NULL); - - ivug_listpopup_item *item = data; - - MSG_IMAGEVIEW_HIGH("Remove genlist item"); - - if ( item->caption ) - free(item->caption); - - if ( item->iconpath ) - free(item->iconpath); - - free(item); -} - - -static void -_on_popup_close(void *data, Evas_Object *obj, void *event_info) -{ - Selectpopup *pData = data; - - pData->response(pData->user_data, pData->popup, NULL); // Call user callback -} - -static void _on_popup_deleted(void * data, Evas * e, Evas_Object * obj, void * event_info) -{ - MSG_IMAGEVIEW_HIGH("Remove popup"); - - Selectpopup *pData = data; - - free(pData); -} - - - -typedef struct { - Eina_List *list; -} _ivug_listpopup_itemlist; - - -ivug_listpopup_itemlist ivug_listpopup_itemlist_new() -{ - _ivug_listpopup_itemlist *pList = malloc(sizeof(_ivug_listpopup_itemlist)); - IV_ASSERT(pList != NULL); - - pList->list = NULL; - - return (ivug_listpopup_itemlist)pList; -} - -unsigned int ivug_listpopup_itemlist_get_count(ivug_listpopup_itemlist items) -{ - _ivug_listpopup_itemlist *pList = items; - IV_ASSERT(pList != NULL); - - return eina_list_count(pList->list); -} - -ivug_listpopup_item *ivug_listpopup_itemlist_add(ivug_listpopup_itemlist items, int index, const char *iconpath, const char *caption, void *data, bool bDisabled) -{ - _ivug_listpopup_itemlist *pList = items; - IV_ASSERT(pList != NULL); - - ivug_listpopup_item *item = NULL; - - { - item = calloc(1, sizeof(ivug_listpopup_item)); - - item->index = index; - - if ( iconpath ) - item->iconpath = strdup(iconpath); - - if ( caption ) - item->caption = strdup(caption); // Should be freed - - item->data = data; - item->bDisabled = bDisabled; - } - - pList->list = eina_list_append(pList->list, item); - - return item; - - -} - -void ivug_listpopup_itemlist_free(ivug_listpopup_itemlist items) -{ - _ivug_listpopup_itemlist *pList = items; - IV_ASSERT(pList != NULL); - - ivug_listpopup_item *item = NULL; - - EINA_LIST_FREE(pList->list, item ) - { - if ( item->caption ) - free(item->caption); - - if ( item->iconpath ) - free(item->iconpath); - - free(item); - } - - free(pList); -} - - -Evas_Object *ivug_listpopup_show(Evas_Object *parent, const char* title, ivug_listpopup_itemlist items, Evas_Smart_Cb response, void* user_data) -{ - Evas_Object *popup; - -// create popup - popup = elm_popup_add(parent); - if (!popup) - { - MSG_IMAGEVIEW_ERROR("Error : popup create failed."); - return NULL; - } - - elm_object_style_set(popup, "menustyle"); - elm_object_part_text_set(popup, "title,text", title); - - evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_weight_set(popup, EVAS_HINT_FILL, EVAS_HINT_FILL); - - Evas_Object *btn_close = elm_button_add(popup); - elm_object_text_set(btn_close, IDS_CLOSE); - elm_object_part_content_set(popup, "button1", btn_close); - -// create genlist - Evas_Object *genlist; - static Elm_Genlist_Item_Class itc = {0,}; - - genlist = elm_genlist_add(popup); - - itc.version = ELM_GENLIST_ITEM_CLASS_VERSION; - itc.item_style = "1text"; - itc.func.text_get = _on_label_set; - itc.func.content_get = NULL; - itc.func.state_get = NULL; - itc.func.del = _on_genlist_item_del; - - 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); - - Selectpopup *pData = malloc(sizeof(Selectpopup)); - - pData->popup = popup; - pData->response = response; - pData->user_data = user_data; - - _ivug_listpopup_itemlist *pList = items; - - ivug_listpopup_item *pItem = NULL; - Eina_List *tmp; - Elm_Object_Item *gItem; - - - EINA_LIST_FOREACH(pList->list, tmp, pItem) - { - gItem = elm_genlist_item_append(genlist, &itc, _dup_item(pItem), NULL /* parent */, ELM_GENLIST_ITEM_NONE, _on_genlist_selected, pData); - - elm_object_item_disabled_set(gItem, pItem->bDisabled); - } - -// Put together - Evas_Object *box; - box = elm_box_add(popup); - evas_object_show(genlist); - elm_box_pack_end(box, genlist); - elm_object_content_set(popup, box); - - evas_object_smart_callback_add(btn_close, "clicked", _on_popup_close, pData); - - evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _on_popup_deleted, pData); - - evas_object_show(popup); - - return popup; - -} - - diff --git a/main/src/util/ivug-listpopup.h b/main/src/util/ivug-listpopup.h deleted file mode 100755 index 11715eb..0000000 --- a/main/src/util/ivug-listpopup.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * 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 __IVUG_LISTPOPUP_H__ -#define __IVUG_LISTPOPUP_H__ - -typedef struct { - int index; - - char *iconpath; - char *caption; - void *data; - - bool bDisabled; // Item is disabled when true. -} ivug_listpopup_item; - -typedef void *ivug_listpopup_itemlist; - -/* - Helper functions for ivug_listpopup_item -*/ -ivug_listpopup_itemlist ivug_listpopup_itemlist_new(); - -ivug_listpopup_item *ivug_listpopup_itemlist_add(ivug_listpopup_itemlist items, int index, const char *iconpath, const char *caption, void *data, bool bDisabled); - -void ivug_listpopup_itemlist_free(ivug_listpopup_itemlist items); - - - -/* - Create & Show popup including genlist. - - example - - void _on_selected(void *data, Evas_Object *obj, void *event_info) - { - Evas_Object *popup = genlist; - ivug_listpopup_item *item = event_info; - int nIndex = event_info; - - if ( nIndex == 1 ) - printf("1 is selected"); - - evas_object_del(popup); // Show destroy popup explicitly - mypopup = NULL; - } - - ... - { - ivug_listpopup_itemlist items = ivug_listpopup_itemlist_new(); - - ivug_listpopup_itemlist_add(items, 0, NULL, "Select me 1", NULL, false); - ivug_listpopup_itemlist_add(items, 1, NULL, "Select me 1", NULL, false); - ivug_listpopup_itemlist_add(items, 2, "/data/myicon.png", "Select me 1", NULL, false); - - mypopup = ivug_selectpopup_show(parent, "example", items, v, myData); - - eina_list_free(items); - } - - -*/ -Evas_Object *ivug_listpopup_show(Evas_Object *parent, const char* title, ivug_listpopup_itemlist items , Evas_Smart_Cb response, void* user_data); - - -#endif // __IVUG_LISTPOPUP_H__ - diff --git a/main/src/util/ivug-util.c b/main/src/util/ivug-util.c deleted file mode 100755 index 496f027..0000000 --- a/main/src/util/ivug-util.c +++ /dev/null @@ -1,286 +0,0 @@ -/* - * 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 "ivug-common.h" - -#include -#include -#include - -#include -#include -#include - -#include -#include - -/* - If filepath is web url, return TRUE. - -*/ -bool ivug_is_web_uri(const char* uri) -{ -//check file url type. local , http, ftp. - IV_ASSERT(uri != NULL); - - static const char* web_protocal_name[] = - { - "http://", - "ftp://", - NULL, - }; - - int i = 0; - while (web_protocal_name[i] != NULL) - { - if ( strlen(uri) > strlen(web_protocal_name[i]) ) - { - if (strncmp(uri, web_protocal_name[i], strlen(web_protocal_name[i])) == 0) - { - return true; - } - } - - i++; - } - - MSG_UTIL_MED("Not web uri. %s", uri); - - return false; -} - - -unsigned int get_distance(int prevX, int prevY, int X, int Y) -{ -#include - int dx = prevX - X; - int dy = prevY - Y; - - return sqrt(dx*dx + dy*dy); -} - - - -#define USE_ECORE_FILE - -#include - -/* - Remove fname file. - Returns true fname is not exist or removed sucessfully -*/ -bool ivug_remove_file(const char *filepath) -{ - char error_msg[256]; - if (ecore_file_exists(filepath) == EINA_FALSE) - { - MSG_UTIL_ERROR("Already removed.%s", filepath); - return true; - } - -#ifdef USE_ECORE_FILE - if ( ecore_file_unlink(filepath) == EINA_FALSE) - { - MSG_UTIL_ERROR("Cannot remove file : %s %s", filepath, strerror_r(errno, error_msg, sizeof(error_msg)) ); - return false; - } - - return true; -#else - if ( unlink(filepath) != 0 ) - { - MSG_UTIL_ERROR("Cannot remove file : %s %s", filepath, strerror_r(errno, error_msg, sizeof(error_msg)) ); - return false; - } - - return true; -#endif -} - -bool ivug_rename_file(const char *src, const char *dst) -{ - if (ecore_file_exists(src) == EINA_FALSE) - { - MSG_UTIL_ERROR("Source file is not exist : %s", src); - return false; - } - - if (dst == NULL) - { - MSG_UTIL_ERROR("Destination file is NULL"); - return false; - } - - - char error_msg[256]; - - if ( rename(src, dst) < 0) - { - MSG_UTIL_ERROR("Cannot rename from %s to %s : %s", src, dst, strerror_r(errno, error_msg, sizeof(error_msg)) ); - return false; - } - - return true; -} - -char * -ivug_mktemp(char* filepath, char*ext) -{ - ivug_retv_if(!filepath || !ext, NULL); - - MSG_IVUG_HIGH("filepath %s, ext %s", filepath, ext); - - char tempname[IVUG_MAX_FILE_PATH_LEN+1] = {0}; - snprintf(tempname, sizeof(tempname), "%s_0.%s",filepath, ext); - int i = 1; - -// TODO : Will implement with another algorithm - while(ecore_file_exists(tempname) == EINA_TRUE ) - { - snprintf(tempname, sizeof(tempname),"%s_%d.%s", filepath, i, ext); - i++; - } - - MSG_IVUG_HIGH( " tempname %s, i %d", tempname, i); - - return strdup(tempname); -} - - -/* - Check whether given filepath file exists - - CAUTION : filepath cannot be NULL. -*/ -bool ivug_is_file_exist(const char* filepath) -{ - IV_ASSERT(filepath != NULL); - - if ( ecore_file_exists(filepath) == EINA_TRUE) - { - return true; - } - - return false; -} - - -/* - Returns start pointer of filename within filepath. - No memory allocated in this function. so user do not free returned pointer. - - CAUTION : filepath cannot be NULL. -*/ -const char * ivug_get_filename(const char *filepath) -{ - if ( filepath == NULL ) - { - MSG_UTIL_WARN("File path is NULL"); - return "NULL"; - } - -#define DIRECORY_SPLITTER '/' - const char*pFileName = NULL; - - pFileName = strrchr(filepath, DIRECORY_SPLITTER); - pFileName = (NULL == pFileName)? "": (pFileName+1); - - return pFileName; -} - - -/* - - Media service utility - -*/ - -#include - -UUID ivug_get_album_id_from_filepath(const char *filepath) -{ - int ret = 0; - Mitem* item = NULL; - - MediaSvcHandle *dbhandle = NULL; - - int err = media_svc_connect(&dbhandle); - if (err != MB_SVC_ERROR_NONE) - { - MSG_UTIL_ERROR("DB open error. %d", err); - return NULL; - } - - ret = minfo_get_item(dbhandle, filepath, &item); //get cluster id - if (ret != MB_SVC_ERROR_NONE) - { - MSG_UTIL_ERROR("Cannot find file in media db for %s", filepath); - return NULL; // Invalid id - } - - UUID cluster_uuid = INVALID_UUID; - - cluster_uuid = uuid_assign(item->cluster_uuid); - - minfo_destroy_mtype_item(item); - - err = media_svc_disconnect(dbhandle); - if (err != MB_SVC_ERROR_NONE) - { - MSG_SDATA_ERROR("media service finalize error=%d", err); - } - - return cluster_uuid; - -} - -int ivug_prohibit_lcd_off(void) -{ - MSG_UTIL_MED("START : Sleep disabled"); - return pm_lock_state(LCD_NORMAL, GOTO_STATE_NOW, 0); -} - -int ivug_allow_lcd_off(void) -{ - MSG_UTIL_MED("END : Sleep disabled"); - return pm_unlock_state(LCD_NORMAL, PM_KEEP_TIMER); -} - -#define MIME_TYPE_LEN (255) -#define MIME_TYPE_3GPP "video/3gpp" -#define PATH_CAMERA_LOCAL "/opt/media/Camera shots" -#define PATH_CAMERA_SDCARD "/opt/storage/sdcard/Camera shots/" - -/* Video editor can start when video exist in camera folder and 3gp file format */ - -bool ivug_is_editable_video_file(char *filepath) -{ - MSG_UTIL_MED("path = %s", filepath); - if(strncmp(filepath, PATH_CAMERA_LOCAL, strlen(PATH_CAMERA_LOCAL)) == 0 - || strncmp(filepath, PATH_CAMERA_SDCARD, strlen(PATH_CAMERA_SDCARD)) == 0) - { - char mime_type[MIME_TYPE_LEN] = {0,}; - aul_get_mime_from_file(filepath, mime_type, sizeof(mime_type)); - MSG_UTIL_MED("mime type = %s", mime_type); - if(strcmp(mime_type, MIME_TYPE_3GPP) == 0) - { - return true; - } - } - return false; -} - diff --git a/main/src/util/ivug-util.h b/main/src/util/ivug-util.h deleted file mode 100755 index 0c07169..0000000 --- a/main/src/util/ivug-util.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * 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 __IVUG_UTIL_H__ -#define __IVUG_UTIL_H__ - -#include - - -#ifdef __cplusplus -extern "C" { -#endif - -/* - -*/ -bool ivug_is_web_uri(const char* uri); - -bool ivug_remove_file(const char *filepath); - -bool ivug_is_file_exist(const char* filepath); - -bool ivug_rename_file(const char *src, const char *dst); - -inline const char *ivug_get_filename(const char *filepath); - -inline unsigned int get_distance(int prevX, int prevY, int X, int Y); - -/* - Generate temporary file name with given path and extension. - returned value should free() by user. -*/ -char *ivug_mktemp(char* filepath, char*ext); - - -/* - Media service wrapper utility -*/ - -UUID ivug_get_album_id_from_filepath(const char *filepath); - - -/* - LCD sleep control. -*/ -int ivug_prohibit_lcd_off(void); -int ivug_allow_lcd_off(void); - - -/* - Get mime type from file path. - should free returned after use. -*/ - -bool ivug_is_editable_video_file(char *filepath); - -#ifdef __cplusplus -} -#endif - - - -#endif //__IVUG_UTIL_H__ - diff --git a/main/src/util/ivug-widget.c b/main/src/util/ivug-widget.c deleted file mode 100755 index fd43992..0000000 --- a/main/src/util/ivug-widget.c +++ /dev/null @@ -1,209 +0,0 @@ -/* - * 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 "ivug-common.h" -#include "ivug-widget.h" -#include - -#include - -static void _on_obj_deleted(void * data, Evas * e, Evas_Object * obj, void * event_info) -{ - char *szMsg = (char *)data; - IV_ASSERT(szMsg != NULL); - - MSG_MAIN_HIGH("On Object deleted. %s", szMsg); - - free(szMsg); -} - -void ivug_on_obj_deleted(Evas_Object* obj, char *msg, const char *func, int line) -{ - static char buf[1024]; - - sprintf(buf, "%s(L%d):%s", func, line, msg); - - evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, _on_obj_deleted, strdup(buf)); -} - -Evas_Object* ivug_bg_add(Evas_Object* parent, int r, int g, int b) -{ - IV_ASSERT(parent != NULL); - - Evas_Object *bg = elm_bg_add(parent); - evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(bg, EVAS_HINT_FILL, EVAS_HINT_FILL); - -// elm_win_resize_object_add(parent, bg); - - elm_bg_color_set(bg, r, g, b); - - evas_object_show(bg); - - return bg; -} - -Evas_Object * -ivug_layout_add(Evas_Object *win, const char *edj, const char *group) -{ - IV_ASSERT(win != NULL); - - Evas_Object *layout; - - layout = elm_layout_add(win); - - if ( layout == NULL ) - { - MSG_SETAS_ERROR("Cannot create layout"); - return NULL; - } - - if (elm_layout_file_set(layout, edj, group) == EINA_FALSE) - { - MSG_SETAS_ERROR("edj loading fail, filepath=%s Group=%s", edj, group); - evas_object_del(layout); - return NULL; - } - - evas_object_size_hint_expand_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_fill_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL); - -#ifdef USE_WIN_AS_PARENT - elm_win_resize_object_add( ug_get_window(), layout); -#else - Evas_Coord x, y, w, h; - evas_object_geometry_get(win, &x, &y, &w, &h); - - evas_object_move(layout, x, y); - evas_object_resize(layout, w, h); -#endif - - evas_object_show(layout); - return layout; -} - -Evas_Object* -ivug_default_layout_add( Evas_Object *win) -{ - IV_ASSERT(win != NULL); - - Evas_Object *layout; - layout = elm_layout_add(win); - - if ( layout == NULL ) - { - MSG_SETAS_ERROR("Cannot create layout"); - return NULL; - } - - if ( elm_layout_theme_set( layout, "layout", "application", "default") == EINA_FALSE) - { - MSG_SETAS_ERROR("theme set fail, layout/application/defaulty"); - evas_object_del(layout); - return NULL; - } - - evas_object_size_hint_expand_set( layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_fill_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL ); - -#ifdef USE_WIN_AS_PARENT - elm_win_resize_object_add( ug_get_window(), layout); -#else - Evas_Coord x, y, w, h; - evas_object_geometry_get(parent, &x, &y, &w, &h); - - evas_object_move(layout, x, y); - evas_object_resize(layout, w, h); -#endif - - evas_object_show(layout); - return layout; -} - - -Evas_Object *ivug_button_add(Evas_Object *parent, char *style, char *caption, Evas_Object *icon, OnClickCB pFunc, const void * data ) -{ - IV_ASSERT(parent != NULL); - - Evas_Object *btn; - - btn = elm_button_add(parent); - if ( btn == NULL ) - { - return NULL; - } - - if ( style ) - elm_object_style_set(btn, style); - - if ( caption ) - elm_object_text_set(btn, caption); - - if ( icon ) - elm_object_part_content_set(btn, "icon", icon); - - elm_object_focus_allow_set(btn, EINA_FALSE); - evas_object_propagate_events_set(btn, EINA_FALSE); - - evas_object_smart_callback_add(btn, "clicked", pFunc, (void*)data); - - return btn; -} - -Evas_Object *ivug_icon_add(Evas_Object *parent, char *edjname, char *groupname) -{ - Evas_Object *icon; - - icon = elm_icon_add(parent); - - if ( elm_icon_file_set(icon, edjname, groupname) == EINA_FALSE) - { - MSG_IVUG_ERROR("Cannot file set. EDJ=%s Group=%s", edjname, groupname); - evas_object_del(icon); - return NULL; - } - - evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); - elm_icon_resizable_set(icon, EINA_TRUE, EINA_TRUE); - evas_object_size_hint_expand_set(icon, 1, 1); - - return icon; -} - -Evas_Object *ivug_controlbar_add(Evas_Object *parent, const char *style) -{ - Evas_Object *toolbar = elm_toolbar_add(parent); - if (!toolbar) - { - MSG_MAIN_ERROR("create tool bar failed"); - return NULL; - } - elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND); - elm_object_style_set(toolbar, style); - - return toolbar; -} - - - -void -ivug_object_del(Evas_Object *obj) -{ - evas_object_del(obj); -} - - diff --git a/main/src/util/ivug-widget.h b/main/src/util/ivug-widget.h deleted file mode 100755 index 151ee1e..0000000 --- a/main/src/util/ivug-widget.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * 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 __IVUG_WIDGET_H__ -#define __IVUG_WIDGET_H__ - - -typedef void(*OnClickCB)(void *data, Evas_Object *obj, void *event_info); - -#ifdef __cplusplus -extern "C" { -#endif - -/* - Internal use only... use macro DELETE_LOG instead -*/ -void ivug_on_obj_deleted(Evas_Object* obj, char *msg, const char *func, int line); - - -#define DELETE_NOTIFY(obj) \ - ivug_on_obj_deleted(obj, #obj, __func__, __LINE__) - -/* - Create elm_bg with color - r,g,b -*/ -Evas_Object * -ivug_bg_add(Evas_Object* parent, int r, int g, int b); - -Evas_Object * -ivug_layout_add(Evas_Object *win, const char *edjname, const char *groupname); - -Evas_Object* -ivug_default_layout_add( Evas_Object *win); - -Evas_Object * -ivug_button_add(Evas_Object *parent, char *style, char *caption, Evas_Object *icon, OnClickCB pFunc, const void *data ); - -Evas_Object * -ivug_icon_add(Evas_Object *parent, char *edjname, char *groupname); - -Evas_Object * -ivug_controlbar_add(Evas_Object *parent, const char *style); - -void -ivug_object_del(Evas_Object *obj); - - -#ifdef __cplusplus -} -#endif - - -#endif // __IVUG_WIDGET_H__ - diff --git a/main/src/view/ivug-detail-info.c b/main/src/view/ivug-detail-info.c deleted file mode 100755 index 77061e3..0000000 --- a/main/src/view/ivug-detail-info.c +++ /dev/null @@ -1,437 +0,0 @@ -/* - * 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 "ivug-detail-info.h" - -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include "ivug-details-view.h" -#include - -#include "ivug-file-info.h" - - -#define NOMAL_BUF 128 - -#define DETAILS_DIR_PATH_LEN_MAX 4096 - -enum IVUG_SIZE_TYPE -{ - SIZE_BYTE = 0, - SIZE_KB, - SIZE_MB, - SIZE_GB -}; - -/* - Shuld free returned value after use -*/ -static char* -_get_icu_time_string(const char *locale, const char *customSkeleton, const char *timezone, UDate date) -{ -#define UG_ICU_ARR_LENGTH 256 - - IV_ASSERT(customSkeleton != NULL); - IV_ASSERT(timezone != NULL); - - /* - Copy a byte string encoded in the default codepage to a ustring. - Copies at most n characters. The result will be null terminated if the length of src is less than n. Performs a host byte to UChar conversion - */ - UChar ucustomSkeleton[UG_ICU_ARR_LENGTH] = {0,}; - - if(u_uastrncpy(ucustomSkeleton, customSkeleton, UG_ICU_ARR_LENGTH) == NULL) - { - MSG_UTIL_ERROR("u_uastrncpy() error."); - return NULL; - } - - UChar utimezone[UG_ICU_ARR_LENGTH] = {0,}; - - if ( u_uastrncpy(utimezone, timezone, UG_ICU_ARR_LENGTH) == NULL ) - { - MSG_UTIL_ERROR("u_uastrncpy() error."); - return NULL; - } - - UErrorCode status = U_ZERO_ERROR; - UDateTimePatternGenerator *generator; - UDateFormat *formatter; - - UChar bestPattern[UG_ICU_ARR_LENGTH] = {0,}; - UChar formatted[UG_ICU_ARR_LENGTH] = {0,}; - char formattedString[UG_ICU_ARR_LENGTH] = {0,}; - int32_t bestPatternLength, formattedLength; - - ucal_setDefaultTimeZone(utimezone , &status); - - if (U_FAILURE(status)) - { - MSG_UTIL_ERROR("ucal_setDefaultTimeZone() is failed"); - return NULL; - } - - uloc_setDefault(getenv("LC_TIME"), &status); - - if (U_FAILURE(status)) - { - MSG_UTIL_ERROR("ucal_setDefaultTimeZone() is failed"); - return NULL; - } - - generator = udatpg_open(locale, &status); - if(generator == NULL) - { - return NULL; - } - - bestPatternLength = udatpg_getBestPattern(generator, ucustomSkeleton, u_strlen(ucustomSkeleton), bestPattern, UG_ICU_ARR_LENGTH, &status); - if(bestPatternLength <= 0) - { - return NULL; - } - - formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale, NULL, -1, bestPattern, -1, &status); - if(formatter == 0) - { - return NULL; - } - - formattedLength = udat_format(formatter, date, formatted, UG_ICU_ARR_LENGTH, NULL, &status); - if(formattedLength <= 0) - { - return NULL; - } - - u_austrcpy(formattedString, formatted); - udatpg_close(generator); - udat_close(formatter); - - if(strlen(formattedString) == 0) - { - return NULL; - } - - return strdup(formattedString); -} - - -static char* -_get_icu_date(time_t mtime) -{ -#define UG_DATE_FORMAT_12 "yMMMdhms" -#define UG_DATE_FORMAT_24 "yMMMdHms" - - char* skeleton = NULL; - - enum appcore_time_format timeformat; - - int ret = appcore_get_timeformat(&timeformat); - if(ret == -1) - { - MSG_DETAIL_ERROR("Cannot get timeformat."); - timeformat = APPCORE_TIME_FORMAT_12; // Default value. -// Go through - } - - if(timeformat == APPCORE_TIME_FORMAT_12) - { - skeleton = UG_DATE_FORMAT_12; - } - else if(timeformat == APPCORE_TIME_FORMAT_24) - { - skeleton = UG_DATE_FORMAT_24; - } - else - { - MSG_DETAIL_ERROR("Invalid time format : %d", timeformat); - skeleton = UG_DATE_FORMAT_12; // Default value. - } - - char *locale = vconf_get_str(VCONFKEY_REGIONFORMAT); /* eg. en_US.UTF-8*/ - if(locale == NULL) - { - MSG_DETAIL_ERROR("Cannot get region format."); - locale = "en_US.UTF-8"; // Default value. - } - - char *timezone = NULL; - - timezone = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID); // eg Asia/Seoul - if(timezone == NULL) - { -// TODO : How to get default time zone???? - MSG_DETAIL_ERROR("Cannot get time zone"); - return NULL; - } - - MSG_DETAIL_HIGH("Locale:%s TimeZone:%s TimeFormat:%s", locale, skeleton, timezone); - - char* datestr = NULL; - - datestr = _get_icu_time_string(locale, skeleton, timezone, (UDate)mtime * 1000); - - if(datestr == NULL) - { - MSG_DETAIL_ERROR("Cannot get time string"); - return NULL; - } - - MSG_DETAIL_HIGH("ICU Date : %s", datestr); - return datestr; - -} - - - - -static char * -_get_filesize_string(size_t size) -{ -#define FILE_SIZE_LEN_MAX 64 -#define BASIC_SIZE 1024 //used for file size check - - int count = 0; - - unsigned long int lsize = (unsigned long int)size; - - char *tmp = (char *)calloc(1, sizeof(char)*FILE_SIZE_LEN_MAX + 1); - if ( tmp == NULL) - { - return NULL; - } - - while(size >= ( BASIC_SIZE ) ) - { - lsize = size; - size /= BASIC_SIZE; - count++; - } - - float remain = ((float)lsize/BASIC_SIZE) - size; - - if(count == SIZE_BYTE) - { - snprintf(tmp,FILE_SIZE_LEN_MAX,"%zu B", size); - } - else if(count == SIZE_KB) - { - snprintf(tmp,FILE_SIZE_LEN_MAX,"%zu KB", size); - } - else if(count == SIZE_MB) - { - // need another algorithm - snprintf(tmp,FILE_SIZE_LEN_MAX,"%.1f MB", size+remain); - } - else if(count == SIZE_GB) - { - snprintf(tmp,FILE_SIZE_LEN_MAX,"%.1f GB", size+remain); - } - - MSG_DETAIL_HIGH("Size = %lu, OrigSize=%zu", lsize, size); - return tmp; -} - -void -ivug_details_info_set_file_information(ivug_file_info_t * const pFileInfo, const char *path) -{ - ivug_ret_if( NULL == pFileInfo ); - ivug_ret_if( NULL == path ); - -/*** get file path*/ - pFileInfo->filepath = strdup(path); - - struct stat statbuf; - - if(stat(path,&statbuf) == -1) - { - MSG_DETAIL_ERROR("Cannot get stat()"); - return ; - } - - pFileInfo->size = statbuf.st_size; - pFileInfo->date = statbuf.st_mtime; - - pFileInfo->create_date = _get_icu_date(pFileInfo->date); - - if ( pFileInfo->create_date == NULL ) - { - pFileInfo->create_date = strdup(IDS_N_A); - } - - pFileInfo->file_ext = ivug_fileinfo_get_file_extension(path); - - if ( pFileInfo->file_ext == NULL ) - { - pFileInfo->file_ext = strdup(IDS_UNKNOWN); - } - - pFileInfo->filesize = _get_filesize_string(pFileInfo->size); - - MSG_DETAIL_HIGH("Basic Info : ext=%s size=%s", pFileInfo->file_ext, pFileInfo->filesize); - - return ; - -} - - -void -ivug_details_info_set_gps_info(ivug_file_info_t * const pFileInfo, const char *path) -{ -#define UG_EXIF_ARR_LENGTH 255 - - ivug_retm_if(!pFileInfo, "data is NULL"); - ivug_retm_if(!path, "path is NULL"); - - pFileInfo->longitude = calloc(1, sizeof(char)*UG_EXIF_ARR_LENGTH); - if(pFileInfo->longitude == NULL) - { - return; - } - - pFileInfo->latitude = calloc(1, sizeof(char)*UG_EXIF_ARR_LENGTH); - if(pFileInfo->latitude == NULL) - { - return; - } - - - double longtitude = 0.0; - double latitude = 0.0; - - bool bret = false; - - if(pFileInfo->file_type == IVUG_DETAIL_IMAGE_TYPE) // this will be removed!!!! - { - bret = ivug_fileinfo_get_image_gps_info(path, &latitude, &longtitude); - } - else if(pFileInfo->file_type == IVUG_DETAIL_VIDEO_TYPE) - { - bret = ivug_fileinfo_get_video_gps_info(path, &latitude, &longtitude); - } - - if ( bret == false) - { - latitude = 0; - longtitude = 0; - } - - if(latitude != 0.0) - { - snprintf(pFileInfo->latitude, UG_EXIF_ARR_LENGTH, "%.5f", latitude); - } - else - { - snprintf(pFileInfo->latitude, UG_EXIF_ARR_LENGTH, "%s", IDS_UNKNOWN); - } - if(longtitude != 0.0) - { - snprintf(pFileInfo->longitude, UG_EXIF_ARR_LENGTH, "%.5f", longtitude); - } - else - { - snprintf(pFileInfo->longitude, UG_EXIF_ARR_LENGTH, "%s", IDS_UNKNOWN); - } -} - -void -ivug_details_info_set_resolution(ivug_file_info_t * const pFileInfo, const char *path, int stype) -{ - ivug_retm_if(!pFileInfo, "data is NULL"); - ivug_retm_if(!path, "path is NULL"); - - MSG_DETAIL_HIGH("slide type is %d", stype); - - pFileInfo->resolution = (char *)malloc(sizeof(char)*NOMAL_BUF+1); - if(pFileInfo->resolution == NULL) - { - return ; - } - memset(pFileInfo->resolution,0,(sizeof(char)* NOMAL_BUF + 1)); - - - int width, height; - - switch(stype) - { - case SLIDE_TYPE_IMAGE: - pFileInfo->file_type = IVUG_DETAIL_IMAGE_TYPE; - - if ( ivug_fileinfo_get_image_resolution(path, &width, &height) == false) - { - snprintf(pFileInfo->resolution, NOMAL_BUF, "%s", IDS_N_A); - } - else - { - snprintf(pFileInfo->resolution, NOMAL_BUF,"%dX%d", width, height); - } - - break; - - /* Video type */ - case SLIDE_TYPE_VIDEO: - pFileInfo->file_type = IVUG_DETAIL_VIDEO_TYPE; - - if ( ivug_fileinfo_get_video_resolution(path, &width, &height) == false) - { - snprintf(pFileInfo->resolution, NOMAL_BUF, "%s", IDS_N_A); - } - else - { - snprintf(pFileInfo->resolution, NOMAL_BUF,"%dX%d", width, height); - } - - break; - - default: - break; - - } - -} - -void -ivug_details_info_set_location(ivug_file_info_t * const pFileInfo, const char *path) -{ - ivug_retm_if(!pFileInfo, "data is NULL"); - ivug_retm_if(!path, "path is NULL"); - - pFileInfo->file_location = strdup(path); -} - -void -ivug_details_info_set_filename(ivug_file_info_t * const pFileInfo, const char *path) -{ - ivug_retm_if(!pFileInfo, "data is NULL"); - ivug_retm_if(!path, "path is NULL"); - - /** get file name */ - pFileInfo->filename = ecore_file_strip_ext(ecore_file_file_get(path)); -} - - diff --git a/main/src/view/ivug-detail-info.h b/main/src/view/ivug-detail-info.h deleted file mode 100755 index 6b7b9cb..0000000 --- a/main/src/view/ivug-detail-info.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * 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 __IVUG_DETAIL_COMMON_H__ -#define __IVUG_DETAIL_COMMON_H__ - -#include - -#include "ivug-common.h" - -typedef enum { - IVUG_DETAIL_ERROR_TYPE = -1, - IVUG_DETAIL_IMAGE_TYPE, - IVUG_DETAIL_VIDEO_TYPE -} ivug_detail_file_t; - -typedef struct { -/** Common info*/ - time_t date; // Seconds since 1970-1-1 - size_t size; - - ivug_detail_file_t file_type; - - char *filesize; - char *filepath; - char *filename; - char *file_ext; - char *file_location; - char *contains; - char *create_date; - - -/**resolution */ - char *resolution; - -/**Gps info */ - char *latitude; - char *longitude; - -}ivug_file_info_t; - - -#ifdef __cplusplus -extern "C" { -#endif - -// TODO : Remove dependacy ivug-detail-view and ivug-detail-info. - -void ivug_details_info_set_file_information(ivug_file_info_t * const pFileInfo, const char *path); - -void ivug_details_info_set_gps_info(ivug_file_info_t * const pFileInfo, const char *path); - -void ivug_details_info_set_resolution(ivug_file_info_t * const pFileInfo, const char *path, int stype); - -void ivug_details_info_set_location(ivug_file_info_t * const pFileInfo, const char *path); - -void ivug_details_info_set_filename(ivug_file_info_t * const pFileInfo, const char *path); - - -#ifdef __cplusplus -} -#endif - - -#endif // __IVUG_DETAIL_COMMON_H__ - diff --git a/main/src/view/ivug-details-view.c b/main/src/view/ivug-details-view.c index e66df21..77fefdb 100755 --- a/main/src/view/ivug-details-view.c +++ b/main/src/view/ivug-details-view.c @@ -1,34 +1,32 @@ -/* - * 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 "ivug-common.h" -#include "ivug-main.h" #include "ivug-main-view.h" #include "ivug-string.h" +#include "ivug-file-info.h" #include "ivug-details-view.h" #include "ivug-detail-info.h" -#include "ivug-widget.h" +#include "ivug-drm.h" #define DETAILS_EDJ_FILE EDJ_PATH"/ivug-details.edj" -#define TRANSITION_EFFECT #define FILE_DETILES_NUM 6 #define FILE_EXIF_INFO_NUM 2 @@ -99,6 +97,26 @@ static void _ivug_details_free_file_info(ivug_file_info_t * const pFileInfo) free(pFileInfo->longitude); pFileInfo->longitude = NULL; } + + if(pFileInfo->vendor) + { + free(pFileInfo->vendor); + pFileInfo->vendor = NULL; + } + + if(pFileInfo->forwarding) + { + free(pFileInfo->forwarding); + pFileInfo->forwarding = NULL; + } + + if(pFileInfo->type) + { + free(pFileInfo->type); + pFileInfo->type = NULL; + + } + } static char * @@ -160,6 +178,26 @@ _ivug_details_gl_label_get(void *data, Evas_Object *obj, const char *part ) { text2 = pDetailsView->file_Info.longitude; } + else if(strncmp(IDS_VENDOR, params->m_ItemName, strlen(IDS_VENDOR)) == 0) + { + text2 = pDetailsView->file_Info.vendor; + } + else if(strncmp(IDS_FORWARDING, params->m_ItemName, strlen(IDS_FORWARDING)) == 0) + { + text2 = pDetailsView->file_Info.forwarding; + } + else if(strncmp(IDS_AVAILABLE_USES, params->m_ItemName, strlen(IDS_AVAILABLE_USES)) == 0) + { + text2 = pDetailsView->file_Info.available_uses; + } + else if(strncmp(IDS_TYPE, params->m_ItemName, strlen(IDS_TYPE)) == 0) + { + text2 = pDetailsView->file_Info.type; + } + else if(strncmp(IDS_VALIDITY, params->m_ItemName, strlen(IDS_VALIDITY)) == 0) + { + text2 = pDetailsView->file_Info.validity; + } if (text2) { return elm_entry_utf8_to_markup(text2); @@ -205,6 +243,82 @@ _ivug_details_gl_label_get_title(void *data, Evas_Object *obj,const char *part ) return NULL; } +static void _on_rename_view_response(ivug_name_response resp, const char *str, void *pClientData) +{ + Ivug_DetailsView *pDetailsView = (Ivug_DetailsView *)pClientData; + + pDetailsView->pAddTagView = NULL; // Will removed in add tag view. + + if(resp != NAME_VIEW_RESPONSE_OK) + { + MSG_DETAIL_HIGH("rename is canceled"); + return; + } + + Media_Data *mdata = pDetailsView->mdata; + const char *old_fullpath = mdata->filepath; + char *old_dir = ecore_file_dir_get(old_fullpath); + char *ext = ivug_fileinfo_get_file_extension(old_fullpath); + + char new_fullpath[IVUG_MAX_FILE_PATH_LEN] = {0,}; + snprintf(new_fullpath, sizeof(new_fullpath),"%s/%s.%s", old_dir, str, ext); + + if(ivug_rename_file(old_fullpath, new_fullpath) == false) + { + MSG_DETAIL_ERROR("ivug_rename_file failed"); + } + else + { + MSG_DETAIL_HIGH("Rename %s -> %s", old_fullpath, new_fullpath); + free(mdata->filepath); + mdata->filepath = strdup(new_fullpath); + + ivug_details_info_set_filename(&pDetailsView->file_Info, new_fullpath); + + elm_genlist_realized_items_update(pDetailsView->genlist); + + const char *name = ecore_file_file_get(mdata->filepath); + + evas_object_smart_callback_call(pDetailsView->layout, "renamed", (void *)name); + } +} + +static void _rename_button_clicked_cb(void *data, Evas_Object * obj, void *event_info) +{ + Ivug_DetailsView *pDetailsView = (Ivug_DetailsView *)data; + Media_Data *mdata = pDetailsView->mdata; + + MSG_DETAIL_HIGH("clicked event on Button"); + + pDetailsView->pAddTagView = ivug_name_view_create(pDetailsView->layout, IDS_CHANGE_NAME); + + const char *name = ecore_file_strip_ext(ecore_file_file_get(mdata->filepath)); + + ivug_name_view_set_entry(pDetailsView->pAddTagView, name); + + ivug_name_view_set_response_callback(pDetailsView->pAddTagView, _on_rename_view_response, (void*)pDetailsView); +} + +static Evas_Object *_ivug_details_gl_icon_get_title(void *data, Evas_Object *obj, const char *part) +{ + ivug_file_list_item *params = (ivug_file_list_item *)data; + + ivug_retvm_if(params == NULL, NULL, "params is NULL"); + + Ivug_DetailsView *pDetailsView = (Ivug_DetailsView *)params->pDetailsView; + ivug_retvm_if(pDetailsView == NULL, NULL, "pDetailsView is NULL"); + + Evas_Object *btn; + + if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.icon.1")) { + btn = elm_button_add(pDetailsView->layout); + elm_object_style_set(btn, "rename"); + evas_object_smart_callback_add(btn, "clicked", _rename_button_clicked_cb, (void *)pDetailsView); + } + + return btn; +} + static Eina_Bool _ivug_details_gl_state_get(void *data, Evas_Object *obj, const char *part ) { @@ -222,31 +336,46 @@ _ivug_details_view_genlist_create(Ivug_DetailsView *pDetailsView, Evas_Object *p ivug_retvm_if(NULL == genlist, NULL, "Create Details genlist failed.."); elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); - elm_genlist_select_mode_set(genlist, ELM_OBJECT_SELECT_MODE_NONE); elm_object_theme_set(genlist, gGetSystemTheme()); - pDetailsView->file_Status.itc.item_style = "ivug/2text.2"; - //pDetailsView->file_Status.itc.item_style = "2text.2"; - pDetailsView->file_Status.itc.func.text_get = _ivug_details_gl_label_get; - pDetailsView->file_Status.itc.func.content_get = NULL; - pDetailsView->file_Status.itc.func.state_get = _ivug_details_gl_state_get; - pDetailsView->file_Status.itc.func.del = _ivug_details_gl_del; + memset(&pDetailsView->itc, 0, sizeof(Elm_Genlist_Item_Class) ); + + pDetailsView->itc.version = ELM_GENLIST_ITEM_CLASS_VERSION; + pDetailsView->itc.item_style = "ivug/2text.2"; + pDetailsView->itc.func.text_get = _ivug_details_gl_label_get; + pDetailsView->itc.func.content_get = NULL; + pDetailsView->itc.func.state_get = _ivug_details_gl_state_get; + pDetailsView->itc.func.del = _ivug_details_gl_del; + + memset(&pDetailsView->title_itc, 0, sizeof(Elm_Genlist_Item_Class) ); // Set item class for dialogue group title - pDetailsView->file_Status.title_itc.item_style = "ivug/grouptitle"; - //pDetailsView->file_Status.title_itc.item_style = "grouptitle"; - pDetailsView->file_Status.title_itc.func.text_get = _ivug_details_gl_label_get_title; - pDetailsView->file_Status.title_itc.func.content_get = NULL; - pDetailsView->file_Status.title_itc.func.state_get = NULL; - pDetailsView->file_Status.title_itc.func.del = NULL; - - pDetailsView->file_Status.multiline_itc.item_style = "ivug/multiline.2text"; - //pDetailsView->file_Status.multiline_itc.item_style = "multiline.2text"; - pDetailsView->file_Status.multiline_itc.func.text_get = _ivug_details_gl_label_get; - pDetailsView->file_Status.multiline_itc.func.content_get = NULL; - pDetailsView->file_Status.multiline_itc.func.state_get = NULL; - pDetailsView->file_Status.multiline_itc.func.del = _ivug_details_gl_del; + pDetailsView->title_itc.version = ELM_GENLIST_ITEM_CLASS_VERSION; + pDetailsView->title_itc.item_style = "ivug/grouptitle"; + pDetailsView->title_itc.func.text_get = _ivug_details_gl_label_get_title; + pDetailsView->title_itc.func.content_get = NULL; + pDetailsView->title_itc.func.state_get = NULL; + pDetailsView->title_itc.func.del = NULL; + + memset(&pDetailsView->multiline_icon_itc, 0, sizeof(Elm_Genlist_Item_Class) ); + + // Set item class for dialogue group title with icon + pDetailsView->multiline_icon_itc.version = ELM_GENLIST_ITEM_CLASS_VERSION; + pDetailsView->multiline_icon_itc.item_style = "ivug/multiline/2text.1icon"; + pDetailsView->multiline_icon_itc.func.text_get = _ivug_details_gl_label_get; + pDetailsView->multiline_icon_itc.func.content_get = _ivug_details_gl_icon_get_title; + pDetailsView->multiline_icon_itc.func.state_get = NULL; + pDetailsView->multiline_icon_itc.func.del = NULL; + + memset(&pDetailsView->multiline_itc, 0, sizeof(Elm_Genlist_Item_Class) ); + + pDetailsView->multiline_itc.version = ELM_GENLIST_ITEM_CLASS_VERSION; + pDetailsView->multiline_itc.item_style = "ivug/multiline/2text"; + pDetailsView->multiline_itc.func.text_get = _ivug_details_gl_label_get; + pDetailsView->multiline_itc.func.content_get = NULL; + pDetailsView->multiline_itc.func.state_get = NULL; + pDetailsView->multiline_itc.func.del = _ivug_details_gl_del; return genlist; } @@ -277,8 +406,7 @@ _ivug_detail_genlist_view_gps_create(Ivug_DetailsView *pDetailsView ) m_TempItem->m_ItemName = strdup(m_ItemName[index]); m_TempItem->pDetailsView = pDetailsView; - it = elm_genlist_item_append(genlist, &pDetailsView->file_Status.multiline_itc, m_TempItem, NULL, - ELM_GENLIST_ITEM_NONE, NULL, NULL); + it = elm_genlist_item_append(genlist, &pDetailsView->multiline_itc, m_TempItem, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); } @@ -308,7 +436,7 @@ _ivug_detail_genlist_view_file_view_create(Ivug_DetailsView *pDetailsView) m_ItemName[4] = IDS_RESOLUTION; m_ItemName[5] = IDS_FILE_LOCATION; - git = elm_genlist_item_append(genlist, &pDetailsView->file_Status.title_itc, strdup(IDS_DETAILS), NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); + git = elm_genlist_item_append(genlist, &pDetailsView->title_itc, strdup(IDS_DETAILS), NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL); elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); for (index = 0; index < FILE_DETILES_NUM; index++) @@ -328,12 +456,63 @@ _ivug_detail_genlist_view_file_view_create(Ivug_DetailsView *pDetailsView) m_TempItem->m_ItemName = strdup(m_ItemName[index]); m_TempItem->pDetailsView = pDetailsView; - it = elm_genlist_item_append(genlist, &pDetailsView->file_Status.multiline_itc, m_TempItem, NULL, - ELM_GENLIST_ITEM_NONE, NULL, NULL); + if(index == 0) // for rename icon + { + it = elm_genlist_item_append(genlist, &pDetailsView->multiline_icon_itc, m_TempItem, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); + } + else + { + it = elm_genlist_item_append(genlist, &pDetailsView->multiline_itc, m_TempItem, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); + } elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); } } +static void +_ivug_detail_genlist_view_drm_create(Ivug_DetailsView *pDetailsView) +{ + IV_ASSERT(pDetailsView != NULL); + + Evas_Object *genlist = NULL; + int index = 0; + + Elm_Object_Item *it = NULL; + + ivug_file_list_item *m_TempItem = NULL; + char *m_ItemName[FILE_DETILES_NUM] = {0,}; + + genlist = pDetailsView->genlist; + + m_ItemName[0] = IDS_VENDOR; + m_ItemName[1] = IDS_FORWARDING; + m_ItemName[2] = IDS_AVAILABLE_USES; + m_ItemName[3] = IDS_TYPE; + m_ItemName[4] = IDS_VALIDITY; + + for (index = 0; index < FILE_DETILES_NUM; index++) + { + if(m_ItemName[index] == NULL) + { + continue; + } + + m_TempItem = (ivug_file_list_item *)malloc(sizeof(ivug_file_list_item)); + if(m_TempItem == NULL) + { + continue; + } + memset(m_TempItem, 0, sizeof(ivug_file_list_item)); + + m_TempItem->m_ItemName = strdup(m_ItemName[index]); + m_TempItem->pDetailsView = pDetailsView; + + it = elm_genlist_item_append(genlist, &pDetailsView->multiline_itc, m_TempItem, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); + elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + } + +} + + Ivug_DetailsView * ivug_details_view_screen_create(Evas_Object *parent, Media_Data *mdata, ivug_view_by view_by) { @@ -352,13 +531,30 @@ ivug_details_view_screen_create(Evas_Object *parent, Media_Data *mdata, ivug_vie return NULL; } + pDetailsView->mdata = mdata; + ivug_details_info_set_file_information(&pDetailsView->file_Info, filepath); ivug_details_info_set_resolution(&pDetailsView->file_Info, filepath, stype); ivug_details_info_set_gps_info(&pDetailsView->file_Info, filepath); - ivug_details_info_set_filename(&pDetailsView->file_Info, filepath); - ivug_details_info_set_location(&pDetailsView->file_Info, filepath); + if(stype == SLIDE_TYPE_STREAMING ) // If remote file + { + /* Location: show url */ + ivug_details_info_set_filename(&pDetailsView->file_Info, mdata->fileurl); // TODO : Check this. how to extract filename from URL???? + ivug_details_info_set_location(&pDetailsView->file_Info, mdata->fileurl); + } + else + { + ivug_details_info_set_filename(&pDetailsView->file_Info, filepath); + ivug_details_info_set_location(&pDetailsView->file_Info, filepath); + } + + if(mdata->bIsDRMContent) + { + ivug_details_info_set_drm_info(&pDetailsView->file_Info, filepath); + } + // Creating GUI pDetailsView->evas = evas_object_evas_get(parent); @@ -394,9 +590,17 @@ ivug_details_view_screen_create(Evas_Object *parent, Media_Data *mdata, ivug_vie _ivug_detail_genlist_view_file_view_create(pDetailsView); - _ivug_detail_genlist_view_gps_create(pDetailsView); +// TODO : Should check below routine. why DRM has no GPS info??? + if(mdata->bIsDRMContent == EINA_TRUE) + { + _ivug_detail_genlist_view_drm_create(pDetailsView); + } + else + { + _ivug_detail_genlist_view_gps_create(pDetailsView); + } - elm_object_part_content_set( pDetailsView->layout, "detailsview.genlist" , pDetailsView->genlist ); + elm_object_part_content_set(pDetailsView->layout, "details_view.genlist" , pDetailsView->genlist ); MSG_DETAIL_HIGH("Detail view(0x%08x) created for %s", pDetailsView, filepath); diff --git a/main/src/view/ivug-details-view.h b/main/src/view/ivug-details-view.h deleted file mode 100755 index af159d5..0000000 --- a/main/src/view/ivug-details-view.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * 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 __DETAILS_VIEW_H__ -#define __DETAILS_VIEW_H__ - -#include -#include "ivug-data.h" -#include "ivug-parameter.h" -#include "ivug-detail-info.h" - - -typedef struct { - Elm_Genlist_Item_Class itc; - Elm_Genlist_Item_Class title_itc; - Elm_Genlist_Item_Class multiline_itc; -} ivug_file_status_t; - -typedef struct { - Evas_Object *parent; - Evas_Object *bg; - - Evas_Object *layout; - Evas *evas; - Evas_Object *genlist; - -/* - |---------------| - | naviframe | - |---------------| - | | - | genlist | - | | - |---------------| -*/ - - ivug_file_status_t file_Status; // TODO : Will remove - ivug_file_info_t file_Info; -} Ivug_DetailsView; - - -Ivug_DetailsView *ivug_details_view_screen_create(Evas_Object *parent, Media_Data *mdata, ivug_view_by view_by); - -void ivug_details_view_destroy(Ivug_DetailsView *pDetailsView); - -Evas_Object *ivug_details_view_object_get(Ivug_DetailsView *pDetailsView); - -#endif // __DETAILS_VIEW_H__ - - diff --git a/main/src/view/ivug-main-view.c b/main/src/view/ivug-main-view.c deleted file mode 100755 index 75af879..0000000 --- a/main/src/view/ivug-main-view.c +++ /dev/null @@ -1,1837 +0,0 @@ -/* - * 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 // ug_destroy_me, ug_send_result -#include -#include -#include -#include // Key event - -#include "ivug-common.h" -#include "ivug-parameter.h" - -#include "ivug-main-view.h" -#include "ivug-util.h" -#include "ivug-data.h" -#include "ivug-ext-ug.h" -#include "ivug-popup.h" -#include "ivug-slider-item.h" -#include "ivug-slider.h" -#include "ivug-main.h" - -#include "ivug-setas-view.h" -#include "ivug-details-view.h" - -#include "ivug-data.h" - -#define ELM_INTERNAL_API_ARGESFSDFEFC - -#include // elm_selection_set -#include // app service - -#undef HIDE_INDICATOR // For testing. - -#define CONTROL_ICON_DIRECTORY_PATH IMAGE_PATH"/01_Control icon" - -#define ICON_PATH_DELETE CONTROL_ICON_DIRECTORY_PATH"/T01_controlbar_icon_delete.png" -#define ICON_PATH_SLIDESHOW CONTROL_ICON_DIRECTORY_PATH"/T01_controlbar_icon_slideshow.png" -#define ICON_PATH_INFO CONTROL_ICON_DIRECTORY_PATH"/T01_controlbar_icon_info.png" - -#define ICON_PATH_OPTIONTRAY IMAGE_PATH"/T01_btn_optiontray.png" - -// EDJE -#define IVUG_MAIN_EDJ EDJ_PATH"/ivug-main.edj" - -#define IVUG_RESPONSE_OK (1) - -#undef TEST_MOUSE_EVENT - -void -_ivug_main_view_show_menu_bar(Ivug_MainView *pMainView); - -void -_ivug_main_view_hide_menu_bar(Ivug_MainView *pMainView); - -static void -_ivug_main_view_back_cb(void *data, Evas_Object *obj, void *event_info); - -Evas_Object *_create_tool_bar(Evas_Object *parent); - -static void -_ivug_main_view_navibar_detail_cb(void *data, Evas_Object *obj, void *event_info); - -static void -_ivug_main_view_navibar_detail_close_cb(void *data, Evas_Object *obj, void *event_info); - -static enum CTRL_BAR_TYPE -_get_ctrl_bar_type(ivug_mode mode, Media_Type slide_type); -static enum NAVI_BAR_TYPE -_get_tool_bar_type(ivug_mode mode, Media_Type slide_type ); - -#define IVUG_MAIN_DESTROY_ME(a) _ivug_main_view_destroy_me(a, __func__, __LINE__); - -static void -_ivug_main_view_destroy_me(Ivug_MainView *pMainView, const char *fname, int nLine) -{ - ivug_ret_if(!pMainView); - - MSG_MAIN_WARN("Main view request ug_destroy_me at [%s:%d]", fname, nLine); - - int x = 0; - int y = 0; - int w = 0; - int h = 0; - - MSG_MAIN_WARN("Apply event blocker"); - pMainView->event_blocker = evas_object_rectangle_add(evas_object_evas_get(pMainView->layout)); - evas_object_geometry_get(pMainView->layout, &x, &y, &w, &h); - evas_object_move(pMainView->event_blocker, x, y); - evas_object_resize(pMainView->event_blocker, w, h); - evas_object_color_set(pMainView->event_blocker, 0, 0, 0, 0); - evas_object_show(pMainView->event_blocker); - - ug_destroy_me(pMainView->ugHandle); -} - -static void -_selection_info_deleted(void * data, Evas * e, Evas_Object * obj, void * event_info) -{ - ivug_retm_if(!data, "data is NULL"); - MSG_MAIN_WARN("selection info deleted"); - Ivug_MainView *pMainView = (Ivug_MainView *)data; - - pMainView->selectioninfo = NULL; - - return; -} - -static inline void -_main_view_create_selection_info(Ivug_MainView *pMainView, const char *string) -{ - IV_ASSERT(pMainView != NULL); - if(pMainView->selectioninfo) - { - evas_object_event_callback_del(pMainView->selectioninfo, EVAS_CALLBACK_DEL, - _selection_info_deleted); - evas_object_del(pMainView->selectioninfo); - pMainView->selectioninfo = NULL; - } - pMainView->selectioninfo = ivug_popup_selectioninfo(pMainView->layout, string); - ivug_retm_if(pMainView->selectioninfo == NULL, "selectioninfo is NULL"); - evas_object_event_callback_add(pMainView->selectioninfo, EVAS_CALLBACK_DEL, - _selection_info_deleted, pMainView); -} - - -//copy popup -static void -_ivug_main_copy_popup_response_cb(void *data, Evas_Object *obj, void *event_info) -{ - int response_id = (int)event_info; - IV_ASSERT(data != NULL); - - Ivug_MainView *pMainView = (Ivug_MainView *)data; - - MSG_MAIN_HIGH("Copy popup response : %d", response_id); - - if (pMainView->copy_popup) - { - evas_object_del(pMainView->copy_popup); - pMainView->copy_popup = NULL; - } - else - { - MSG_MAIN_WARN("copy popup is NULL"); - } -} - -static void -_ivug_main_copy_popup_selected_cb(void *data, Evas_Object *obj, void *event_info) -{ - ivug_ret_if(!data); - Ivug_MainView *pMainView = (Ivug_MainView *)data; - - //get current file path. - Slide_Item *sitem = ivug_slider_get_current_slide_item(pMainView->slider); - Media_Data *mdata = ivug_data_get_data(sitem->mitem); - - if (mdata == NULL) - { - MSG_MAIN_ERROR("slider data is NULL"); - return; - } - - char *path = NULL; - int len = 0; - // This Will add to the article - char buf[IVUG_MAX_FILE_PATH_LEN] = {0,}; - - path = mdata->filepath; - len = strlen(mdata->filepath)+strlen("file://")+1; - snprintf(buf, IVUG_MAX_FILE_PATH_LEN, "file://%s", mdata->filepath); - - if (len < IVUG_MAX_FILE_PATH_LEN) - { - MSG_MAIN_HIGH("file path = %s, file url =%s", path, buf); - if ( pMainView->parent) - { - elm_cnp_selection_set(pMainView->layout, ELM_SEL_TYPE_CLIPBOARD, ELM_SEL_FORMAT_IMAGE, buf, sizeof(buf)); - } - } - else - { - MSG_MAIN_ERROR("slider file path is too long"); - } - - evas_object_del(pMainView->copy_popup); - pMainView->copy_popup = NULL; -} - -Evas_Object* -_ivug_main_create_copy_popup_create(Ivug_MainView *pMainView, int x, int y) -{ - ivug_retv_if(!pMainView, NULL); - - Evas_Object* ctx_popup = NULL; - ctx_popup = elm_ctxpopup_add(pMainView->layout); - elm_ctxpopup_item_append(ctx_popup, IDS_COPY, NULL, _ivug_main_copy_popup_selected_cb, pMainView); - evas_object_smart_callback_add( ctx_popup, "hide", _ivug_main_copy_popup_response_cb, pMainView); - - //evas_object_smart_callback_add(ctxpopup, "dismissed", _dismissed_cb, ctxpopup); - evas_object_move(ctx_popup, x, y); - - evas_object_show(ctx_popup); - - return ctx_popup; -} - -static void -_ivug_main_view_navibar_detail_close_cb(void *data, Evas_Object *obj, void *event_info) -{ - IV_ASSERT(data != NULL); - - MSG_MAIN_HIGH("ENTER : Btn detail close clicked. obj=0x%08x data=0x%08x", obj, data); - - Ivug_MainView *pMainView = (Ivug_MainView *)data; - - IV_ASSERT( pMainView->navi_bar != NULL); - - evas_object_smart_callback_del(obj, "clicked", _ivug_main_view_navibar_detail_close_cb); - - elm_object_item_part_content_unset(pMainView->navi_it, "elm.swallow.detail"); - - MSG_MAIN_HIGH("Delete detail view"); - ivug_details_view_destroy(pMainView->pDetailsView); // Delete detail view. - pMainView->pDetailsView = NULL; - -// Enable detail view button callback - evas_object_smart_callback_add(pMainView->btn_detail, "clicked", _ivug_main_view_navibar_detail_cb, pMainView->btn_detail_data); - elm_object_disabled_set(pMainView->btn_detail, EINA_FALSE); - - Evas_Object *btn_close = elm_object_item_part_content_unset(pMainView->navi_it, "title_right_btn"); - evas_object_del(btn_close); - - MSG_MAIN_HIGH("LEAVE : Btn detail close clicked. obj=0x%08x data=0x%08x", obj, data); -} - -static void _update_title(Ivug_MainView *pMainView) -{ - static char title[256]; - - Slide_Item *sitem = ivug_slider_get_current_slide_item(pMainView->slider); - Media_Data *mdata = ivug_data_get_data(sitem->mitem); - - if (mdata == NULL) - { - MSG_MAIN_ERROR("slider data is NULL"); - return; - } - - if ( pMainView->mode == IVUG_MODE_NORMAL) - { - snprintf(title, sizeof(title), "%d/%d", - ivug_slider_get_current_slide_count(pMainView->slider), - ivug_slider_get_total_slide_count(pMainView->slider)); //get title. - } - else if(mdata->filepath != NULL) - { - const char* filename = ivug_get_filename(mdata->filepath); - if(filename) - { - snprintf(title, sizeof(title), "%s", filename); - } - } - - IV_ASSERT(pMainView->navi_bar != NULL); - - MSG_MAIN_HIGH("Update title : %s", title); - - elm_object_item_text_set(pMainView->navi_it, title); - -} - -static void -_ivug_main_view_navibar_detail_cb(void *data, Evas_Object *obj, void *event_info) -{ - MSG_MAIN_HIGH("ENTER : Btn detail view clicked. obj=0x%08x data=0x%08x", obj, data); - ivug_ret_if(!obj||!data); - - Ivug_MainView *pMainView = (Ivug_MainView *)data; - - if(pMainView->pDetailsView) - { - MSG_MAIN_ERROR("details view already created"); - return; - } - - pMainView->btn_detail_data = evas_object_smart_callback_del(obj, "clicked", _ivug_main_view_navibar_detail_cb); - pMainView->btn_detail = obj; - - Slide_Item *sitem = ivug_slider_get_current_slide_item(pMainView->slider); - Media_Data *mdata = ivug_data_get_data(sitem->mitem); - - if (mdata == NULL) - { - MSG_MAIN_ERROR("slider data is NULL"); - return; - } - - pMainView->pDetailsView = ivug_details_view_screen_create(pMainView->navi_bar, mdata, pMainView->view_by); - - if(!pMainView->pDetailsView) - { - MSG_MAIN_ERROR("create details view failed"); - return; - } - - elm_object_item_part_content_set(pMainView->navi_it, "elm.swallow.detail", ivug_details_view_object_get(pMainView->pDetailsView)); - -// Transition effect does not comming ocassionally when instant mode is used. -// evas_object_smart_callback_add(pMainView->navi_bar, "transition,finished", _ivug_main_view_details_transit_finished_cb, pMainView); - PERF_CHECK_BEGIN(LVL1 "Update title"); - - _update_title(pMainView); - - PERF_CHECK_END(LVL1 "Update title"); - - _ctrl_bar_type ctrlbar_type; - ctrlbar_type = _get_ctrl_bar_type(pMainView->mode, mdata->slide_type); - if(ctrlbar_type == CTRL_BAR_TYPE_FILE || ctrlbar_type == CTRL_BAR_TYPE_CAMERA_IMAGE - || ctrlbar_type == CTRL_BAR_TYPE_CAMERA_VIDEO) - { - MSG_MAIN_HIGH("Disable details button "); - - /* Disable details button in controlbar */ - if(pMainView->ctrl_bar_item[1]) - elm_object_item_disabled_set(pMainView->ctrl_bar_item[1], EINA_TRUE); - } - else if(ctrlbar_type == CTRL_BAR_TYPE_IMAGE || ctrlbar_type == CTRL_BAR_TYPE_VIDEO) - { - /* Disable details button in controlbar */ - if(pMainView->ctrl_bar_item[2]) - elm_object_item_disabled_set(pMainView->ctrl_bar_item[2], EINA_TRUE); - } - - MSG_MAIN_HIGH("LEAVE : Btn detail view clicked. obj=0x%08x data=0x%08x", obj, data); -} - -#define ZOOM_LEVEL_STEP (0.7) -#define ZOOM_LEVEL_MAX (3) - -static void _show_zoom_icon(void *data) -{ - ivug_ret_if(!data); - - MSG_MAIN_ERROR("_show_zoom_icon"); - - Ivug_MainView *pMainView = (Ivug_MainView *)data; - - Slide_Item *sitem = ivug_slider_get_current_slide_item(pMainView->slider); - if(!sitem) - { - MSG_MAIN_ERROR("sitem is NULL"); - return; - } - - if(sitem->zoom_level == 0) - { - edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_out,disable","elm"); - edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_in,enable","elm"); - } - else if(sitem->zoom_level == ZOOM_LEVEL_MAX) - { - edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_in,disable","elm"); - edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_out,enable","elm"); - } - else - { - edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_out,enable","elm"); - edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_in,enable","elm"); - } -} - -static void -_ivug_main_view_zoom_out_cb(void *data, Evas_Object *obj, const char *emission, const char *source) -{ - ivug_ret_if(!obj); - ivug_ret_if(!data); - - MSG_MAIN_ERROR("_ivug_main_view_zoom_out_cb"); - - Ivug_MainView *pMainView = (Ivug_MainView *)data; - - Slide_Item *sitem = ivug_slider_get_current_slide_item(pMainView->slider); - if(!sitem) - { - MSG_MAIN_ERROR("sitem is NULL"); - return; - } - - if(sitem->zoom_level == 0) - { - MSG_MAIN_ERROR("zoom_level is 0"); - return; - } - - double zoom = 0.0; - Evas_Coord ix = 0, iy= 0, iw= 0, ih= 0; - - evas_object_geometry_get(sitem->photocam, &ix, &iy, &iw, &ih); - - zoom = ivug_slider_item_zoom_get(sitem); - zoom /= ZOOM_LEVEL_STEP; - ivug_slider_item_zoom_set(sitem, zoom, iw/2, ih/2); - - ivug_slider_item_hold_set(sitem, EINA_FALSE); - - sitem->zoom_level--; - - _show_zoom_icon(data); -} - -static void -_ivug_main_view_zoom_in_cb(void *data, Evas_Object *obj, const char *emission, const char *source) -{ - ivug_ret_if(!obj); - ivug_ret_if(!data); - - MSG_MAIN_ERROR("_ivug_main_view_zoom_in_cb"); - - Ivug_MainView *pMainView = (Ivug_MainView *)data; - - Slide_Item *sitem = ivug_slider_get_current_slide_item(pMainView->slider); - if(!sitem) - { - MSG_MAIN_ERROR("sitem is NULL"); - return; - } - - if(sitem->zoom_level > ZOOM_LEVEL_MAX) - { - MSG_MAIN_ERROR("zoom_level is %d", sitem->zoom_level); - return; - } - - double zoom = 0.0; - Evas_Coord ix = 0, iy= 0, iw= 0, ih= 0; - - evas_object_geometry_get(sitem->photocam, &ix, &iy, &iw, &ih); - - zoom = ivug_slider_item_zoom_get(sitem); - zoom *= ZOOM_LEVEL_STEP; - ivug_slider_item_zoom_set(sitem, zoom, iw/2, ih/2); - - ivug_slider_item_hold_set(sitem, EINA_FALSE); - - sitem->zoom_level++; - - _show_zoom_icon(data); -} - -static void -_ivug_main_view_update_details_item(Ivug_MainView *pMainView) -{ - ivug_retm_if(!pMainView, "pMainView is NULL"); - ivug_retm_if(!pMainView->slider, "pMainView->slider is NULL"); - - Slide_Item *sitem = ivug_slider_get_current_slide_item(pMainView->slider); - if(!sitem) - { - MSG_MAIN_ERROR("sitem is NULL"); - return; - } - - Media_Data *mdata = ivug_data_get_data(sitem->mitem); - if(!mdata) - { - MSG_MAIN_ERROR("mdata is NULL"); - return; - } - - _ctrl_bar_type ctrlBarType; - ctrlBarType = _get_ctrl_bar_type(pMainView->mode, mdata->slide_type); - if(ctrlBarType == CTRL_BAR_TYPE_FILE || ctrlBarType == CTRL_BAR_TYPE_CAMERA_IMAGE || - ctrlBarType == CTRL_BAR_TYPE_CAMERA_VIDEO) - { - /* Enable details button in control bar*/ - if(pMainView->ctrl_bar_item[1]) - elm_object_item_disabled_set(pMainView->ctrl_bar_item[1], EINA_FALSE); - } - else if(ctrlBarType == CTRL_BAR_TYPE_IMAGE || ctrlBarType == CTRL_BAR_TYPE_VIDEO) - { - /* Enable details button in control bar*/ - if(pMainView->ctrl_bar_item[2]) - elm_object_item_disabled_set(pMainView->ctrl_bar_item[2], EINA_FALSE); - } -} - -static void -_ivug_main_view_delete_photo_cb(void *data, Evas_Object *obj, void *event_info) -{ - IVUG_FUNC_ENTER(); - ivug_ret_if(!obj||!data||!event_info); - - int response_id = (int)event_info; - - Ivug_MainView *pMainView = (Ivug_MainView *)data; - if ( response_id == POPUP_RESPONSE_OK ) - { - MSG_MAIN_HIGH("Removing current slide."); - - if(pMainView->pDetailsView) - { - MSG_MAIN_HIGH("Exit details view"); - _ivug_main_view_navibar_detail_close_cb(pMainView, NULL, NULL); - - _ivug_main_view_update_details_item(pMainView); - } - - ivug_slider_delete_current_slide(pMainView->slider); - } - - evas_object_del(obj); //delete popup - -} - -static void -_ivug_main_view_ctrlbar_delete_cb(void *data, Evas_Object *obj, void *event_info) -{ - IVUG_FUNC_ENTER(); - ivug_ret_if(!obj||!data); - - Ivug_MainView *pMainView = (Ivug_MainView *)data; - - ivug_popup_question(pMainView->layout, NULL, - IDS_DELETE_MSG, _ivug_main_view_delete_photo_cb, pMainView); - - IVUG_FUNC_LEAVE(); - return; -} - -static void -_ivug_main_view_ctrlbar_slide_show_cb(void *data, Evas_Object *obj, void *event_info) -{ - MSG_MAIN_HIGH("Start slide show"); - - IV_ASSERT(data != NULL); - ivug_ret_if(!event_info); - - Ivug_MainView *pMainView = (Ivug_MainView *)data; - - Elm_Object_Item *ctrl_bar_item = (Elm_Object_Item *)event_info; - - if(elm_object_item_disabled_get(ctrl_bar_item) == EINA_TRUE) - { - MSG_MAIN_WARN("Slide show already started"); - return; - } - - elm_object_item_disabled_set(ctrl_bar_item, EINA_TRUE); - - if(pMainView->pDetailsView) { - MSG_MAIN_HIGH("Exit details view"); - _ivug_main_view_navibar_detail_close_cb(pMainView, NULL, NULL); - } - - ivug_prohibit_lcd_off(); - - _ivug_main_view_hide_menu_bar(pMainView); - - ivug_slider_start_slide_show(pMainView->slider, EINA_TRUE); - -} - - -static void -_ivug_main_view_back_cb(void *data, Evas_Object *obj, void *event_info) -{ - ivug_ret_if(!obj||!data); - - Ivug_MainView *pMainView = (Ivug_MainView *)data; - ivug_retm_if(!pMainView->navi_bar, "%s", "navigation value is NULL"); - - MSG_MAIN_WARN("Back key pressed"); - - if( pMainView->pDetailsView == NULL) // Detail view is not showed,. - { - evas_object_smart_callback_del(pMainView->back_btn, "clicked", _ivug_main_view_back_cb); - IVUG_MAIN_DESTROY_ME(pMainView); - return; - } - - /* Back from details view */ - - Slide_Item *sitem = ivug_slider_get_current_slide_item(pMainView->slider); - ivug_retm_if(!sitem, "sitem is NULL"); - - Media_Data *mdata = ivug_data_get_data(sitem->mitem); - ivug_retm_if(!mdata, "mdata is NULL"); - - _ctrl_bar_type ctrlBarType; - ctrlBarType = _get_ctrl_bar_type(pMainView->mode, mdata->slide_type); - if(ctrlBarType == CTRL_BAR_TYPE_FILE || - ctrlBarType == CTRL_BAR_TYPE_CAMERA_IMAGE || - ctrlBarType == CTRL_BAR_TYPE_CAMERA_VIDEO) - { - // In case that called by my file, camera, UG doest not removed. - _ivug_main_view_navibar_detail_close_cb(pMainView, NULL, NULL); - - MSG_MAIN_HIGH("Enable details button"); - if(pMainView->ctrl_bar_item[1]) - elm_object_item_disabled_set(pMainView->ctrl_bar_item[1], EINA_FALSE); - - return; - } - else if(ctrlBarType == CTRL_BAR_TYPE_IMAGE || ctrlBarType == CTRL_BAR_TYPE_VIDEO) - { - // In case that called by my file, camera, UG doest not removed. - _ivug_main_view_navibar_detail_close_cb(pMainView, NULL, NULL); - - MSG_MAIN_HIGH("Enable details button"); - if(pMainView->ctrl_bar_item[2]) - elm_object_item_disabled_set(pMainView->ctrl_bar_item[2], EINA_FALSE); - } - else // otherwise, from gallery, ug will be terminated - { - evas_object_smart_callback_del(pMainView->back_btn, "clicked", _ivug_main_view_back_cb); - IVUG_MAIN_DESTROY_ME(pMainView); - return; - } -} - - - -static void -_send_result(struct ui_gadget *ug, bool selected) -{ -//result bundle key -#define IVUG_RESULT_BUNDLE_KEY_SELECTION_RESULT "Result" - -//result bundle value -#define IVUG_RESULT_BUNDLE_VALUE_OK "Ok" -#define IVUG_RESULT_BUNDLE_VALUE_CANCEL "Cancel" - - ivug_ret_if(!ug); - - bundle *b; - b = bundle_create(); - - if (selected) - { - bundle_add(b, IVUG_RESULT_BUNDLE_KEY_SELECTION_RESULT, IVUG_RESULT_BUNDLE_VALUE_OK); - } - else - { - bundle_add(b, IVUG_RESULT_BUNDLE_KEY_SELECTION_RESULT, IVUG_RESULT_BUNDLE_VALUE_CANCEL); - } - - ug_send_result(ug, b); - - bundle_free(b); -} - - -//select button -void -_ivug_main_view_select_ok_cb(void *data, Evas_Object *obj, void *event_info) -{ - MSG_MAIN_HIGH("Select OK"); - ivug_ret_if(!obj||!data); - - Ivug_MainView *pMainView = (Ivug_MainView *)data; - - //send result. - _send_result(pMainView->ugHandle, true); - - IVUG_MAIN_DESTROY_ME(pMainView); -} - -void -_ivug_main_view_select_cancel_cb(void *data, Evas_Object *obj, void *event_info) -{ - MSG_MAIN_HIGH("Select Cancel"); - - ivug_ret_if(!obj||!data); - - Ivug_MainView *pMainView = (Ivug_MainView *)data; - - //send result. - _send_result(pMainView->ugHandle, false); - - IVUG_MAIN_DESTROY_ME(pMainView); -} - - -static bool _is_mmc_inserted(void) -{ - int noti_message; - int ret = -1; - - ret = vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, ¬i_message); - - if ( ret != 0 ) // falied - { - MSG_NOTI_ERROR("Get %s is failed", VCONFKEY_SYSMAN_MMC_STATUS); - return false; - } - - if(noti_message==VCONFKEY_SYSMAN_MMC_MOUNTED) - { - return true; - } - - return false; - -} - -static Eina_Bool _key_down_cb(void *user_data, int type, void *event) -{ - if (!user_data) { - MSG_IMAGEVIEW_ERROR("user data is NULL"); - return ECORE_CALLBACK_PASS_ON; - } - - Ecore_Event_Key *key_event = (Ecore_Event_Key *) event; - - Ivug_MainView *main_view = (Ivug_MainView *)user_data; - - MSG_IMAGEVIEW_HIGH("Key down : %s", key_event->keyname); - - if (!strcmp(key_event->keyname, KEY_END)) - { - MSG_IMAGEVIEW_HIGH("Bakc(End) key"); - } - else if (!strcmp(key_event->keyname, KEY_SELECT)) - { - MSG_IMAGEVIEW_HIGH("Home key"); - } - else if (!strcmp(key_event->keyname, KEY_POWER)) - { - MSG_IMAGEVIEW_HIGH("Power key"); - ivug_slider_stop_slide_show(main_view->slider); - } - return ECORE_CALLBACK_PASS_ON; -} - -static Eina_Bool _on_exit_timer_expired(void *data) -{ - ivug_retv_if(!data, ECORE_CALLBACK_CANCEL); - - Ivug_MainView *pMainView = (Ivug_MainView *)data; - - pMainView->exit_timer = NULL; - - IVUG_MAIN_DESTROY_ME(pMainView); - - return ECORE_CALLBACK_CANCEL; -} - -static void _on_mmc_state_changed(keynode_t* node, void *data) -{ - Ivug_MainView *pMainView = (Ivug_MainView *)data; - - if(_is_mmc_inserted() == false ) - { - MSG_IMAGEVIEW_WARN("MMC Removed!. Request destroy UG=0x%08x", gGetUGHandle()); - - if ( pMainView->ext_ug ) - { - MSG_IMAGEVIEW_HIGH("Extern UG is running"); - } - - ivug_show_popup(pMainView->layout, IDS_ERROR, IDS_SD_CARD_REMOVED, NULL, NULL); - pMainView->exit_timer = ecore_timer_add(0.2, _on_exit_timer_expired, data); - } -} - -static enum NAVI_BAR_TYPE -_get_tool_bar_type(ivug_mode mode, Media_Type slide_type ) -{ - enum NAVI_BAR_TYPE tool_bar_type = NAVI_BAR_TYPE_NONE; - - //calc navi bar style , temporary code. - static const char *szType[] = { - "[ INVALID ]", - "[ ]", - "[Set, Info]", - "[Ok, Cancel]", - }; - - - switch (mode) - { - case IVUG_MODE_NORMAL: - tool_bar_type = NAVI_BAR_TYPE_EMPTY; - if (slide_type == SLIDE_TYPE_IMAGE) - { - tool_bar_type = NAVI_BAR_TYPE_IMAGE; - } - else if (slide_type == SLIDE_TYPE_VIDEO) - { - tool_bar_type = NAVI_BAR_TYPE_VIDEO; - } - else - { - tool_bar_type = NAVI_BAR_TYPE_EMPTY; - } - break; - case IVUG_MODE_SINGLE: - case IVUG_MODE_FILE: - tool_bar_type = NAVI_BAR_TYPE_EMPTY; - - break; - case IVUG_MODE_DISPLAY: - tool_bar_type = NAVI_BAR_TYPE_SELECT; - - break; - case IVUG_MODE_CAMERA: - tool_bar_type = NAVI_BAR_TYPE_EMPTY; - break; - default: - MSG_MAIN_ERROR("Unhandled mode : %d", mode); - tool_bar_type = NAVI_BAR_TYPE_EMPTY; - - break; - } - - MSG_MAIN_MED("Mode=%d Slide=%d ToolBar=%s", mode, slide_type, szType[tool_bar_type]); - - return tool_bar_type; -} - - -static enum CTRL_BAR_TYPE -_get_ctrl_bar_type(ivug_mode mode, Media_Type slide_type) -{ - // this is temporary code. - enum CTRL_BAR_TYPE type = CTRL_BAR_TYPE_FILE; - - static const char *szType[] = { - "[ Invalid ]", - "[ None ]", - "[Delete,Info]", - "[Delete,Info]", - "[Delete,Info]", - "[Delete,Slide show]", - "[Delete,Slide show]", - }; - - switch (mode) - { - case IVUG_MODE_NORMAL: - if (slide_type == SLIDE_TYPE_IMAGE) - { - type = CTRL_BAR_TYPE_IMAGE; - } - else if (slide_type == SLIDE_TYPE_VIDEO) - { - type = CTRL_BAR_TYPE_VIDEO; - } - else if (slide_type == SLIDE_TYPE_UNKNOWN) - { - type = CTRL_BAR_TYPE_IMAGE; // TODO : Need to check. when web image is invalid???? - } - else - { - MSG_MAIN_ERROR("Unhandled slide type : %d", slide_type); - type = CTRL_BAR_TYPE_FILE; - } - break; - case IVUG_MODE_SINGLE: - case IVUG_MODE_FILE: - type = CTRL_BAR_TYPE_FILE; - break; - case IVUG_MODE_CAMERA: - if (slide_type == SLIDE_TYPE_IMAGE) - { - type = CTRL_BAR_TYPE_CAMERA_IMAGE; - } - else if (slide_type == SLIDE_TYPE_VIDEO) - { - type = CTRL_BAR_TYPE_CAMERA_VIDEO; - } - else - { - MSG_MAIN_ERROR("Unhandled slide type : %d", slide_type); - type = CTRL_BAR_TYPE_FILE; - } - break; - case IVUG_MODE_DISPLAY: - type = CTRL_BAR_TYPE_EMPTY; - break; - default: - MSG_MAIN_ERROR("Unhandled mode : %d", mode); - type = CTRL_BAR_TYPE_FILE; - } - - MSG_MAIN_MED("Mode=%d Slide=%d CtrlBar=%s", mode, slide_type, szType[type]); - - return type; - -} - -Evas_Object *_create_ctrl_bar(Evas_Object *parent, Elm_Theme *th) -{ - Evas_Object *toolbar = elm_toolbar_add(parent); - -//create control bar - if (toolbar == NULL) - { - MSG_MAIN_ERROR("controlbar create failed"); - return NULL; - } - - elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND); - -#ifdef USE_CUSTOM_STYLE - elm_object_theme_set(toolbar, th); - - char *ctrlStyle = NULL; - - ctrlStyle = "ivug-toolbar/default"; - - Eina_Bool bstyle = elm_object_style_set(toolbar, ctrlStyle); - MSG_MAIN_HIGH("toolbar elm_object_style_set result = %d", bstyle); -#endif - - MSG_MAIN_HIGH("Create ctrl_bar. Obj=0x%08x", toolbar); - - return toolbar; - -} - -void -_update_tool_bar(Ivug_MainView *pMainView, enum NAVI_BAR_TYPE barType) -{ - -/* - |-------------------| - |naviframe(tool_bar)| - |-------------------| - | | - | | - | | - | | - |-------------------| - | ctrl_bar | - |-------------------| -*/ - - MSG_MAIN_HIGH("Update tool_bar. Type=%d", barType); -//remove old control bar item. - int i = 0; - - for ( i = 0 ; i < MAX_NAVI_ITEM_CNT ; i ++) - { - if (pMainView->tool_bar_item[i]) - { - evas_object_del(pMainView->tool_bar_item[i]); - pMainView->tool_bar_item[i] = NULL; - } - } - - if ( barType != NAVI_BAR_TYPE_SELECT ) - { - /* other type don't need toolbar */ - return; - } - - pMainView->tool_bar_item[0] = ivug_button_add(pMainView->navi_bar, "naviframe/title/default" , IDS_OK, - NULL, _ivug_main_view_select_ok_cb, pMainView ); - - pMainView->tool_bar_item[1] = ivug_button_add(pMainView->navi_bar, "naviframe/title/default" , IDS_CANCEL, - NULL, _ivug_main_view_select_cancel_cb, pMainView ); - - elm_object_item_part_content_set(pMainView->navi_it, "title_left_btn", pMainView->tool_bar_item[0]); - elm_object_item_part_content_set(pMainView->navi_it, "title_right_btn", pMainView->tool_bar_item[1]); - - pMainView->option_show = EINA_TRUE; -} - - - -void -_update_ctrl_bar(Ivug_MainView *pMainView, enum CTRL_BAR_TYPE barType) -{ - MSG_MAIN_HIGH("Update ctrl_bar. barType=%d", barType); - -//remove old control bar item. - Evas_Object* ctrl_bar = pMainView->ctrl_bar; - - int i = 0; - - for ( i = 0 ; i < MAX_CTRL_ITEM_CNT ; i ++) - { - if (pMainView->ctrl_bar_item[i]) - { - elm_object_item_del(pMainView->ctrl_bar_item[i]); - pMainView->ctrl_bar_item[i] = NULL; - } - } - -/* - IVUG_MODE_NORMAL => - Depends on content - Image [Delete, Slide show, Detail] -> CTRL_BAR_TYPE_IMAGE - Video [Delete, Slide show, Detail] -> CTRL_BAR_TYPE_VIDEO - - IVUG_MODE_SINGLE, IVUG_MODE_FILE, => CTRL_BAR_TYPE_FILE [Delete,Info] - IVUG_MODE_DISPLAY => CTRL_BAR_TYPE_EMPTY - - if ((mode == IVUG_MODE_FILE) || (mode == IVUG_MODE_SINGLE)) - barType == CTRL_BAR_TYPE_FILE - -*/ - switch(barType) - { - case CTRL_BAR_TYPE_FILE: - pMainView->ctrl_bar_item[0] = elm_toolbar_item_append(ctrl_bar, - ICON_PATH_DELETE, NULL, _ivug_main_view_ctrlbar_delete_cb, pMainView); - pMainView->ctrl_bar_item[1] = elm_toolbar_item_append(ctrl_bar, - ICON_PATH_INFO, NULL, _ivug_main_view_navibar_detail_cb, pMainView); - break; - - case CTRL_BAR_TYPE_CAMERA_IMAGE: - pMainView->ctrl_bar_item[0] = elm_toolbar_item_append(ctrl_bar, - ICON_PATH_DELETE, NULL, _ivug_main_view_ctrlbar_delete_cb, pMainView); - pMainView->ctrl_bar_item[1] = elm_toolbar_item_append(ctrl_bar, - ICON_PATH_INFO, NULL, _ivug_main_view_navibar_detail_cb, pMainView); - break; - - case CTRL_BAR_TYPE_CAMERA_VIDEO: - pMainView->ctrl_bar_item[0] = elm_toolbar_item_append(ctrl_bar, - ICON_PATH_DELETE, NULL, _ivug_main_view_ctrlbar_delete_cb, pMainView); - pMainView->ctrl_bar_item[1] = elm_toolbar_item_append(ctrl_bar, - ICON_PATH_INFO, NULL, _ivug_main_view_navibar_detail_cb, pMainView); - break; - - case CTRL_BAR_TYPE_IMAGE: - pMainView->ctrl_bar_item[0] = elm_toolbar_item_append(ctrl_bar, - ICON_PATH_DELETE, NULL, _ivug_main_view_ctrlbar_delete_cb, pMainView); - pMainView->ctrl_bar_item[1] = elm_toolbar_item_append(ctrl_bar, - ICON_PATH_SLIDESHOW, NULL, _ivug_main_view_ctrlbar_slide_show_cb, pMainView); - pMainView->ctrl_bar_item[2] = elm_toolbar_item_append(ctrl_bar, - ICON_PATH_INFO, NULL, _ivug_main_view_navibar_detail_cb, pMainView); - break; - - case CTRL_BAR_TYPE_VIDEO: - pMainView->ctrl_bar_item[0] = elm_toolbar_item_append(ctrl_bar, - ICON_PATH_DELETE, NULL, _ivug_main_view_ctrlbar_delete_cb, pMainView); - pMainView->ctrl_bar_item[1] = elm_toolbar_item_append(ctrl_bar, - ICON_PATH_SLIDESHOW, NULL, _ivug_main_view_ctrlbar_slide_show_cb, pMainView); - pMainView->ctrl_bar_item[2] = elm_toolbar_item_append(ctrl_bar, - ICON_PATH_INFO, NULL, _ivug_main_view_navibar_detail_cb, pMainView); - break; - - default: - MSG_MAIN_ERROR("Unhandled ctrl bar type=%d", barType); - break; - } - -} - -static void _update_main_view(Ivug_MainView *pMainView, Slide_Item *sitem) -{ - Media_Data *mdata = ivug_data_get_data(sitem->mitem); - if(mdata == NULL) - { - MSG_MAIN_ERROR("mdata is NULL"); - return; - } - - PERF_CHECK_BEGIN(LVL6 "Set menu title"); - - _update_title(pMainView); - - PERF_CHECK_END(LVL6 "Set menu title"); - - if(pMainView->pDetailsView) - { - MSG_MAIN_ERROR("In details view, skip update toolbar/controlbar"); - return; - } - - enum CTRL_BAR_TYPE ctrlBarType; - enum NAVI_BAR_TYPE toolBarType; - - ctrlBarType = _get_ctrl_bar_type(pMainView->mode, mdata->slide_type); - toolBarType = _get_tool_bar_type(pMainView->mode, mdata->slide_type); - - if ( toolBarType != pMainView->tool_bar_type ) // when change toolbar Type - { - PERF_CHECK_BEGIN(LVL6 "add toolbar item"); - - MSG_MAIN_HIGH("ToolBar update. Old=%d Cur=%d", toolBarType , pMainView->tool_bar_type); - _update_tool_bar(pMainView, toolBarType); - pMainView->tool_bar_type = toolBarType; - - PERF_CHECK_END(LVL6 "add toolbar item"); - } - - if ( ctrlBarType != pMainView->ctrl_bar_type ) // when change ctrlbar Type - { - PERF_CHECK_BEGIN(LVL6 "add contolbar item"); - - MSG_MAIN_HIGH("CtrlBar update. Old=%d Cur=%d", ctrlBarType , pMainView->ctrl_bar_type); - _update_ctrl_bar(pMainView, ctrlBarType); - pMainView->ctrl_bar_type = ctrlBarType; - - PERF_CHECK_END(LVL6 "add contolbar item"); - } - -// If Inavalid image, disable all buttons. - - slide_state_t state = ivug_slider_item_get_state(sitem); - - Elm_Object_Item *item = NULL; - if ( state == SLIDE_STATE_ERROR) - { - const char *item_label = NULL; - Evas_Object *object = NULL; - - /* Disable all toolbar items */ - int i = 0; - for(i=0; itool_bar_item[i] && (item_label = elm_object_text_get(pMainView->tool_bar_item[i])) ) - { - if(!strncmp(item_label, IDS_DETAILS, strlen(item_label))) - { - MSG_MAIN_HIGH("Skip %s", item_label); - continue; - } - } - elm_object_disabled_set(pMainView->tool_bar_item[i], EINA_TRUE); - } - - /* Disable all controlbar items */ -#ifdef _USE_LABEL_ - item = elm_toolbar_first_item_get(pMainView->ctrl_bar); - for(; item!=NULL; item=elm_toolbar_item_next_get(item)){ - item_label = elm_object_item_text_get(item); - if(item_label && (!strncmp(item_label, IDS_DELETE, strlen(item_label)) || - !strncmp(item_label, IDS_DETAILS, strlen(item_label)) || - !strncmp(item_label, IDS_SLIDE_SHOW, strlen(item_label)))) - { - MSG_MAIN_HIGH("Skip %s", item_label); - continue; - } - - elm_object_item_disabled_set(item, EINA_TRUE); - } -#else - const char *icon_file = NULL; - item = elm_toolbar_first_item_get(pMainView->ctrl_bar); - for(; item!=NULL; item=elm_toolbar_item_next_get(item)) - { - object = elm_toolbar_item_icon_object_get(item); - if(!object) - continue; - - elm_icon_file_get(object, &icon_file, NULL); - - if(icon_file && (!strncmp(icon_file, ICON_PATH_DELETE, strlen(icon_file)) || - !strncmp(icon_file, ICON_PATH_INFO, strlen(icon_file)) || - !strncmp(icon_file, ICON_PATH_SLIDESHOW, strlen(icon_file)))) - { - MSG_MAIN_HIGH("Skip %s", icon_file); - continue; - } - - elm_object_item_disabled_set(item, EINA_TRUE); - } -#endif - return ; - } - else - { - int i = 0; - /* Enable all toolbar items */ - for(i=0; itool_bar_item[i]) - { - elm_object_disabled_set(pMainView->tool_bar_item[i], EINA_FALSE); - } - } - - /* Enable all controlbar items */ - item = elm_toolbar_first_item_get(pMainView->ctrl_bar); - for(; item!=NULL; item=elm_toolbar_item_next_get(item)) - { - elm_object_item_disabled_set(item, EINA_FALSE); - } - } - - if(mdata->slide_type == SLIDE_TYPE_IMAGE) - { - _show_zoom_icon(pMainView); - } - else - { - edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_out,hide","elm"); - edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_in,hide","elm"); - } -} - -void -_ivug_main_view_show_menu_bar(Ivug_MainView *pMainView) -{ - MSG_MAIN_HIGH("Show Menu"); - - pMainView->bShowMenu = EINA_TRUE; - evas_object_show(pMainView->ctrl_bar); - Slide_Item *sitem = ivug_slider_get_current_slide_item(pMainView->slider); - - _update_main_view(pMainView, sitem); - -#ifdef HIDE_INDICATOR - elm_win_indicator_mode_set(ug_get_window(), ELM_WIN_INDICATOR_HIDE); -#else - elm_win_indicator_mode_set(ug_get_window(), ELM_WIN_INDICATOR_SHOW); -#endif - - Media_Data *mdata = ivug_data_get_data(sitem->mitem); - if(mdata == NULL) - { - MSG_MAIN_ERROR("mdata is NULL"); - return; - } - - if(mdata->slide_type == SLIDE_TYPE_IMAGE) - { - _show_zoom_icon(pMainView); - } - - elm_naviframe_item_title_visible_set(pMainView->navi_it, EINA_TRUE); - elm_object_item_signal_emit(pMainView->navi_it, "elm,state,controlbar,open", ""); - -#ifdef TEST_MOUSE_EVENT - Eina_List *l = evas_object_clipees_get(pMainView->navi_bar); - - MSG_MAIN_HIGH("Clipper clips %i objects", eina_list_count(l)); - - Evas_Object *obj; - Eina_List *l1; - - EINA_LIST_FOREACH(l, l1, obj) - { - - MSG_MAIN_HIGH("Object Type : %s", evas_object_name_get(obj)); - - } - Evas_Object *above; - Evas_Object *below; - - - above = evas_object_above_get(pMainView->navi_bar); - MSG_MAIN_HIGH("Navi Above : 0x%08x %s %s", above, evas_object_name_get(above), evas_object_type_get(above)); - - below = evas_object_below_get(pMainView->navi_bar); - MSG_MAIN_HIGH("Navi Below : 0x%08x %s %s", below, evas_object_name_get(below), evas_object_type_get(below)); - - above = evas_object_above_get(pMainView->slider); - MSG_MAIN_HIGH("Slider Above : 0x%08x %s %s", above, evas_object_name_get(above), evas_object_type_get(above)); - - below = evas_object_below_get(pMainView->slider); - MSG_MAIN_HIGH("Slider Below : 0x%08x %s %s", below, evas_object_name_get(below), evas_object_type_get(below)); -#endif - - -} - - -void -_ivug_main_view_hide_menu_bar(Ivug_MainView *pMainView) -{ - MSG_MAIN_HIGH("Hide Menu"); - - pMainView->bShowMenu = EINA_FALSE; - elm_widget_disabled_set(pMainView->ctrl_bar, EINA_TRUE); - - elm_win_indicator_mode_set(ug_get_window(), ELM_WIN_INDICATOR_HIDE); - edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_out,hide","elm"); - edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_in,hide","elm"); - elm_naviframe_item_title_visible_set(pMainView->navi_it, EINA_FALSE); - elm_object_item_signal_emit(pMainView->navi_it, "elm,state,controlbar,close", ""); -} - - -static void -_ivug_main_view_clicked(void *data, Evas_Object *obj, void *event_info) -{ - MSG_MAIN_HIGH("Main View Clicked"); - IV_ASSERT(data != NULL); - - Ivug_MainView *pMainView = (Ivug_MainView *)data; - -// TODO : Bug. menu bar is blinking when stopping slide show. - if (pMainView->bShowMenu) - { - _ivug_main_view_hide_menu_bar(pMainView); - } - else - { - _ivug_main_view_show_menu_bar(pMainView); - } - -} - -static void -_ivug_main_view_icon_clicked(void *data, Evas_Object *obj, void *event_info) -{ - MSG_MAIN_HIGH("Main View Video icon Clicked"); - IV_ASSERT(data != NULL); - - Ivug_MainView *pMainView = (Ivug_MainView *)data; - - Slide_Item *sitem = ivug_slider_get_current_slide_item(pMainView->slider); - Media_Data *mdata = ivug_data_get_data(sitem->mitem); - - if (mdata == NULL) - { - MSG_MAIN_ERROR("slide data is NULL"); - return; - } - - if (pMainView->mode == IVUG_MODE_FILE || pMainView->mode == IVUG_MODE_DISPLAY || pMainView->mode == IVUG_MODE_SINGLE ) - { - MSG_MAIN_HIGH("Launching simple video player. Mode=%d", pMainView->mode); - ivug_ext_aul_launch(pMainView->layout, IVUG_EXT_AUL_SIMPLE_VIDEOPLAYER, mdata->filepath, NULL); - } - else - { - MSG_MAIN_HIGH("Launching normal video player"); - ivug_ext_aul_launch(pMainView->layout, IVUG_EXT_AUL_VIDEOPLAYER, mdata->filepath, NULL); - } - -} - -static void -_ivug_main_view_long_pressed(void *data, Evas_Object *obj, void *event_info) -{ - Evas_Coord_Point* down_pose = (Evas_Coord_Point*)event_info; - ivug_ret_if(!data||!down_pose); - - Ivug_MainView *pMainView = (Ivug_MainView *)data; - - MSG_MAIN_HIGH("LongPressed XY(%d,%d)", down_pose->x, down_pose->y); - - int x = down_pose->x; - int y = down_pose->y; - - Slide_Item *si = ivug_slider_get_current_slide_item(pMainView->slider); - IV_ASSERT(si != NULL); - - if ( ivug_slider_item_get_state(si) != SLIDE_STATE_LOADED) - { - MSG_MAIN_ERROR("Long pressed. but state is not ready"); - return; - } - - pMainView->copy_popup = _ivug_main_create_copy_popup_create(pMainView, x, y); - if (pMainView->copy_popup == NULL) - { - IVUG_DEBUG_WARNING("copy popup create failed"); - return ; - } - -} - - -static void -_ivug_main_view_slider_changed_cb(void *data, Evas_Object *obj, void *event_info) -{ - MSG_MAIN_HIGH("Image slider changed callback. "); - - ivug_ret_if(!data); - - Ivug_MainView *pMainView = (Ivug_MainView *)data; - Slide_Item *sitem = (Slide_Item *)event_info; - - if ( sitem == NULL || sitem->mitem == NULL) - { - // There is no item existed. terminate UG - MSG_MAIN_ERROR("No item is remained. exit UG. Sitem=0x%08x", sitem); - IVUG_MAIN_DESTROY_ME(pMainView); - return; - } - - if(pMainView->selectioninfo != NULL) - { - MSG_MAIN_MED("Delete small noti"); - evas_object_del(pMainView->selectioninfo); - pMainView->selectioninfo = NULL; - } - if (pMainView->copy_popup) - { - MSG_MAIN_MED("Delete copy popup"); - evas_object_del(pMainView->copy_popup); - pMainView->copy_popup = NULL; - } - -// Update Main View. - if ( pMainView->bShowMenu == true ) - { - PERF_CHECK_BEGIN(LVL5 "Update main view"); - _update_main_view(pMainView, sitem); - PERF_CHECK_END(LVL5 "Update main view"); - } - -} - - -static void -_ivug_main_view_slider_item_state_changed_cb(void *data, Evas_Object *obj, void *event_info) -{ - MSG_MAIN_HIGH("Image slider item state changed callback. "); - ivug_ret_if(!data); - - Ivug_MainView *pMainView = (Ivug_MainView *)data; - Slide_Item *sitem = (Slide_Item *)event_info; - - if ( sitem == NULL || sitem->mitem == NULL) - { - // There is no item existed. terminate UG - MSG_MAIN_ERROR("No item is remained. exit UG"); - IVUG_MAIN_DESTROY_ME(pMainView); - return; - } - -// Update Main View. - if ( pMainView->bShowMenu == true ) - { - _update_main_view(pMainView, sitem); - } -} - - -static void -_ivug_main_view_slider_deleted_cb(void *data, Evas_Object *obj, void *event_info) -{ - MSG_MAIN_HIGH("Image slider deleted callback. "); - ivug_ret_if(!data); - - Ivug_MainView *pMainView = (Ivug_MainView *)data; - Slide_Item *sitem = (Slide_Item *)event_info; - - if ( sitem == NULL || sitem->mitem == NULL ) - { - // There is no item existed. terminate UG - MSG_MAIN_ERROR("No item is remained. exit UG"); - IVUG_MAIN_DESTROY_ME(pMainView); - return; - } - - _main_view_create_selection_info(pMainView, IDS_DELETED); - - if ( pMainView->bShowMenu == true ) - { - _update_main_view(pMainView, sitem); - } - -} - - -static void -_ivug_main_view_slider_slideshow_finished_cb(void *data, Evas_Object *obj, void *event_info) -{ - IV_ASSERT(data != NULL); - MSG_MAIN_HIGH("Slide show finished callback. "); - - Ivug_MainView *pMainView = (Ivug_MainView *)data; - - ivug_allow_lcd_off(); - ivug_slider_stop_slide_show(pMainView->slider); - - elm_object_item_disabled_set(pMainView->ctrl_bar_item[1], EINA_FALSE); - - _ivug_main_view_show_menu_bar(pMainView); -} - -static void -_ivug_main_view_slider_slideshow_interrupted_cb(void *data, Evas_Object *obj, void *event_info) -{ - IV_ASSERT(data != NULL); - MSG_MAIN_HIGH("Slide show interrupted callback. "); - - Ivug_MainView *pMainView = (Ivug_MainView *)data; - - ivug_allow_lcd_off(); - - elm_object_item_disabled_set(pMainView->ctrl_bar_item[1], EINA_FALSE); - - _ivug_main_view_show_menu_bar(pMainView); -} - - - -#ifdef TEST_MOUSE_EVENT -void _on_receive_mouse_move (void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - char *tt = data; - MSG_MAIN_HIGH("Hmm!!! %s", tt); -} -#endif - -static void -_on_menu_state_changed(void *data, Evas_Object *obj, const char *emission, const char *source) -{ - Ivug_MainView *pMainView = data; - - MSG_MAIN_HIGH("Receive %s %s", emission, source); - - if ( strncmp(emission, "menu,show,finished", strlen(emission)) == 0 ) - { - elm_widget_disabled_set(pMainView->ctrl_bar, EINA_FALSE); - } - else - { - evas_object_hide(pMainView->ctrl_bar); - elm_widget_disabled_set(pMainView->ctrl_bar, EINA_TRUE); - } -} - -bool -ivug_main_view_load_list(Ivug_MainView *pMainView, ivug_parameter* ivug_param) -{ - MSG_MAIN_HIGH("Load media list."); - - PERF_CHECK_BEGIN(LVL1 "create media list"); - - Media_Data *mdata = ivug_slider_create_media_list(pMainView->slider, ivug_param); - if (mdata == NULL) - { - MSG_MAIN_ERROR("Creating media list is failed"); - return false; - } - - PERF_CHECK_END(LVL1 "create media list"); - - return true; -} - -Ivug_MainView * -ivug_main_view_create(Evas_Object* parent, ivug_mode mode, ivug_view_by view_by) -{ - IV_ASSERT(parent != NULL); - - MSG_MAIN_HIGH("Creating main view. Parent=0x%08x Mode=%d ViewBy=%d", parent, mode, view_by); - - PERF_CHECK_BEGIN(LVL2 "Create layout"); - -//create main view layout - Ivug_MainView *pMainView = calloc(1, sizeof(Ivug_MainView) ); - IV_ASSERT(pMainView != NULL); - -// Set default value - pMainView->parent = parent; - pMainView->bShowMenu = true; - pMainView->ugHandle = gGetUGHandle(); - pMainView->mode = mode; - pMainView->view_by = view_by; - - Evas_Object *layout; - layout = elm_layout_add(parent); - if ( layout == NULL) //if failed - { - MSG_MAIN_ERROR("main layout create failed"); - free(pMainView); - return NULL; - } - - pMainView->layout = layout; - - PERF_CHECK_END(LVL2 "Create layout"); - - PERF_CHECK_BEGIN(LVL2 "load EDJ"); - - if (elm_layout_file_set(layout, IVUG_MAIN_EDJ, "mainview") == EINA_FALSE) - { - MSG_MAIN_ERROR("edj loading fail, file=%s group=%s", IVUG_MAIN_EDJ, IVUG_MAIN_EDJ); - evas_object_del(layout); - free(pMainView); - return NULL; - } - - edje_object_signal_callback_add(_EDJ(pMainView->layout), - "menu,hide,finished", - "edc", - _on_menu_state_changed, - (void *)pMainView); - - edje_object_signal_callback_add(_EDJ(pMainView->layout), - "menu,show,finished", - "edc", - _on_menu_state_changed, - (void *)pMainView); - - evas_object_show(layout); - -// Navigation bar - pMainView->navi_bar = elm_naviframe_add(layout); - if ( pMainView->navi_bar == NULL) - { - MSG_MAIN_ERROR("navigation bar failed"); - ivug_main_view_destroy(pMainView); - return NULL; - } - -// Layout life cycle is controlled by application explictily. - elm_naviframe_content_preserve_on_pop_set(pMainView->navi_bar, EINA_TRUE); - -#ifdef USE_CUSTOM_STYLE - elm_object_theme_set(pMainView->navi_bar, gGetSystemTheme() ); - Eina_Bool bstyle = elm_object_style_set(pMainView->navi_bar, "ivug/default"); - MSG_MAIN_HIGH("navi_bar elm_object_style_set result = %d", bstyle); -#endif - - elm_object_part_content_set(layout, "mainview.navibar", pMainView->navi_bar); //swallow - - pMainView->empty_layout = elm_layout_add(layout); //create centents layout. - if (elm_layout_file_set(pMainView->empty_layout, IVUG_MAIN_EDJ, "navi_content")) - { - MSG_MAIN_HIGH("create Empty layout for navigation bar. Navi=0x%08x Empty Layout=0x%08x", pMainView->navi_bar, pMainView->empty_layout); - } - else - { - IVUG_DEBUG_WARNING("layout sawllow failed"); - ivug_main_view_destroy(pMainView); - return NULL; - } - - //create slider - pMainView->slider = ivug_slider_add(pMainView->empty_layout); - if (pMainView->slider == NULL) - { - MSG_MAIN_ERROR("image slider create failed"); - ivug_main_view_destroy(pMainView); - return NULL; - } - elm_object_part_content_set(pMainView->empty_layout, "mainview.slider", pMainView->slider); //swallow - - Evas_Object *back_btn = elm_button_add(pMainView->navi_bar); - elm_object_text_set(back_btn, IDS_BACK ); //elm_button_icon_set - elm_object_style_set(back_btn, "naviframe/end_btn/default"); - - evas_object_smart_callback_add(back_btn, "clicked", _ivug_main_view_back_cb, pMainView); - - pMainView->navi_it = elm_naviframe_item_push(pMainView->navi_bar, IDS_LOADING , back_btn, NULL, pMainView->empty_layout, NULL); - - pMainView->back_btn = back_btn; - - if (pMainView->mode != IVUG_MODE_DISPLAY) // Display mode has no control bar in bottom. - { - pMainView->ctrl_bar = _create_ctrl_bar(pMainView->navi_bar, gGetSystemTheme()); - elm_object_item_part_content_set(pMainView->navi_it, "controlbar", pMainView->ctrl_bar); - } - - PERF_CHECK_END(LVL2 "load EDJ"); - - PERF_CHECK_BEGIN(LVL2 "add slider"); - - //elm_object_part_content_set(layout, "mainview.slider", pMainView->slider); //swallow - -//register mouse call back. - evas_object_smart_callback_add(pMainView->slider, "slider,clicked", _ivug_main_view_clicked, pMainView); - evas_object_smart_callback_add(pMainView->slider, "slider,longpressed", _ivug_main_view_long_pressed, pMainView); - evas_object_smart_callback_add(pMainView->slider, "slider,clicked,icon", _ivug_main_view_icon_clicked, pMainView); - - evas_object_smart_callback_add(pMainView->slider, "slider,item,changed", _ivug_main_view_slider_changed_cb, pMainView); - evas_object_smart_callback_add(pMainView->slider, "slider,item,deleted", _ivug_main_view_slider_deleted_cb, pMainView); - evas_object_smart_callback_add(pMainView->slider, "slider,slideshow,finished", _ivug_main_view_slider_slideshow_finished_cb, pMainView); - evas_object_smart_callback_add(pMainView->slider, "slider,slideshow,interrupted", _ivug_main_view_slider_slideshow_interrupted_cb, pMainView); - evas_object_smart_callback_add(pMainView->slider, "slider,item,state,changed", _ivug_main_view_slider_item_state_changed_cb, pMainView); - -#ifdef TEST_MOUSE_EVENT - evas_object_event_callback_add(pMainView->navi_bar, EVAS_CALLBACK_MOUSE_MOVE, _on_receive_mouse_move, "navigarion"); - evas_object_event_callback_add(pMainView->layout, EVAS_CALLBACK_MOUSE_MOVE, _on_receive_mouse_move, "layout"); - evas_object_event_callback_add(pMainView->parent, EVAS_CALLBACK_MOUSE_MOVE, _on_receive_mouse_move, "base"); - evas_object_event_callback_add(pMainView->slider, EVAS_CALLBACK_MOUSE_MOVE, _on_receive_mouse_move, "slider"); - evas_object_event_callback_add(edje_object_part_object_get(_EDJ(pMainView->layout) , "clip"), EVAS_CALLBACK_MOUSE_MOVE, _on_receive_mouse_move, "clip"); - evas_object_event_callback_add(edje_object_part_object_get(_EDJ(pMainView->layout) , "mainview.navibar"), EVAS_CALLBACK_MOUSE_MOVE, _on_receive_mouse_move, "navi swallow"); - evas_object_event_callback_add(pMainView->ctrl_bar, EVAS_CALLBACK_MOUSE_MOVE, _on_receive_mouse_move, "controlbar"); -#endif - - PERF_CHECK_END(LVL2 "add slider"); - - PERF_CHECK_BEGIN(LVL2 "add event handler"); - - edje_object_signal_callback_add(_EDJ(pMainView->empty_layout), - "mainview,zoom_out,clicked", - "", - _ivug_main_view_zoom_out_cb, - (void *)pMainView); - edje_object_signal_callback_add(_EDJ(pMainView->empty_layout), - "mainview,zoom_in,clicked", - "", - _ivug_main_view_zoom_in_cb, - (void *)pMainView); - - _show_zoom_icon(pMainView); - - int ret = -1; - MSG_IMAGEVIEW_HIGH("Register System notifications"); - ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_MMC_STATUS, _on_mmc_state_changed, pMainView); - if ( ret == -1 ) - { - MSG_IMAGEVIEW_ERROR("Register %s is failed", VCONFKEY_SYSMAN_MMC_STATUS); - } - - pMainView->keydown_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, - (void *)_key_down_cb, - (void *)pMainView); - - MSG_MAIN_HIGH("Main View starting"); - -// For debugging. - DELETE_NOTIFY(pMainView->layout); - - PERF_CHECK_END(LVL2 "add event handler"); - - return pMainView; - -} - - -Evas_Object * -ivug_main_view_object_get(Ivug_MainView *pMainView) -{ - IV_ASSERT(pMainView != NULL); - - return pMainView->layout; -} - -void -ivug_main_view_update(Ivug_MainView *pMainView) -{ - IV_ASSERT(pMainView != NULL); - - MSG_MAIN_HIGH("Main View Update"); - - Slide_Item *sitem = ivug_slider_get_current_slide_item(pMainView->slider); - Media_Data *mdata = ivug_data_get_data(sitem->mitem); - - ivug_ret_if(!mdata); - -// TODO : Check this routine!. -// TODO : Should implement again!! - - if (mdata->slide_type == SLIDE_TYPE_IMAGE || mdata->slide_type == SLIDE_TYPE_VIDEO ) - { - if(mdata->filepath && ecore_file_exists(mdata->filepath)) // Current file is not deleted - { - MSG_MAIN_HIGH("Current filepath : %s", mdata->filepath); - } - else - { - /*if file is not exist ug terminated temporally */ - MSG_MAIN_ERROR("Center slide file is not exist"); - IVUG_MAIN_DESTROY_ME(pMainView); - return ; - } - } - -// When resume, menu bar will be appeared. - _ivug_main_view_show_menu_bar(pMainView); -} - - -void -ivug_main_view_destroy(Ivug_MainView *pMainView) -{ - IV_ASSERT(pMainView != NULL); - - MSG_MAIN_HIGH("ENTER : Main View Destroy. pMainView=0x%08x", pMainView); - - if( pMainView->event_blocker ) - { - MSG_MAIN_HIGH("delete event blocker"); - evas_object_del(pMainView->event_blocker); - pMainView->event_blocker = NULL; - } - - if(pMainView->ext_ug) - { - MSG_MAIN_HIGH("destroy ug"); - ug_destroy(pMainView->ext_ug); - pMainView->ext_ug = NULL; - } - - if( pMainView->pDetailsView ) - { - MSG_MAIN_HIGH("Details View Destroy"); - - ivug_details_view_destroy(pMainView->pDetailsView); - pMainView->pDetailsView = NULL; - } - - if(pMainView->layout) // Remove topmost parent in main view. - { - evas_object_del(pMainView->layout); - pMainView->layout = NULL; - } - - if (pMainView->exit_timer) - { - ecore_timer_del(pMainView->exit_timer); - pMainView->exit_timer = NULL; - } - - int ret = -1; - - MSG_IMAGEVIEW_HIGH("Unregister system notifications"); - - if(pMainView->keydown_handler) - { - ecore_event_handler_del(pMainView->keydown_handler); - pMainView->keydown_handler = NULL; - } - - ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_MMC_STATUS, _on_mmc_state_changed); - if ( ret == -1 ) - { - MSG_IMAGEVIEW_ERROR("Unegister %s is failed", VCONFKEY_SYSMAN_MMC_STATUS); - } - - free(pMainView); - - MSG_MAIN_HIGH("LEAVE : Main View Destroy."); - - return ; -} - diff --git a/main/src/view/ivug-main-view.h b/main/src/view/ivug-main-view.h deleted file mode 100755 index 7d1a648..0000000 --- a/main/src/view/ivug-main-view.h +++ /dev/null @@ -1,133 +0,0 @@ -/* - * 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 __IVUG_MAIN_VIEWER_H__ -#define __IVUG_MAIN_VIEWER_H__ - -#include "ivug-common.h" -#include "ivug-details-view.h" -#include "ivug-setas-view.h" - -#define MAX_CTRL_ITEM_CNT 5 -#define MAX_NAVI_ITEM_CNT 3 - -//navigation bar type -typedef enum NAVI_BAR_TYPE { - NAVI_BAR_TYPE_NONE = 0x00, - NAVI_BAR_TYPE_EMPTY, // no control bar - NAVI_BAR_TYPE_IMAGE, // no control bar - NAVI_BAR_TYPE_VIDEO, // no control bar - NAVI_BAR_TYPE_SELECT, // [Ok, Cancel] from take photo -} _navi_bar_type; - -//control bar type -typedef enum CTRL_BAR_TYPE{ - CTRL_BAR_TYPE_NONE = 0x00, - CTRL_BAR_TYPE_EMPTY, // not exist ctrl bar - CTRL_BAR_TYPE_FILE, // [Delete,Info] file manager, video at gallery - CTRL_BAR_TYPE_CAMERA_IMAGE, // [Delete,Info] camera image file - CTRL_BAR_TYPE_CAMERA_VIDEO, // [Delete,Info] camera video file - CTRL_BAR_TYPE_IMAGE, // [Delete,Slide show, Info] from gallery - CTRL_BAR_TYPE_VIDEO, // [Delete,Slide show, Info] from gallery -} _ctrl_bar_type; - - -typedef struct { - Evas_Object *parent; - - Evas_Object *layout; /*Layout widget based on EDJ*/ - - Evas_Object *navi_bar; - Elm_Object_Item *navi_it; - Evas_Object* empty_layout; //navigation bar contents layout - Evas_Object* slider; //image viewer slider - Evas_Object* event_blocker; - - Evas_Object* selectioninfo; - - Evas_Object *back_btn; - -/* - |-------------------| - |naviframe(tool_bar)| - |-------------------| - | | - | | - | | - | | - |-------------------| - | ctrl_bar | - |-------------------| -*/ - -// Tool Bar - enum NAVI_BAR_TYPE tool_bar_type; - Evas_Object* tool_bar_item[MAX_NAVI_ITEM_CNT]; // Control bar item in navigation header. ex) SetAs, Info - -// Control Bar - Evas_Object *ctrl_bar; - enum CTRL_BAR_TYPE ctrl_bar_type; - Elm_Object_Item *ctrl_bar_item[MAX_CTRL_ITEM_CNT]; // Bottom control bar item. ex) Delete, etc... - - Evas_Object* popup; //popup - Evas_Object* copy_popup; //copy popup - Eina_List* popup_list; - - Ivug_SetAsView *pSetAsView; - - Ivug_DetailsView *pDetailsView; - - Evas_Object *btn_detail; - Evas_Object *btn_detail_data; - -//flag - bool bShowMenu; - - ivug_mode mode; - ivug_view_by view_by; - - struct ui_gadget *ext_ug; - - struct ui_gadget *ugHandle; - - Ecore_Event_Handler *keydown_handler; - - Ecore_Timer *exit_timer; - - Eina_Bool option_show; -} Ivug_MainView; - - -/* - Create MainView layout -*/ -Ivug_MainView * -ivug_main_view_create(Evas_Object* parent, ivug_mode mode, ivug_view_by view_by); - -Evas_Object * -ivug_main_view_object_get(Ivug_MainView *pMainView); - -/* - Load media list from parameter. -*/ -bool ivug_main_view_load_list(Ivug_MainView *pMainView, ivug_parameter* ivug_param); - -void ivug_main_view_update(Ivug_MainView *pMainView); - -void ivug_main_view_destroy(Ivug_MainView *pMainView); - -#endif //__IVUG_MAIN_VIEWER_H__ diff --git a/main/src/view/ivug-popup.c b/main/src/view/ivug-popup.c deleted file mode 100755 index 1ad940c..0000000 --- a/main/src/view/ivug-popup.c +++ /dev/null @@ -1,262 +0,0 @@ -/* - * 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 "ivug-popup.h" - -#include // ug_destroy_me, ug_send_result -#include - -#define NOTIFY_TIMEOUT 3.0 - -static void -_ivug_popup_timeout_cb(void *data, Evas_Object *obj, void *event_info) -{ - ivug_ret_if(obj == NULL); - - evas_object_del(obj); - obj = NULL; -} - -static void _on_warningpopup_response(void *data, Evas_Object *obj, void *event_info ) -{ - - IV_ASSERT(data != NULL); - - Evas_Object *popup = (Evas_Object *)data; - Popup_Response response = (Popup_Response)evas_object_data_get(obj, "response"); - MSG_IMAGEVIEW_HIGH("response callback=%d", response); - - evas_object_del(popup); // Remove popup -} - -Evas_Object* -ivug_popup_warning(Evas_Object* parent, const char* title, const char* contents) -{ - Evas_Object *popup; - Evas_Object *btn_ok; - //create popup - - popup = elm_popup_add(parent); - evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_object_text_set(popup, contents); - elm_object_part_text_set(popup, "title,text", title); - - btn_ok = elm_button_add(popup); - elm_object_text_set(btn_ok, IDS_OK); - elm_object_part_content_set(popup, "button1", btn_ok); - evas_object_data_set(btn_ok, "response", (void *)POPUP_RESPONSE_OK); - evas_object_smart_callback_add(btn_ok, "clicked", _on_warningpopup_response, popup); - - evas_object_show(popup); - - return popup; -} - -static void _on_questionpopup_response(void *data, Evas_Object *obj, void *event_info ) -{ - - IV_ASSERT(data != NULL); - - Evas_Object *popup = (Evas_Object *)data; - Popup_Response response = (Popup_Response)evas_object_data_get(obj, "response"); - MSG_IMAGEVIEW_HIGH("response callback=%d", response); - - if ( response == POPUP_RESPONSE_OK ) - { - void *user_data = NULL; - Evas_Smart_Cb responseCB = NULL; - - responseCB = evas_object_data_get(popup, "question-response"); - user_data = evas_object_data_get(popup, "question-data"); - - responseCB(user_data, popup, (void *)POPUP_RESPONSE_OK); - } - - evas_object_del(popup); // Remove popup -} - -Evas_Object* -ivug_popup_question(Evas_Object* parent, const char* title, const char* contents, - Evas_Smart_Cb response_cb, void* user_data) -{ - Evas_Object *popup; - Evas_Object *btn_yes; - Evas_Object *btn_no; - //create popup - - IV_ASSERT(response_cb != NULL); - - popup = elm_popup_add(parent); - evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_object_text_set(popup, contents); - elm_object_part_text_set(popup, "title,text", title); - - btn_yes = elm_button_add(popup); - elm_object_text_set(btn_yes, IDS_YES); - elm_object_part_content_set(popup, "button1", btn_yes); - evas_object_data_set(btn_yes, "response", (void *)POPUP_RESPONSE_OK); - evas_object_smart_callback_add(btn_yes, "clicked", _on_questionpopup_response, popup); - - btn_no = elm_button_add(popup); - elm_object_text_set(btn_no, IDS_NO); - elm_object_part_content_set(popup, "button2", btn_no); - evas_object_data_set(btn_no, "response", (void *)POPUP_RESPONSE_CANCEL); - evas_object_smart_callback_add(btn_no, "clicked", _on_questionpopup_response, popup); - - evas_object_data_set(popup, "question-response", response_cb); - evas_object_data_set(popup, "question-data", user_data); - - evas_object_show(popup); - - return popup; -} - -Evas_Object* -ivug_popup_selectioninfo(Evas_Object* parent, const char* contents) -{ - Evas_Object *notify; - - notify = elm_notify_add(parent); - ivug_retv_if(notify == NULL, NULL); - elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_BOTTOM); - evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(notify, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_smart_callback_add(notify, "timeout", _ivug_popup_timeout_cb, NULL); - elm_notify_timeout_set(notify, NOTIFY_TIMEOUT); - - Evas_Object* layout = elm_layout_add(parent); - - elm_object_theme_set(layout, gGetSystemTheme()); - - elm_layout_theme_set(layout, "standard", "selectioninfo", "vertical/bottom_86"); - - evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_object_content_set(notify, layout); - edje_object_part_text_set(_EDJ(layout), "elm.text", contents); - - evas_object_show(notify); - - return notify; -} - - -static void _on_popup_response_exit( void *data, Evas_Object *obj, void *event_info ) -{ - MSG_IMAGEVIEW_HIGH("response callback=%d",(int)event_info); - - evas_object_del(obj); - - ug_destroy_me(gGetUGHandle()); -} - - -static void _on_popup_response( void *data, Evas_Object *obj, void *event_info ) -{ - MSG_IMAGEVIEW_HIGH("response callback=%d",(int)event_info); - - evas_object_del(obj); // Remove popup -} - -Evas_Object *ivug_show_exit_popup(Evas_Object *parent, const char *sztitle, const char *szmsg) -{ - Evas_Object *popup; - - popup = elm_popup_add(parent); - - evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - - if ( szmsg ) - elm_object_text_set(popup, szmsg); - - if ( sztitle ) - elm_object_part_text_set(popup, "title,text", sztitle); - - elm_popup_timeout_set(popup, 3.0); - evas_object_smart_callback_add(popup, "timeout", _on_popup_response_exit, NULL); - - evas_object_show(popup); - - return popup; - -} - -Evas_Object *ivug_show_popup(Evas_Object *parent, const char *sztitle, - const char *szmsg, Evas_Smart_Cb response_cb, void *user_data) -{ - Evas_Object *popup; - - popup = elm_popup_add(parent); - - evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - - if ( szmsg ) - { - elm_object_text_set(popup, szmsg); - } - - if ( sztitle ) - elm_object_part_text_set(popup, "title,text", sztitle); - - elm_popup_timeout_set(popup, 3.0); - - if(response_cb) - evas_object_smart_callback_add(popup, "timeout", response_cb, user_data); - else - evas_object_smart_callback_add(popup, "timeout", _on_popup_response, user_data); - - evas_object_show(popup); - evas_object_focus_set(popup, EINA_TRUE); - - return popup; -} - -Evas_Object *ivug_show_popup_va(Evas_Object *parent, const char *sztitle, const char *fmt, ...) -{ - char buf[1024]; - - Evas_Object *popup; - - popup = elm_popup_add(parent); - - evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - - va_list ap; - - va_start(ap, fmt); - - vsnprintf(buf, (size_t)sizeof(buf), fmt, ap); - - va_end(ap); - - elm_object_text_set(popup, buf); - - if ( sztitle ) - elm_object_part_text_set(popup, "title,text", sztitle); - - elm_popup_timeout_set(popup, 3.0); - evas_object_smart_callback_add(popup, "timeout", _on_popup_response, NULL); - -// evas_object_focus_set(popup, EINA_TRUE); - - evas_object_show(popup); - - return popup; - -} - - diff --git a/main/src/view/ivug-popup.h b/main/src/view/ivug-popup.h deleted file mode 100755 index a0609e7..0000000 --- a/main/src/view/ivug-popup.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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 __IVUG_POPUP_H__ -#define __IVUG_POPUP_H__ - -#include "ivug-common.h" -#include "ivug-main.h" - -enum IVUG_LIST_POPUP_TYPE -{ - IVUG_LIST_POPUP_SET_WALLPAPER, -} _ivug_list_popup_type; - - -typedef enum _Popup_Response -{ - POPUP_RESPONSE_NONE = -1, - POPUP_RESPONSE_TIMEOUT = -2, - POPUP_RESPONSE_OK = -3, - POPUP_RESPONSE_CANCEL = -4, - POPUP_RESPONSE_CLOSE = -5 -} Popup_Response; - -// it has one button -Evas_Object*ivug_popup_warning(Evas_Object* parent, const char* title, const char* contents); - -// it has two button -Evas_Object* -ivug_popup_question(Evas_Object* parent, const char* title, const char* contents, - Evas_Smart_Cb response_cb, void* user_data); - -Evas_Object* -ivug_popup_create_popup_list(Evas_Object *parent ,enum IVUG_LIST_POPUP_TYPE type, const char* title, Eina_List* list, - void* lable_func, void* select_func, void* response_func, void *data); - -Evas_Object* -ivug_popup_selectioninfo(Evas_Object* parent, const char* contents); - -Evas_Object *ivug_show_exit_popup(Evas_Object *parent, const char *sztitle, const char *szmsg); - -Evas_Object *ivug_show_popup(Evas_Object *parent, const char *sztitle, const char *szmsg, - void (*response_cb) ( void *data, Evas_Object *obj, void *event_info ), void *user_data); -Evas_Object *ivug_show_popup_va(Evas_Object *parent, const char *sztitle, const char *fmt, ...); - -#endif //__IVUG_POPUP_H__ \ No newline at end of file diff --git a/main/src/view/ivug-setas-view.c b/main/src/view/ivug-setas-view.c index 836478b..54b80f4 100755 --- a/main/src/view/ivug-setas-view.c +++ b/main/src/view/ivug-setas-view.c @@ -1,23 +1,21 @@ -/* - * 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 #include #include @@ -26,20 +24,23 @@ #include "ivug-common.h" #include "ivug-parameter.h" -#include "ivug-popup.h" #include "ivug-ext-ug.h" -#include "ivug-widget.h" -#include "ivug-main.h" - #include "ivug-setas-view.h" -#include "ivug-slider.h" +#include "ivug-setas-view-wallpaper.h" +#include "ivug-setas-view-callerid.h" +#include "ivug-setas.h" + + #include "ivug-listpopup.h" -/* - Used for storing cropped image. -*/ -#define IVUG_HOME_SCREEN_TEMP_PATH DATA_PATH"/.homescreen_tmp.jpg"; -#define IVUG_LOCK_SCREEN_TEMP_PATH DATA_PATH"/.lockscreen_tmp.jpg"; + +#define EDJ_PATH PREFIX"/res/edje/"PACKAGE + +#define TRANSITION_EFFECT + +#define IVUG_RESULT_BUNDLE_KEY_ERROR "Error" +#define IVUG_RESULT_BUNDLE_VALUE_NOT_SUPPORTED "not_supported_file_type" + /* Final image path @@ -48,212 +49,145 @@ #define IVUG_LOCK_SCREEN_PATH DATA_PATH"/.lockscreen.jpg"; /* - Image displays when incomming call is recevied. + Screen path for APPSVC */ +#define IVUG_APPSVC_HOME_SCREEN_PATH DATA_PATH"/.iv_homescreen.jpg"; -#define IVUG_RESULT_BUNDLE_KEY_ERROR "Error" -#define IVUG_RESULT_BUNDLE_VALUE_NOT_SUPPORTED "not_supported_file_type" - -#define CLICK_TIME_MAX (500) // click time. -#define CLICK_WIDTH_MIN (elm_config_finger_size_get() >> 1) //click width, if mouse move under this value and under click time, it is click. -#define CLICK_INTERVAL_TIME 0.15 -#define SETAS_EDJ_FILE EDJ_PATH"/ivug-setas.edj" +/* + Caller ID image +*/ +#define SET_AS_CALL_ID_PATH DATA_PATH"/.callerid.jpg" -#define IVUG_RESPONSE_OK (1) +#define SET_AS_VIDEO_CALL_ID_PATH DATA_PATH"/.videocallid.jpg" -#define TRANSITION_EFFECT +/* + Image displays when incomming call is recevied. +*/ +#define SET_AS_CALL_ID_LCD_PATH DATA_PATH"/.callerid_lcd.jpg" //set as enum { IVUG_SET_AS_TYPE_HOME = 0x00, IVUG_SET_AS_TYPE_LOCK, IVUG_SET_AS_TYPE_BOTH, + IVUG_SET_AS_TYPE_CALLER_ID, IVUG_SET_AS_TYPE_MAX, }; -static void -_ivug_setas_on_icon_set_clicked(void *data, Evas_Object* obj, const char *emission, const char *source ); -/*********************************Common Part**************************************/ +static void _OnOK(Ivug_SetAsView *pSetAsView); +static void _OnCancel(Ivug_SetAsView *pSetAsView); +static Evas_Object*_show_exit_popup( Evas_Object *parent, const char *title, const char *desc, void *data); +static void _send_result(ui_gadget_h ug, const char *key1, const char *val1, const char *key2, const char *val2); -static void -_setas_ug_view_deleted(void * data, Evas * e, Evas_Object * obj, void * event_info) -{ - char *szView = (char *)data; - - MSG_SETAS_WARN("%s is destroyed", szView); - return; -} static void -_ivug_setas_view_remove(Ivug_SetAsView *pSetAsView) +_on_msg_load_failed(void *data, Evas_Object *obj, void *event_info) { - MSG_SETAS_HIGH("Start destroy ug"); - ug_destroy_me(gGetUGHandle()); - return; -} - -static void -_ivug_setas_view_show_icons(Evas_Object *layout) -{ - ivug_retm_if(!layout, "pSetAsView->layout is NULL"); - - elm_win_indicator_mode_set(ug_get_window(), ELM_WIN_INDICATOR_SHOW); - - edje_object_signal_emit(_EDJ(layout), - "setasview,show,btn_cancel","elm"); - - edje_object_signal_emit(_EDJ(layout), - "setasview,show,btn_ok","elm"); -} - -static void -_ivug_setas_view_hide_icons(Evas_Object *layout) -{ - ivug_retm_if(!layout, "pSetAsView->layout is NULL"); - - elm_win_indicator_mode_set(ug_get_window(), ELM_WIN_INDICATOR_HIDE); - - edje_object_signal_emit(_EDJ(layout), - "setasview,hide,btn_cancel","elm"); + Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *) data; - edje_object_signal_emit(_EDJ(layout), - "setasview,hide,btn_ok","elm"); -} + SetAs_Error error = (SetAs_Error)event_info; -static void -_ivug_setas_view_unregister_set_signal(Evas_Object *layout, void (*func) (void *data, Evas_Object *obj, const char *emission, const char *source)) -{ - ivug_retm_if(!layout, "pSetAsView->layout is NULL"); + const char *szMsg = NULL; - edje_object_signal_callback_del(_EDJ(layout), - "setasview,set,clicked", - "", - func); -} - -static Eina_Bool -_ivug_setas_view_click_cb(void *data) -{ - Ivug_SetAsView *setas_data = (Ivug_SetAsView *)data; - if (setas_data->click_timer) + switch(error) { - ecore_timer_del(setas_data->click_timer); - setas_data->click_timer = NULL; + case SETAS_ERROR_TYPE_INVALID_FILE: + szMsg = IDS_INVALID_IMAGE_FILE; + break; + case SETAS_ERROR_TYPE_PERMISSION_DENIED: + szMsg = IDS_PERMISSION_DENIED; + break; + case SETAS_ERROR_TYPE_UNKNOWN_FORMAT: + szMsg = "Unknown format"; + break; + case SETAS_ERROR_TYPE_GENERAL: + default: + szMsg = IDS_FAILED; + break; } - setas_data->b_hide_bar_flag = !(setas_data->b_hide_bar_flag); + MSG_SETAS_ERROR("Load failed : %s", szMsg); - MSG_SETAS_HIGH("Bar flag is %d", setas_data->b_hide_bar_flag); - if(setas_data->b_hide_bar_flag) - { - _ivug_setas_view_hide_icons(setas_data->layout); - } - else + _show_exit_popup(obj, IDS_ERROR, szMsg, (void *)pSetAsView ); + + if ( pSetAsView->Mode == IVUG_SETAS_UG ) { - _ivug_setas_view_show_icons(setas_data->layout); + MSG_SETAS_ERROR("Send error message to ug caller app"); + _send_result(gGetUGHandle(), IVUG_RESULT_BUNDLE_KEY_ERROR, IVUG_RESULT_BUNDLE_VALUE_NOT_SUPPORTED, NULL, NULL); } - - return ECORE_CALLBACK_CANCEL; } static void -_ivug_setas_view_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info) +_on_msg_ok_clicked(void *data, Evas_Object *obj, void *event_info) { + MSG_SETAS_HIGH("ok clicked"); - Ivug_SetAsView *setas_data = (Ivug_SetAsView *)data; - Evas_Event_Mouse_Down *ev = event_info; - - MSG_SETAS_HIGH("Mouse down!"); - ivug_ret_if(!data); - - setas_data->down_pos.x = ev->canvas.x; - setas_data->down_pos.y = ev->canvas.y; - setas_data->timestamp = ev->timestamp; + Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *) data; - if (setas_data->click_timer) - { - ecore_timer_del(setas_data->click_timer); - setas_data->click_timer = NULL; - } + _OnOK(pSetAsView); } + static void -_ivug_setas_view_mouse_up_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info) +_on_msg_cancel_clicked(void *data, Evas_Object *obj, void *event_info) { - Ivug_SetAsView *setas_data = (Ivug_SetAsView *)data; - Evas_Event_Mouse_Up *ev = event_info; - int step; - unsigned int interval_time; - - MSG_SETAS_HIGH("Mouse up!"); - ivug_ret_if(!data); + MSG_SETAS_HIGH("cancel clicked"); - step = setas_data->down_pos.x - ev->canvas.x; - interval_time = ev->timestamp - setas_data->timestamp; + Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *) data; - if(ev->flags & EVAS_BUTTON_DOUBLE_CLICK) - { - MSG_SETAS_HIGH("double clicked"); - return; - } - if ((step < CLICK_WIDTH_MIN && step > -CLICK_WIDTH_MIN) && (interval_time < CLICK_TIME_MAX && interval_time > 0) ) - { - MSG_SETAS_HIGH("clicked"); - setas_data->click_timer = ecore_timer_add(CLICK_INTERVAL_TIME, _ivug_setas_view_click_cb , data); - return ; - } + _OnCancel(pSetAsView); } -/********************************* Common Function **************************************/ + static void -_ivug_setas_view_send_result(struct ui_gadget *ug, const char *key1, const char *val1, const char *key2, const char *val2) +_ivug_setas_view_remove(Ivug_SetAsView *pSetAsView) { - ivug_ret_if(!ug); + IV_ASSERT(pSetAsView != NULL); - bundle *b; - b = bundle_create(); - if(key1 && val1) +#if 0 + if(pSetAsView->select_box) { - MSG_SETAS_HIGH("Bundle 1 : [%s = %s]", key1, val1); - bundle_add(b, key1, val1); + evas_object_del(pSetAsView->select_box); + pSetAsView->select_box = NULL; } +#endif - if(key2 && val2) + if(pSetAsView->Mode == IVUG_SETAS_UG || pSetAsView->Mode == IVUG_SETAS_APPSVC) { - MSG_SETAS_HIGH("Bundle 2 : [%s = %s]", key2, val2); - bundle_add(b, key2, val2); + MSG_SETAS_HIGH("Start destroy ug"); + ug_destroy_me(gGetUGHandle()); + return; } - ug_send_result(ug, b); - bundle_free(b); -} + MSG_SETAS_HIGH( "destroy data"); + +#ifdef TRANSITION_EFFECT + edje_object_signal_emit(_EDJ(pSetAsView->ly_effect), "elm,state,hide", "app"); +#else + ivug_setas_view_destroy(pSetAsView); +#endif +} static void _ivug_setas_view_response_cb( void *data, Evas_Object *obj, void *event_info ) { MSG_SETAS_HIGH( "response callback=%d",(int)event_info); +// Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *)data; - evas_object_hide(obj); + evas_object_hide(obj); // popup evas_object_del(obj); - ivug_retm_if(!data, "data is NULL"); - _ivug_setas_view_remove((Ivug_SetAsView *)data); } -/** -* @brief -* -* @param title -* @param txt_noti -*/ + static Evas_Object* -_ivug_setas_view_show_exit_popup( Evas_Object *parent, const char *title, const char *desc, void *data) +_show_exit_popup( Evas_Object *parent, const char *title, const char *desc, void *data) { MSG_SETAS_HIGH( "title: %s, desc %s", title, desc); @@ -262,339 +196,283 @@ _ivug_setas_view_show_exit_popup( Evas_Object *parent, const char *title, const elm_popup_timeout_set(style1_popup, (double)2.0); elm_object_text_set(style1_popup, desc); elm_object_part_text_set(style1_popup, "title,text", title); + evas_object_smart_callback_add(style1_popup, "timeout", _ivug_setas_view_response_cb, data); + evas_object_show(style1_popup); evas_object_layer_set(style1_popup, EVAS_LAYER_MAX); return style1_popup; } -static Eina_Bool _ivug_setas_view_resize_save(Evas_Object *org, const char *filepath, int w, int h) +static void +_send_result(ui_gadget_h ug, const char *key1, const char *val1, const char *key2, const char *val2) { - IV_ASSERT(org != NULL); - IV_ASSERT(filepath != NULL); + ivug_ret_if(!ug); - if(w <= 0 || h <= 0) + service_h service; + service_create(&service); + if(key1 && val1) { - MSG_SETAS_ERROR("input size parameter is invalid, w = %d, h = %d", w, h); - return EINA_FALSE; + MSG_SETAS_HIGH("Bundle 1 : [%s = %s]", key1, val1); + service_add_extra_data(service, key1, val1); } - int img_w = 0; - int img_h = 0; - - evas_object_image_size_get(org, &img_w, &img_h); - MSG_SETAS_LOW("img_w = %d, img_h = %d", img_w, img_h); - MSG_SETAS_LOW("w = %d, h = %d", w, h); - - char *ImgBuffer = evas_object_image_data_get(org, EINA_FALSE); - - Ecore_Evas *ee; - Evas *evas; - - ee = ecore_evas_buffer_new(w, h); - IV_ASSERT(ee != NULL); - evas = ecore_evas_get(ee); - IV_ASSERT(evas != NULL); - - Evas_Object *input; - input = evas_object_image_filled_add(evas); - IV_ASSERT(input != NULL); - - evas_object_image_size_set(input, img_w, img_h); - evas_object_image_data_set(input, ImgBuffer); - evas_object_image_smooth_scale_set(input, EINA_TRUE); - evas_object_move(input, 0, 0); - evas_object_resize(input, w, h); - - evas_object_show(input); - evas_object_image_data_update_add(input, 0, 0, w, h); - - Ecore_Evas *ee_dest; - Evas *evas_dest; + if(key2 && val2) + { + MSG_SETAS_HIGH("Bundle 2 : [%s = %s]", key2, val2); + service_add_extra_data(service, key2, val2); + } - ee_dest = ecore_evas_buffer_new(1, 1); - IV_ASSERT(ee_dest != NULL); - evas_dest = ecore_evas_get(ee_dest); - IV_ASSERT(evas_dest != NULL); + ug_send_result(ug, service); + service_destroy(service); +} - Evas_Object *output; - output = evas_object_image_filled_add(evas_dest); - IV_ASSERT(output != NULL); - void *data = NULL; - data = (void*)ecore_evas_buffer_pixels_get(ee); - IV_ASSERT(data != NULL); - evas_object_image_size_set(output, w, h); - evas_object_image_data_set(output, data); +static void _on_setas_homescreen(Ivug_SetAsView *pSetAsView) +{ + const char *homescreen_path = NULL; - if (evas_object_image_save(output, filepath, NULL, NULL) == EINA_FALSE) + if(pSetAsView->Mode != IVUG_SETAS_APPSVC) { - MSG_SETAS_ERROR("evas_object_image_save error. %s", filepath); - evas_object_del(input); - evas_object_del(output); - return EINA_FALSE; + homescreen_path = IVUG_HOME_SCREEN_PATH; } else { - int fd = open(filepath, O_RDONLY); - if(fd < 0) - { - MSG_SETAS_ERROR("%s open error[%d]", filepath, fd); - evas_object_del(input); - evas_object_del(output); - return EINA_FALSE; - } - fsync(fd); - int ret = close(fd); - if(ret < 0) - { - MSG_SETAS_ERROR("%s open error[%d]", filepath, ret); - } + homescreen_path = IVUG_APPSVC_HOME_SCREEN_PATH; } - evas_object_del(input); - evas_object_del(output); - return EINA_TRUE; -} -static Eina_Bool -_ivug_setas_view_screen_create_file(Ivug_SetAsView *pSetAsView, char* screen_file) - { -// Delete the home screen file if exist - if (ivug_remove_file(screen_file) == false) - { - MSG_SETAS_ERROR( "Detele file %s failed", screen_file); - return EINA_FALSE; - } +// Save to Image + Evas_Coord_Rectangle box_rect; + evas_object_geometry_get(pSetAsView->content, &(box_rect.x), &(box_rect.y), &(box_rect.w), &(box_rect.h) ); - int x = 0; - int y = 0; - int w = 0; - int h = 0; + MSG_SETAS_HIGH("Rect XYWH(%d,%d,%d,%d)", box_rect.x, box_rect.y, box_rect.w , box_rect.h); - Evas *canvas; - Ecore_Evas *ee; - ee = ecore_evas_buffer_new(1, 1); - if (!ee) + Eina_Bool ret = EINA_FALSE; + + ret = _ivug_setas_save_home_screen(_ivug_setas_internal_image_get( pSetAsView->content) ,&box_rect,homescreen_path); + + if ( ret == false ) { - MSG_DETAIL_ERROR("Cannot get EVAS"); - return EINA_FALSE; + MSG_SETAS_ERROR("Error occured. when setAS. %s", homescreen_path); } - canvas = ecore_evas_get(ee); - Evas_Object *img = evas_object_image_add(canvas); - evas_object_image_file_set(img, NULL, NULL); - evas_object_image_load_orientation_set(img, EINA_TRUE); - evas_object_image_load_scale_down_set(img, 0); - - evas_object_image_file_set(img, pSetAsView->file_path, NULL); - Evas_Load_Error error = evas_object_image_load_error_get(img); - if ( error != EVAS_LOAD_ERROR_NONE) + if(pSetAsView->Mode != IVUG_SETAS_APPSVC) { - MSG_SETAS_ERROR("Decoding Error(%d) : %s", error, pSetAsView->file_path); - evas_object_image_file_set(img, NULL, NULL); - evas_object_del(img); - ecore_evas_free(ee); - return EINA_FALSE; + ret = ivug_config_set_homescreen_image(homescreen_path); } - elm_photocam_image_region_get(pSetAsView->photocam, &x, &y, &w, &h); - double zoom = elm_photocam_zoom_get(pSetAsView->photocam); - if(zoom != 0.0) + if(ret == true) { - w = w/zoom; - h = h/zoom; + _show_exit_popup(pSetAsView->content, IDS_HOME_SCREEN_WALLPAPER, IDS_SUCCESS, (void *)pSetAsView ); + _send_result(gGetUGHandle(), "homescreen_path", homescreen_path, NULL, NULL); + + MSG_SETAS_HIGH("Set Home screen: %s", homescreen_path); } - MSG_SETAS_HIGH("w = %d, h = %d", w, h); - if(_ivug_setas_view_resize_save(img, screen_file, w, h) == EINA_FALSE) + else { - MSG_SETAS_ERROR("setas image save faied."); - evas_object_image_file_set(img, NULL, NULL); - evas_object_del(img); - ecore_evas_free(ee); - return EINA_FALSE; + _show_exit_popup(pSetAsView->content, IDS_HOME_SCREEN_WALLPAPER, IDS_FAILED, (void *)pSetAsView ); } - evas_object_image_file_set(img, NULL, NULL); - evas_object_del(img); - ecore_evas_free(ee); - return EINA_TRUE; } -static void -_ivug_setas_on_change_home_screen(void *data, Evas_Object *obj, void *event_info) +static void _on_setas_lockscreen(Ivug_SetAsView *pSetAsView) { - IV_ASSERT(data != NULL); + MSG_SETAS_HIGH("Change Lock Screen"); - MSG_SETAS_HIGH("Change Home Screen"); + char* lockscreen_path = IVUG_LOCK_SCREEN_PATH; - Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *) data; +// Save to Image + Evas_Coord_Rectangle box_rect; + evas_object_geometry_get(pSetAsView->content, &(box_rect.x), &(box_rect.y), &(box_rect.w), &(box_rect.h) ); -// TODO : Remove dependancy - char* homescreen_path = IVUG_HOME_SCREEN_PATH; + MSG_SETAS_HIGH("Rect XYWH(%d,%d,%d,%d)", box_rect.x, box_rect.y, box_rect.w , box_rect.h); Eina_Bool ret = EINA_FALSE; - if((ret = _ivug_setas_view_screen_create_file(pSetAsView, homescreen_path)) == EINA_FALSE) - { - MSG_SETAS_ERROR( "Create screen file failed"); - goto end; - } + ret = _ivug_setas_save_lock_screen(_ivug_setas_internal_image_get( pSetAsView->content) ,&box_rect, lockscreen_path); - if( (ret = ivug_config_set_homescreen_image(homescreen_path)) == EINA_TRUE) + if ( ret == false ) { - pSetAsView->popup = _ivug_setas_view_show_exit_popup(pSetAsView->layout, IDS_HOME_SCREEN_WALLPAPER, IDS_SUCCESS, pSetAsView); + MSG_SETAS_ERROR("Error occured. when setAS. %s", lockscreen_path); } - else + + //Set the lock screen + if(pSetAsView->Mode != IVUG_SETAS_APPSVC) { - pSetAsView->popup = _ivug_setas_view_show_exit_popup(pSetAsView->layout, IDS_HOME_SCREEN_WALLPAPER, IDS_FAILED, pSetAsView); + ret = ivug_config_set_lockscreen_image(lockscreen_path); } - MSG_SETAS_HIGH("Set Home screen: %s", homescreen_path); -end: if(ret == EINA_TRUE) { - _ivug_setas_view_send_result(gGetUGHandle(), "homescreen_path", homescreen_path, NULL, NULL); + _show_exit_popup(pSetAsView->content, IDS_LOCK_SCREEN_WALLPAPER, IDS_SUCCESS, pSetAsView); + _send_result(gGetUGHandle(), "lockscreen_path", lockscreen_path, NULL, NULL); + + MSG_SETAS_HIGH("Set Lock screen: %s", lockscreen_path); + } + else + { + _show_exit_popup(pSetAsView->content, IDS_LOCK_SCREEN_WALLPAPER, IDS_FAILED, pSetAsView); } + } -static void -_ivug_setas_on_change_lock_screen(void *data, Evas_Object *obj, void *event_info) + +static void _on_setas_bothscreen(Ivug_SetAsView *pSetAsView) { - IV_ASSERT(data != NULL); + MSG_SETAS_HIGH("Change Home & Lock Screen"); - MSG_SETAS_HIGH("Change Lock Screen"); +// Set homescreen image + const char* homescreen_path = IVUG_HOME_SCREEN_PATH; + const char* lockscreen_path = IVUG_LOCK_SCREEN_PATH; - Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *) data; + Evas_Coord_Rectangle box_rect; + evas_object_geometry_get(pSetAsView->content, &(box_rect.x), &(box_rect.y), &(box_rect.w), &(box_rect.h) ); - char* lockscreen_path = IVUG_LOCK_SCREEN_PATH; + MSG_SETAS_HIGH("Rect XYWH(%d,%d,%d,%d)", box_rect.x, box_rect.y, box_rect.w , box_rect.h); Eina_Bool ret = EINA_FALSE; - if((ret = _ivug_setas_view_screen_create_file(pSetAsView, lockscreen_path)) == EINA_FALSE) - { - MSG_SETAS_ERROR( "Create screen file failed"); - goto end; - } + ret = _ivug_setas_save_homenlock_screen(_ivug_setas_internal_image_get( pSetAsView->content),&box_rect, homescreen_path, lockscreen_path); - //Set the lock screen - if((ret = ivug_config_set_lockscreen_image(lockscreen_path)) == EINA_TRUE) + char *title = elm_entry_utf8_to_markup(IDS_HOME_AND_LOCK_SCREENS); + + ret = ivug_config_set_homescreen_image(homescreen_path); + + if ( ret == false) { - pSetAsView->popup = _ivug_setas_view_show_exit_popup(pSetAsView->layout, IDS_LOCK_SCREEN_WALLPAPER, IDS_SUCCESS, pSetAsView); + _show_exit_popup(pSetAsView->content, title, IDS_FAILED, pSetAsView); } else { - pSetAsView->popup = _ivug_setas_view_show_exit_popup(pSetAsView->layout, IDS_LOCK_SCREEN_WALLPAPER, IDS_FAILED, pSetAsView); + ret = ivug_config_set_lockscreen_image(lockscreen_path); + if ( ret == false) + { + // TODO : Do I revet homescreen if either failed????? + _show_exit_popup(pSetAsView->content, title, IDS_FAILED, pSetAsView); + } + else + { + _show_exit_popup(pSetAsView->content, title, IDS_SUCCESS, pSetAsView); + } + } - MSG_SETAS_HIGH("Set Lock screen: %s", lockscreen_path); -end: - if(ret == EINA_TRUE) + MSG_SETAS_HIGH("Set Home&Lock screen: %s %s", homescreen_path, lockscreen_path); + free(title); + + if(pSetAsView->Mode == IVUG_SETAS_UG || pSetAsView->Mode == IVUG_SETAS_APPSVC) { - _ivug_setas_view_send_result(gGetUGHandle(), "lockscreen_path", lockscreen_path, NULL, NULL); + if(ret == EINA_TRUE) + { + _send_result(gGetUGHandle(), "homescreen_path", homescreen_path, "lockscreen_path", lockscreen_path); + } } } -static void -_ivug_setas_on_change_homeNlock_screen(void *data, Evas_Object *obj, void *event_info) + +static void _on_setas_callerid(Ivug_SetAsView *pSetAsView) { - IV_ASSERT(data != NULL); + MSG_SETAS_HIGH("Set Caller Image"); - MSG_SETAS_HIGH("Change Lock Screen"); +// Save to Image + Evas_Coord_Rectangle box_rect; + evas_object_geometry_get(pSetAsView->content, &(box_rect.x), &(box_rect.y), &(box_rect.w), &(box_rect.h) ); - Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *) data; + MSG_SETAS_HIGH("Rect XYWH(%d,%d,%d,%d)", box_rect.x, box_rect.y, box_rect.w , box_rect.h); -// Set homescreen image - char* homescreen_path = IVUG_HOME_SCREEN_PATH; +// LCD Image + Evas_Object *image = NULL; - char* lockscreen_path = IVUG_LOCK_SCREEN_PATH; + image = _ivug_setas_callerid_internal_image_get( pSetAsView->content); Eina_Bool ret = EINA_FALSE; - if((ret = _ivug_setas_view_screen_create_file(pSetAsView, homescreen_path)) == EINA_FALSE) + char *title = elm_entry_utf8_to_markup(IDS_CALLER_IMAGE); + + ret = _ivug_setas_save_cropimage(image, &box_rect, SET_AS_CALL_ID_LCD_PATH); + if ( ret == false ) { - MSG_SETAS_ERROR( "Create screen file failed"); - goto end; + MSG_SETAS_ERROR("Error occured. when setAS1. %s", SET_AS_CALL_ID_LCD_PATH); + _show_exit_popup(pSetAsView->content, title, IDS_FAILED, pSetAsView); + free(title); + return; } - char* temp_lock_path = IVUG_LOCK_SCREEN_TEMP_PATH; - if (ivug_remove_file(temp_lock_path) == false) +// Cropped Image + _ivug_setas_callerid_select_region_get(pSetAsView->content, &(box_rect.x), &(box_rect.y), &(box_rect.w), &(box_rect.h)); + + MSG_SETAS_HIGH("Cropped rect XYWH(%d,%d,%d,%d)", box_rect.x, box_rect.y, box_rect.w , box_rect.h); + + ret = _ivug_setas_save_cropimage(image ,&box_rect, SET_AS_CALL_ID_PATH); + if ( ret == false ) { - MSG_SETAS_ERROR( "Detele file %s: failed", temp_lock_path); - goto end; + MSG_SETAS_ERROR("Error occured. when setAS2. %s", SET_AS_CALL_ID_PATH); + _show_exit_popup(pSetAsView->content, title, IDS_FAILED, pSetAsView); + free(title); + return; } -// Make a copy from home screen to lock screen - if((ret = ecore_file_cp(homescreen_path, temp_lock_path)) == EINA_FALSE) + free(title); + + if(pSetAsView->Mode == IVUG_SETAS_UG || pSetAsView->Mode == IVUG_SETAS_APPSVC) { - MSG_SETAS_ERROR( "File copy failed"); - goto end; + _send_result(gGetUGHandle(), "crop_image_path", SET_AS_CALL_ID_PATH, "image_path", SET_AS_CALL_ID_LCD_PATH); } - else - { - if(ivug_rename_file(temp_lock_path, lockscreen_path) == false) - { - MSG_SETAS_ERROR( "Rename file %s to %s failed", temp_lock_path, lockscreen_path ); - if(ivug_remove_file(temp_lock_path)== false) - { - MSG_SETAS_ERROR( "delete tmp lock file failed %s", temp_lock_path); - } - ret = EINA_FALSE; - goto end; - } - sync(); //sync copied file. - } +} - char *title = elm_entry_utf8_to_markup(IDS_HOME_AND_LOCK_SCREEN_WALLPAPER); +static void _on_setas_video_call_id(Ivug_SetAsView *pSetAsView) +{ + MSG_SETAS_HIGH("Set Caller Image"); - ret = ivug_config_set_homescreen_image(homescreen_path); +// Save to Image + Evas_Coord_Rectangle box_rect; - if ( ret == false) +// LCD Image + Evas_Object *image = NULL; + + image = _ivug_setas_callerid_internal_image_get(pSetAsView->content); + + Eina_Bool ret = EINA_FALSE; + + char *title = elm_entry_utf8_to_markup(IDS_CALLER_IMAGE); + +// Cropped Image + _ivug_setas_callerid_select_region_get(pSetAsView->content, &(box_rect.x), &(box_rect.y), &(box_rect.w), &(box_rect.h)); + + MSG_SETAS_HIGH("Cropped rect XYWH(%d,%d,%d,%d)", box_rect.x, box_rect.y, box_rect.w , box_rect.h); + + ret = _ivug_setas_save_cropimage(image, &box_rect, SET_AS_VIDEO_CALL_ID_PATH); + if ( ret == false ) { - pSetAsView->popup = _ivug_setas_view_show_exit_popup(pSetAsView->layout, title, IDS_FAILED, pSetAsView); + MSG_SETAS_ERROR("Error occured. when setAS2. %s", SET_AS_VIDEO_CALL_ID_PATH); + _show_exit_popup(pSetAsView->content, title, IDS_FAILED, pSetAsView); + free(title); + return; } - else - { - ret = ivug_config_set_lockscreen_image(lockscreen_path); - if ( ret == false) - { - // TODO : Do I revet homescreen if either failed????? - pSetAsView->popup = _ivug_setas_view_show_exit_popup(pSetAsView->layout, title, IDS_FAILED, pSetAsView); - } - else - { - pSetAsView->popup = _ivug_setas_view_show_exit_popup(pSetAsView->layout, title, IDS_SUCCESS, pSetAsView); - } + if(pSetAsView->Mode == IVUG_SETAS_UG || pSetAsView->Mode == IVUG_SETAS_APPSVC) + { + _send_result(gGetUGHandle(), "crop_image_path", SET_AS_VIDEO_CALL_ID_PATH, NULL, NULL); } - MSG_SETAS_HIGH("Set Home&Lock screen: %s %s", homescreen_path, lockscreen_path); + _show_exit_popup(pSetAsView->content, title, IDS_SUCCESS, pSetAsView); + free(title); -end: - if(ret == EINA_TRUE) - { - _ivug_setas_view_send_result(gGetUGHandle(), "homescreen_path", homescreen_path, "lockscreen_path", lockscreen_path); - } } static void -_ivug_setas_wallpaper_set_selected_cb(void *data, Evas_Object *obj, void *event_info) +_on_type_popup_selected(void *data, Evas_Object *obj, void *event_info) { IV_ASSERT(data != NULL); Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *) data; - ivug_listpopup_item *item = event_info; - - edje_object_signal_callback_add(_EDJ(pSetAsView->layout), - "setasview,set,clicked", - "", - _ivug_setas_on_icon_set_clicked, - (void *)pSetAsView); + Ivug_ListPopup_Item *item = event_info; if ( item == NULL ) // Cancel is selected { @@ -605,25 +483,24 @@ _ivug_setas_wallpaper_set_selected_cb(void *data, Evas_Object *obj, void *event_ return; } - MSG_SETAS_HIGH("Create SetAsView. name= %s", item->caption); + const char *label = ivug_listpopup_item_get_data(item); + MSG_SETAS_HIGH("Create SetAsView. name= %s", label); - switch(item->index) + if ( strcmp(IDS_HOME_SCREEN, label) == 0 ) { - case IVUG_SET_AS_TYPE_HOME: - _ivug_setas_on_change_home_screen(data, NULL, NULL); - break; - - case IVUG_SET_AS_TYPE_LOCK: - _ivug_setas_on_change_lock_screen(data, NULL, NULL); - break; - - case IVUG_SET_AS_TYPE_BOTH: - _ivug_setas_on_change_homeNlock_screen(data, NULL, NULL); - break; - - default: - MSG_SETAS_ERROR("Unknown Set as type : %d", item->index); - break; + _on_setas_homescreen(pSetAsView); + } + else if ( strcmp(IDS_LOCK_SCREEN, label) == 0 ) + { + _on_setas_lockscreen(pSetAsView); + } + else if ( strcmp(IDS_HOME_AND_LOCK_SCREENS, label) == 0 ) + { + _on_setas_bothscreen(pSetAsView); + } + else + { + MSG_SETAS_ERROR("Unknown Set as type : %s", label); } evas_object_del(pSetAsView->genlist_popup); @@ -631,184 +508,209 @@ _ivug_setas_wallpaper_set_selected_cb(void *data, Evas_Object *obj, void *event_ } -static void -_ivug_setas_on_icon_cancel_clicked(void *data, Evas_Object* obj, const char *emission, const char *source ) +static void _dismissed_cb(void *data, Evas_Object *obj, void *event_info) { - MSG_SETAS_HIGH("Cancel button clicked"); - ivug_ret_if(!data); - - Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *) data; - - _ivug_setas_view_remove(pSetAsView); + MSG_SETAS_HIGH("Popup dissmissed"); } + static void -_ivug_setas_on_icon_set_clicked(void *data, Evas_Object* obj, const char *emission, const char *source ) +_OnOK(Ivug_SetAsView *pSetAsView) { - MSG_SETAS_HIGH("On Btn Done clicke"); - ivug_ret_if(!data); - - Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *) data; + MSG_SETAS_HIGH("On Btn Done clicked"); - _ivug_setas_view_unregister_set_signal(pSetAsView->layout, _ivug_setas_on_icon_set_clicked); + Evas_Object *obj; - if(pSetAsView->set_type == IVUG_CTRLBAR_SET_SCREEN_UNDEFINED) + switch(pSetAsView->Type) { - // In case of setting->wallpaper - MSG_SETAS_HIGH("Create setas wallpaper popup"); + case IVUG_CTRLBAR_SET_SCREEN_UNDEFINED: + MSG_SETAS_HIGH("Create setas wallpaper popup"); + + obj = ivug_listpopup_add(pSetAsView->content); + + evas_object_smart_callback_add(obj, "popup,dismissed", _dismissed_cb, pSetAsView); + evas_object_smart_callback_add(obj, "popup,selected", _on_type_popup_selected, pSetAsView); + + ivug_listpopup_item_append(obj, NULL,IDS_HOME_SCREEN, IDS_HOME_SCREEN); + ivug_listpopup_item_append(obj, NULL,IDS_LOCK_SCREEN, IDS_LOCK_SCREEN); + ivug_listpopup_item_append(obj, NULL,IDS_HOME_AND_LOCK_SCREENS, IDS_HOME_AND_LOCK_SCREENS); - ivug_listpopup_itemlist items = ivug_listpopup_itemlist_new(); + ivug_listpopup_title_set(obj, IDS_SET_AS); - ivug_listpopup_itemlist_add(items, IVUG_SET_AS_TYPE_HOME, NULL, IDS_HOME_SCREEN_WALLPAPER, NULL , false); - ivug_listpopup_itemlist_add(items, IVUG_SET_AS_TYPE_LOCK, NULL, IDS_LOCK_SCREEN_WALLPAPER, NULL , false); - ivug_listpopup_itemlist_add(items, IVUG_SET_AS_TYPE_BOTH, NULL, IDS_HOME_AND_LOCK_SCREEN_WALLPAPER, NULL , false); + ivug_listpopup_button_set(obj, IDS_CLOSE); - pSetAsView->genlist_popup = ivug_listpopup_show(pSetAsView->layout, IDS_SET_AS, items, _ivug_setas_wallpaper_set_selected_cb, pSetAsView); + ivug_listpopup_popup_show(obj); - ivug_listpopup_itemlist_free(items); + pSetAsView->genlist_popup = obj; + + break; + + case IVUG_CTRLBAR_SET_SCREEN_HOME: + _on_setas_homescreen(pSetAsView); + break; + case IVUG_CTRLBAR_SET_SCREEN_LOCK: + _on_setas_lockscreen(pSetAsView); + break; + case IVUG_CTRLBAR_SET_SCREEN_BOTH: + _on_setas_bothscreen(pSetAsView); + break; + case IVUG_CTRLBAR_SET_SCREEN_CALLERID: + _on_setas_callerid(pSetAsView); + break; + case IVUG_CTRLBAR_SET_SCREEN_VIDEO_CALL_ID: + _on_setas_video_call_id(pSetAsView); + break; + default: + MSG_SETAS_ERROR("Unknown Set as type : %d", pSetAsView->Type); + break; } -} +} static void -_ivug_setas_on_photocam_loaded(void *data, Evas_Object *obj, void *event_info) +_OnCancel(Ivug_SetAsView *pSetAsView) { - Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *) data; + MSG_SETAS_HIGH("On Btn cancel clicked"); - IV_ASSERT(pSetAsView != NULL); + _ivug_setas_view_remove(pSetAsView); +} - Evas_Load_Error error = (Evas_Load_Error)event_info; +#ifdef TRANSITION_EFFECT +static void _signal_hide_finished(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + Ivug_SetAsView *pSetAsView = data; - if ( error != EVAS_LOAD_ERROR_NONE ) - { - MSG_SETAS_ERROR("Error occured during decoding. Error=%d", error); + IV_ASSERT(pSetAsView != NULL); -// Show popup & Exit. - pSetAsView->popup = _ivug_setas_view_show_exit_popup(pSetAsView->layout, IDS_ERROR, IDS_INVALID_IMAGE_FILE, pSetAsView ); + MSG_SETAS_HIGH("_signal_hide_finished. pData=0x%08x", pSetAsView); - return; - } + ivug_setas_view_destroy(pSetAsView); +} - elm_object_part_content_set(pSetAsView->layout, "setasview.photocam", pSetAsView->photocam); +static void _signal_show_finished(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + Ivug_SetAsView *pSetAsView = data; - edje_object_signal_emit(_EDJ(pSetAsView->layout), "setasview,enable,btn_ok", "elm"); + IV_ASSERT(pSetAsView != NULL); - edje_object_signal_callback_add(_EDJ(pSetAsView->layout), - "setasview,set,clicked", - "", - _ivug_setas_on_icon_set_clicked, - (void *)pSetAsView); + MSG_SETAS_HIGH("_signal_show_finished. pData=0x%08x", pSetAsView); } -static Ivug_SetAsView *_create_setas_view(Evas_Object *parent, const char* filepath, ivug_set_screen_type screen_type) +#endif // UG_TRANSITION_EFFECT + + + +Ivug_SetAsView * +ivug_setas_view_screen_create(Evas_Object *parent, const char* filepath, ivug_setas_mode mode, ivug_set_screen_type screen_type) { - IV_ASSERT(filepath != NULL); + Ivug_SetAsView *pSetAsView = NULL; - Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *)calloc(1, sizeof(Ivug_SetAsView)); + MSG_SETAS_HIGH("Setas View creates"); - if ( pSetAsView == NULL ) - { - MSG_SETAS_ERROR("Cannot allocate memory"); - return NULL; - } + pSetAsView = (Ivug_SetAsView *)calloc(1, sizeof(Ivug_SetAsView)); - pSetAsView->file_path = strdup(filepath); - pSetAsView->set_type = screen_type; - pSetAsView->layout = ivug_layout_add(parent , SETAS_EDJ_FILE, "setas_view"); + pSetAsView->Mode = mode; + pSetAsView->Type = screen_type; - if ( pSetAsView->layout == NULL ) - { - MSG_SETAS_ERROR("Cannot create layout."); - free(pSetAsView); - return NULL; - } + pSetAsView->content = _ivug_setas_create_layout(parent); - Evas_Object *photocam; - photocam = elm_photocam_add(pSetAsView->layout); - elm_photocam_zoom_mode_set(photocam, ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT); - elm_photocam_paused_set(photocam, EINA_TRUE); + evas_object_smart_callback_add(pSetAsView->content, "load,failed", _on_msg_load_failed, pSetAsView); + evas_object_smart_callback_add(pSetAsView->content, "download,failed", _on_msg_load_failed, pSetAsView); + evas_object_smart_callback_add(pSetAsView->content, "ok,clicked", _on_msg_ok_clicked, pSetAsView); + evas_object_smart_callback_add(pSetAsView->content, "cancel,clicked", _on_msg_cancel_clicked, pSetAsView); - edje_object_signal_emit(_EDJ(pSetAsView->layout), "setasview,disable,btn_ok","elm"); // Disable ok button + _ivug_setas_load_file(pSetAsView->content , filepath); - _ivug_setas_view_show_icons(pSetAsView->layout); +// Transition layout +#ifdef TRANSITION_EFFECT + pSetAsView->ly_effect = ivug_layout_add(parent , EDJ_PATH"/ivug-effect.edj", "ivug_effect"); - evas_object_smart_callback_add(photocam, "loaded", _ivug_setas_on_photocam_loaded, (void *)pSetAsView); + elm_object_part_content_set(pSetAsView->ly_effect, "elm.swallow.content", pSetAsView->content); - pSetAsView->photocam = photocam; + edje_object_signal_callback_add(_EDJ(pSetAsView->ly_effect), "elm,action,hide,finished", "elm", _signal_hide_finished, (void *)pSetAsView); + edje_object_signal_callback_add(_EDJ(pSetAsView->ly_effect), "elm,action,show,finished", "elm", _signal_show_finished, (void *)pSetAsView); - Evas_Load_Error error = EVAS_LOAD_ERROR_NONE; + evas_object_show(pSetAsView->ly_effect); -// Get Screen size - Evas_Coord w, h; - evas_object_geometry_get(pSetAsView->layout, NULL, NULL, &w, &h); + edje_object_signal_emit(_EDJ(pSetAsView->ly_effect), "elm,state,show", "app"); // Start Effect +#endif - evas_object_show(photocam); + return pSetAsView; +} - error = elm_photocam_file_set(photocam, filepath); - if ( error != EVAS_LOAD_ERROR_NONE ) - { - // TODO : What is good for error handing?????? - MSG_SETAS_ERROR("FileSet Error=%d", error); +Ivug_SetAsView * +ivug_setas_view_screen_ug_create(Evas_Object *parent, const char* filepath, ivug_setas_mode mode, ivug_set_screen_type type) +{ + Ivug_SetAsView *pSetAsView = NULL; - if ( error == EVAS_LOAD_ERROR_UNKNOWN_FORMAT ) - { - _ivug_setas_view_send_result(gGetUGHandle(), IVUG_RESULT_BUNDLE_KEY_ERROR, IVUG_RESULT_BUNDLE_VALUE_NOT_SUPPORTED, NULL, NULL); - ivug_setas_view_destroy(pSetAsView); + MSG_SETAS_HIGH("Wallpaper UG creates"); - return NULL; - } - else if ( error == EVAS_LOAD_ERROR_PERMISSION_DENIED ) - { - pSetAsView->popup = _ivug_setas_view_show_exit_popup(pSetAsView->layout, IDS_ERROR, IDS_PERMISSION_DENIED, pSetAsView ); - return pSetAsView; - } - else - { - pSetAsView->popup = _ivug_setas_view_show_exit_popup(pSetAsView->layout, IDS_ERROR, IDS_INVALID_IMAGE_FILE, pSetAsView ); - return pSetAsView; - } + pSetAsView = (Ivug_SetAsView *)calloc(1, sizeof(Ivug_SetAsView)); - } + pSetAsView->Mode = mode; + pSetAsView->Type = type; - edje_object_signal_callback_add(_EDJ(pSetAsView->layout), - "setasview,cancel,clicked", - "", - _ivug_setas_on_icon_cancel_clicked, - (void *)pSetAsView); + pSetAsView->content = _ivug_setas_create_layout(parent); - const Evas_Object *event = edje_object_part_object_get(_EDJ(pSetAsView->layout), "event"); - if(!event) - { - MSG_SETAS_ERROR("event object is NULL"); - } - else - { - evas_object_event_callback_add((Evas_Object *)event, EVAS_CALLBACK_MOUSE_DOWN, _ivug_setas_view_mouse_down_cb, pSetAsView); - evas_object_event_callback_add((Evas_Object *)event, EVAS_CALLBACK_MOUSE_UP, _ivug_setas_view_mouse_up_cb, pSetAsView); - } + evas_object_smart_callback_add(pSetAsView->content, "load,failed", _on_msg_load_failed, pSetAsView); + evas_object_smart_callback_add(pSetAsView->content, "download,failed", _on_msg_load_failed, pSetAsView); + evas_object_smart_callback_add(pSetAsView->content, "ok,clicked", _on_msg_ok_clicked, pSetAsView); + evas_object_smart_callback_add(pSetAsView->content, "cancel,clicked", _on_msg_cancel_clicked, pSetAsView); + + _ivug_setas_load_file(pSetAsView->content , filepath); return pSetAsView; +} + + +Ivug_SetAsView * +ivug_setas_view_callerid_ug_create(Evas_Object *parent, const char* filepath, ivug_setas_mode mode, int output_width, int output_height) +{ + Ivug_SetAsView *pSetAsView = NULL; + + MSG_SETAS_HIGH("CallerID UG creates. ImgOut(%d,%d)", output_width, output_height); + + pSetAsView = (Ivug_SetAsView *)calloc(1, sizeof(Ivug_SetAsView)); + + pSetAsView->Mode = mode; + pSetAsView->Type = IVUG_CTRLBAR_SET_SCREEN_CALLERID; // Means that aspect ration should be preserved + pSetAsView->content = _ivug_setas_callerid_create_layout(parent); + + evas_object_smart_callback_add(pSetAsView->content, "load,failed", _on_msg_load_failed, pSetAsView); + evas_object_smart_callback_add(pSetAsView->content, "download,failed", _on_msg_load_failed, pSetAsView); + evas_object_smart_callback_add(pSetAsView->content, "ok,clicked", _on_msg_ok_clicked, pSetAsView); + evas_object_smart_callback_add(pSetAsView->content, "cancel,clicked", _on_msg_cancel_clicked, pSetAsView); + + _ivug_setas_callerid_load_file(pSetAsView->content , filepath); + _ivug_setas_callerid_aspect_ratio_set(pSetAsView->content , (double)output_height/output_width); + + return pSetAsView; } Ivug_SetAsView * -ivug_setas_view_screen_ug_create(Evas_Object *parent, const char* filepath) +ivug_setas_view_video_call_id_ug_create(Evas_Object *parent, const char* filepath, ivug_setas_mode mode, int output_width, int output_height) { Ivug_SetAsView *pSetAsView = NULL; - MSG_SETAS_HIGH("Wallpaper UG creates"); + MSG_SETAS_HIGH("CallerID UG creates. ImgOut(%d,%d)", output_width, output_height); - pSetAsView = _create_setas_view(parent, filepath, IVUG_CTRLBAR_SET_SCREEN_UNDEFINED); + pSetAsView = (Ivug_SetAsView *)calloc(1, sizeof(Ivug_SetAsView)); - if ( pSetAsView == NULL ) - { - MSG_SETAS_ERROR("Cannot create Wallpaper UG"); - return NULL; - } + pSetAsView->Mode = mode; + pSetAsView->Type = IVUG_CTRLBAR_SET_SCREEN_VIDEO_CALL_ID; // Means that aspect ration should be preserved + + pSetAsView->content = _ivug_setas_callerid_create_layout(parent); + + evas_object_smart_callback_add(pSetAsView->content, "load,failed", _on_msg_load_failed, pSetAsView); + evas_object_smart_callback_add(pSetAsView->content, "download,failed", _on_msg_load_failed, pSetAsView); + evas_object_smart_callback_add(pSetAsView->content, "ok,clicked", _on_msg_ok_clicked, pSetAsView); + evas_object_smart_callback_add(pSetAsView->content, "cancel,clicked", _on_msg_cancel_clicked, pSetAsView); - evas_object_event_callback_add(pSetAsView->layout, EVAS_CALLBACK_DEL, _setas_ug_view_deleted, "Wallpaper UG"); + _ivug_setas_callerid_load_file(pSetAsView->content , filepath); + _ivug_setas_callerid_aspect_ratio_set(pSetAsView->content , (double)output_height/output_width); return pSetAsView; } @@ -819,7 +721,7 @@ ivug_setas_view_object_get(Ivug_SetAsView *pSetAsView) { IV_ASSERT(pSetAsView != NULL); - return pSetAsView->layout; + return pSetAsView->content; } void @@ -827,69 +729,26 @@ ivug_setas_view_destroy(Ivug_SetAsView *pSetAsView) { MSG_SETAS_HIGH("Removing SetAs VIew"); - ivug_ret_if(!pSetAsView); - - const Evas_Object *event = edje_object_part_object_get(_EDJ(pSetAsView->layout), "event"); - if(event != NULL) - { - evas_object_event_callback_del((Evas_Object *)event, EVAS_CALLBACK_MOUSE_DOWN, _ivug_setas_view_mouse_down_cb); - evas_object_event_callback_del((Evas_Object *)event, EVAS_CALLBACK_MOUSE_UP, _ivug_setas_view_mouse_up_cb); - } - - if (pSetAsView->click_timer) - { - ecore_timer_del(pSetAsView->click_timer); - pSetAsView->click_timer = NULL; - } - - if(pSetAsView->genlist_popup) - { - evas_object_del(pSetAsView->genlist_popup); - pSetAsView->genlist_popup = NULL; - } - - if(pSetAsView->popup) - { - evas_object_del(pSetAsView->popup); - pSetAsView->popup = NULL; - } - - if(pSetAsView->select_box) - { - evas_object_del(pSetAsView->select_box); - pSetAsView->select_box = NULL; - } - - if(pSetAsView->photocam) - { - evas_object_del(pSetAsView->photocam); - pSetAsView->photocam = NULL; - } - - if(pSetAsView->file_path) + if ( pSetAsView->ly_effect) { - free(pSetAsView->file_path); - pSetAsView->file_path = NULL; + evas_object_del(pSetAsView->ly_effect); + pSetAsView->ly_effect = NULL; } - if(pSetAsView->layout) + if ( pSetAsView->content) { - evas_object_del(pSetAsView->layout); - pSetAsView->layout = NULL; + evas_object_del(pSetAsView->content); + pSetAsView->content = NULL; } - if ( pSetAsView->ly_effect) + if ( pSetAsView->filename ) { - evas_object_del(pSetAsView->ly_effect); - pSetAsView->ly_effect = NULL; + free(pSetAsView->filename); } if(pSetAsView) { free(pSetAsView); } - pSetAsView = NULL; - } - diff --git a/main/src/view/ivug-setas-view.h b/main/src/view/ivug-setas-view.h deleted file mode 100755 index 2e1dc5c..0000000 --- a/main/src/view/ivug-setas-view.h +++ /dev/null @@ -1,97 +0,0 @@ -/* - * 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 __SETAS_VIEW_H__ -#define __SETAS_VIEW_H__ - -#include "ivug-common.h" - -typedef enum { - NOTI_SUCCESS, - NOTI_FAIL, -} TEXT_POPUP_TYPE; - -typedef enum { - IVUG_CTRLBAR_SET_SCREEN_HOME, - IVUG_CTRLBAR_SET_SCREEN_LOCK, - IVUG_CTRLBAR_SET_SCREEN_BOTH, - IVUG_CTRLBAR_SET_SCREEN_UNDEFINED, // Show select popup when click ok button. - IVUG_CTRLBAR_SET_SCREEN_MAX -} ivug_set_screen_type; - -typedef struct { - Evas_Object *parent; - Evas_Object *ly_effect; // Layout for transition effect - - Evas_Object *layout; - -/* - |------------------| - | naviframe | - |------------------| - | toolbar | - |------------------| - | | - | | - | | - | | - |------------------| - | controlbar | - |------------------| -*/ - Evas_Object *photocam; - Evas_Object *toolbar; - Evas_Object *content; // Empty layout - - Evas_Object *select_box; - - struct { - int x, y, h, w; - } select_rect; - - Evas_Object *popup; - Evas_Object *done_button; - - char *file_path; - - Eina_Bool b_hide_bar_flag; - - - Ecore_Timer *timer_locate_rect; - - // click event - Evas_Coord_Point down_pos; - unsigned int timestamp; - Ecore_Timer *click_timer; - - ivug_set_screen_type set_type; - - Evas_Object *genlist_popup; - Eina_List *popup_list; -} Ivug_SetAsView; - - -Ivug_SetAsView * -ivug_setas_view_screen_ug_create(Evas_Object *parent, const char* filepath); - -void -ivug_setas_view_destroy(Ivug_SetAsView *data); - -Evas_Object * -ivug_setas_view_object_get(Ivug_SetAsView *pSetAsView); - -#endif //__SETAS_VIEW_H__ diff --git a/main/src/view/ivug-slider-item.c b/main/src/view/ivug-slider-item.c deleted file mode 100755 index 1b33e0c..0000000 --- a/main/src/view/ivug-slider-item.c +++ /dev/null @@ -1,703 +0,0 @@ -/* - * 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 "ivug-common.h" - -#include "ivug-slider-item.h" - -#include "ivug-main.h" - -#define DEFAULT_THUMBNAIL_PATH IMAGE_PATH"/T01_Nocontents_broken.png" - -#define IVUG_SLIDER_EDJ EDJ_PATH"/ivug-slider.edj" - -/* - Use elm_icon istead of elm_image. elm_icon preserve image ratio. and seems more faster. -*/ -#define USE_ELM_ICON - -bool -_thumbnail_set( Slide_Item* si, const char *filepath) -{ - IV_ASSERT(si != NULL); - IV_ASSERT(filepath != NULL); - - if (si->thumbnail == NULL) - { - MSG_SITEM_FATAL("slide item or thumbnail object is NULL"); - return false; - } - - MSG_SITEM_MED("Set thumbnail : %s", ivug_get_filename(filepath)); - -#ifdef USE_ELM_ICON - if (elm_icon_file_set(si->thumbnail, filepath, NULL) == EINA_FALSE) - { - MSG_SITEM_ERROR("Cannot load thumbnail : %s", filepath); - si->thumbnail_show = EINA_FALSE; - return false; - } - -#else - if (elm_image_file_set(si->thumbnail, filepath, NULL) == EINA_FALSE) - { - MSG_SITEM_ERROR("Cannot load thumbnail : %s", filepath); - si->thumbnail_show = EINA_FALSE; - return false; - } -#endif - edje_object_signal_emit(_EDJ(si->layout), "elm,state,show_thumbnail", "slider"); - - si->thumbnail_show = EINA_TRUE; - return true; -} - - -inline -void _call_user_callback(Slide_Item* si) -{ - if ( si->cb ) - { - (si->cb)(si->state, si, si->client_data); - } - -} - - -static void -_photocam_loaded_cb(void *data, Evas_Object *obj, void *event_info) -{ - IV_ASSERT(data != NULL); - - Slide_Item* si = data; - - //hide progress. - elm_progressbar_pulse(si->progress, EINA_FALSE); //stop pluse - edje_object_signal_emit(_EDJ(si->layout), "elm,state,hide,progress", "slider"); - - if ( si->mitem == NULL) - { - MSG_SITEM_ERROR("Debug Me! Data item is NULL."); - return; - } - - Media_Data* sdata = ivug_data_get_data(si->mitem); - if(sdata == NULL) - { - MSG_SITEM_ERROR("ivug_data_get_data failed."); - si->state = SLIDE_STATE_ERROR; - return; - } - - Evas_Load_Error error = (Evas_Load_Error)event_info; - - if ( error != EVAS_LOAD_ERROR_NONE ) - { - MSG_SITEM_ERROR("Image loading failed. Error=%d", error); - si->state = SLIDE_STATE_ERROR; - - si->photocam_show = EINA_FALSE; - evas_object_hide(obj); - - _thumbnail_set(si, DEFAULT_THUMBNAIL_PATH); - - evas_object_repeat_events_set(si->thumbnail, EINA_FALSE); - - _call_user_callback(si); - - return ; - } - - si->state = SLIDE_STATE_LOADED; - - if (sdata->slide_type == SLIDE_TYPE_VIDEO) //if slide type is video, - { - // TODO : Never get here.. - MSG_SITEM_FATAL("slide type is video. thumbnail image "); - return; - } - - si->photocam_show = EINA_TRUE; - evas_object_show(obj); //photocam show. - -// evas_object_move(obj, si->x, si->y); - -//hide thumbnail. - if(si->thumbnail_show == EINA_TRUE) - { - MSG_SITEM_HIGH("Thumbnail Hide"); - edje_object_signal_emit(_EDJ(si->layout), "elm,state,hide_thumbnail", "slider"); - si->thumbnail_show = EINA_FALSE; - } - - _call_user_callback(si); - - MSG_SITEM_HIGH("Photocam Pre-loaded. File=%s", ivug_get_filename(sdata->filepath)); -} - -Slide_Item* -ivug_slider_item_add(Evas_Object *slider) -{ - Slide_Item* si = NULL; - - //create item - si = (Slide_Item*)calloc(1, sizeof (Slide_Item)); - - if ( si == NULL ) - { - MSG_SITEM_FATAL("Cannot allocated memory : %d.", sizeof (Slide_Item)); - return NULL; - } - - si->state = SLIDE_STATE_NONE; //set slide state - -//Create the slider item layout - Evas_Object *layout = elm_layout_add(slider); - if(elm_layout_file_set(layout, IVUG_SLIDER_EDJ, "slider") == EINA_FALSE) - { - MSG_SITEM_ERROR("Cannot load file : %s", IVUG_SLIDER_EDJ); - free(si); - - return NULL; - } - - si->layout = layout; - -//Add the photocam - si->photocam = elm_photocam_add(slider); - elm_photocam_zoom_mode_set(si->photocam, ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT); - elm_photocam_paused_set(si->photocam, EINA_TRUE); - evas_object_smart_callback_call(si->photocam, "scroll-freeze-on", si->photocam); - evas_object_smart_callback_add(si->photocam, "loaded", _photocam_loaded_cb, si); - - elm_object_part_content_set(si->layout, "slider.photocam", si->photocam); - -//set thumbnail. -#ifdef USE_ELM_ICON - si->thumbnail = elm_icon_add(slider); -#else - si->thumbnail = elm_image_add(slider); -#endif - elm_object_part_content_set(si->layout, "slider.thumbnail", si->thumbnail); - -//set progress - si->progress = elm_progressbar_add(slider); - elm_object_style_set(si->progress, "list_process"); - elm_progressbar_pulse(si->progress, EINA_FALSE); - - elm_object_part_content_set(si->layout, "slider.progress", si->progress); - - si->icon = edje_object_part_object_get(_EDJ(si->layout), "slider.icon"); - - evas_object_clip_set(si->layout, slider); - -// Add ÇÏ´Â ¼ø¼­¿¡ µû¶ó Z-OrderÀÌ °áÁ¤ µÈ´Ù. - evas_object_smart_member_add(si->layout, slider); - - si->w = gGetScreenWidth(); - si->h = gGetScreenHeight(); - - MSG_SITEM_HIGH("Creating slider item. 0x%08x. WH(%dx%d)", si, si->w, si->h); - - return si; - -} - -void -ivug_slider_item_resize(Slide_Item* si, int w, int h) -{ - IV_ASSERT(si != NULL ); - - // TODO : Impelement - MSG_SITEM_HIGH("SLIDER Resize to WH(%d,%d)", w, h ); - -// w,h is not Image's scale, but Object's scale - si->w = w; - si->h = h; - -// MSG_SITEM_HIGH("resize layout: %d, %d", si->w, si->h); - evas_object_resize(si->layout, si->w, si->h); - - ivug_slider_item_zoom_reset(si, EINA_FALSE, 0,0); -} - -void ivug_slider_item_del(Slide_Item* si) -{ - IV_ASSERT(si != NULL ); - - if (si->photocam) - { - evas_object_del(si->photocam); //remove photocam - si->photocam = NULL; - } - - if (si->thumbnail) - { - evas_object_del(si->thumbnail); - si->thumbnail = NULL; - } - - if (si->progress) - { - evas_object_del(si->progress); - si->progress = NULL; - } - - if(si->layout) - { - evas_object_del(si->layout); - si->layout = NULL; - } - - free(si); - - MSG_SITEM_HIGH("Slide item is deleted"); -} - -void ivug_slider_item_hide(Slide_Item* si) -{ - IV_ASSERT(si != NULL ); - - MSG_SITEM_HIGH("hide bg"); - evas_object_hide(si->layout); -} - -void ivug_slider_item_show(Slide_Item* si) -{ - IV_ASSERT(si != NULL ); - -// no need to check layout is NULL - evas_object_show(si->layout); -} - -void ivug_slider_item_move(Slide_Item* si, int x, int y) -{ - IV_ASSERT(si != NULL ); - - -// MSG_SITEM_HIGH("SLIDER(%d) Move to XY(%d,%d)", si->idx, x, y ); - //photocam - si->x = x; - si->y = y; - -// MSG_SITEM_HIGH("move layout: %d, %d", x, y); - evas_object_move(si->layout, x, y); -} - -void -ivug_slider_item_clip_set(Slide_Item* si, Evas_Object *clipper) -{ - IV_ASSERT(si != NULL ); -// no need to check layout is NULL - MSG_SITEM_HIGH("Clip SET!!"); - - evas_object_clip_set(si->layout, clipper); -} - -void -ivug_slider_item_clip_unset(Slide_Item* si) -{ - IV_ASSERT(si != NULL ); -// no need to check layout is NULL - evas_object_clip_unset(si->layout); -} - -bool -ivug_slider_item_set_callback(Slide_Item* si, OnSliderStateChanged cb, void *data) -{ - ivug_retv_if(!si, false); - - si->cb = cb; - si->client_data = data; - - return true; -} - -bool -ivug_slider_item_data_loading(Slide_Item *si) -{ - IV_ASSERT(si != NULL); - - if ( si->state != SLIDE_STATE_READY) - { - MSG_SITEM_ERROR("Invalid state : %d", si->state); - return false; - } - - Media_Data *mdata = ivug_data_get_data(si->mitem); - if ( mdata == NULL ) - { - MSG_SITEM_ERROR("Data is NULL"); - return false; - } - - char path[IVUG_MAX_FILE_PATH_LEN] = {0,}; - - strncpy(path, mdata->filepath, strlen(mdata->filepath)); - - switch(mdata->slide_type) - { - case SLIDE_TYPE_IMAGE: - { - MSG_SITEM_HIGH("Load Image. %s", ivug_get_filename(path)); - si->state = SLIDE_STATE_LOADING; - - if (elm_photocam_file_set(si->photocam, path) != EVAS_LOAD_ERROR_NONE) - { - MSG_SITEM_ERROR("Failed photocam to set file file=%s", path); - - _photocam_loaded_cb(si, si->photocam, (void *) EVAS_LOAD_ERROR_UNKNOWN_FORMAT); - - return false; - } - - return true; - - } - break; - - case SLIDE_TYPE_VIDEO: - return true; - break; - - default: - MSG_SITEM_ERROR("slide type invaild. Type=%d", mdata->slide_type); - return false; - break; - } - - return true; -} - - -bool -ivug_slider_item_data_set(Slide_Item* si, Media_Item *item) -{ - ivug_retv_if(!si, false); - - if ( si->state != SLIDE_STATE_NONE ) - { - MSG_SITEM_ERROR("State is not none... State=%d", si->state); - si->state = SLIDE_STATE_NONE; - } - - if ( item == NULL ) - { - MSG_SITEM_WARN("Item is NULL"); - return false; - } - - si->mitem = item; - - Media_Data *mdata = ivug_data_get_data(item); - - if ( mdata == NULL ) - { - MSG_SITEM_ERROR("Data is NULL"); - return false; - } - - switch(mdata->slide_type) - { - case SLIDE_TYPE_IMAGE: - MSG_SITEM_HIGH("Set image. %s", ivug_get_filename(mdata->filepath)); - - si->state = SLIDE_STATE_READY; - - break; - case SLIDE_TYPE_VIDEO: - if (mdata->thumbnail_path) - { - _thumbnail_set(si, mdata->thumbnail_path); - // Go through - } - else - { - _thumbnail_set(si, DEFAULT_THUMBNAIL_PATH); - } - - si->photocam_show = EINA_FALSE; - - evas_object_repeat_events_set(si->thumbnail, EINA_FALSE); // In case of video, photocam should not receive events - - edje_object_signal_emit(_EDJ(si->layout), "elm,state,show_icon", "slider"); // Video icon - - MSG_SITEM_HIGH("Set video. %s", ivug_get_filename(mdata->filepath)); - - si->state = SLIDE_STATE_LOADED; // Video dont need to load photocam - - break; - - case SLIDE_TYPE_UNKNOWN: - if (mdata->thumbnail_path) - { - _thumbnail_set(si, mdata->thumbnail_path); - // Go through - } - - MSG_SITEM_ERROR("Unknown image. %s", ivug_get_filename(mdata->filepath)); - - si->state = SLIDE_STATE_ERROR; - - break; - - default: - MSG_SITEM_ERROR("slide type invaild. Type=%d", mdata->slide_type); - si->state = SLIDE_STATE_ERROR; - return false; - break; - - } - - si->zoom_level = 0; - - return true; -} - -slide_state_t -ivug_slider_item_get_state(Slide_Item *si) -{ - IV_ASSERT(si != NULL); - - return si->state; -} - -const Media_Item * -ivug_slider_item_data_get(Slide_Item *si) -{ - IV_ASSERT(si != NULL); - - return si->mitem; -} - - -void -ivug_slider_item_data_unset(Slide_Item* si) -{ - IV_ASSERT(si != NULL); - - if ( si->state == SLIDE_STATE_NONE ) - { - MSG_SITEM_WARN("Slide item is already cleared. just return"); - return; - } - - if(si->progress) - { - elm_progressbar_pulse(si->progress, EINA_FALSE); //stop pluse - edje_object_signal_emit(_EDJ(si->layout), "elm,state,hide,progress", "slider"); - } - - if ( si->mitem == NULL ) - { - // When delete case, this code is launched. - MSG_SITEM_WARN("MItem is NULL."); - // Go through - } - else - { - Media_Data *mdata = ivug_data_get_data(si->mitem); - - if ( mdata == NULL ) - { - MSG_SITEM_ERROR("Data is NULL"); - return ; - } - - MSG_SITEM_HIGH("Clear Image. %s", ivug_get_filename(mdata->filepath)); - - si->mitem = NULL; - } - - if (si->thumbnail_show) - { - si->thumbnail_show = EINA_FALSE; - edje_object_signal_emit(_EDJ(si->layout), "elm,state,hide_thumbnail", "slider"); - } - - if(si->layout) - { - edje_object_signal_emit(_EDJ(si->layout), "elm,state,hide_icon", "slider"); - } - -// does not check photocam_show flags. because photocam_show only set true when finish preloading. -// during preloading photocam_show is remains false, - si->photocam_show = EINA_FALSE; -// elm_layout_content_unset(si->layout, "slider.photocam"); // - - evas_object_hide(si->photocam); - - evas_object_del(si->photocam); - si->photocam = elm_photocam_add(si->layout); - elm_photocam_zoom_mode_set(si->photocam, ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT); - elm_photocam_paused_set(si->photocam, EINA_TRUE); - evas_object_smart_callback_call(si->photocam, "scroll-freeze-on", si->photocam); - evas_object_smart_callback_add(si->photocam, "loaded", _photocam_loaded_cb, si); - elm_object_part_content_set(si->layout, "slider.photocam", si->photocam); - - si->state = SLIDE_STATE_NONE; - - si->zoom_level = 0; - - MSG_SITEM_MED("Slider Item is cleared."); - -} - - -void ivug_slider_item_change_mitem_pointer(Slide_Item* si, Media_Item *item) -{ - IV_ASSERT(si != NULL ); - - si->mitem = item; -} - - - -// Photocam -bool -ivug_slider_item_region_size_get(Slide_Item* si, int *x, int *y, int *w, int *h) -{ - IV_ASSERT(si != NULL ); - - if ( si->mitem == NULL) - { - MSG_SITEM_ERROR("Debug Me! Data item is NULL."); - return false; - } - - Media_Data *mdata = ivug_data_get_data(si->mitem); - - if ( mdata == NULL ) - { - MSG_SITEM_ERROR("slide type is NULL. Item=0x%08x", si); - return false; // TODO : Temp.. - } - - if ( mdata->slide_type == SLIDE_TYPE_VIDEO) - { - return false; - } - - Evas_Object *image = elm_photocam_internal_image_get(si->photocam); - evas_object_geometry_get(image, x, y, w, h); - MSG_SITEM_MED("x = %d, y = %d, w = %d, h = %d", *x, *y, *w, *h); - - return true; -} - - - -void -ivug_slider_item_hold_set(Slide_Item* si, Eina_Bool hold) -{ - IV_ASSERT(si != NULL ); - - if(hold == EINA_TRUE) - { - evas_object_smart_callback_call(si->photocam, "scroll-freeze-on", si->photocam); - } - else - { - evas_object_smart_callback_call(si->photocam, "scroll-freeze-off", si->photocam); - } -} - - -void -ivug_slider_item_zoom_reset(Slide_Item* si, Eina_Bool bAnim, int center_x, int center_y) -{ - IV_ASSERT(si != NULL ); - - if ( si->photocam_show ) - { - Evas_Point pt; - - pt.x = center_x; - pt.y = center_y; - elm_photocam_paused_set(si->photocam, !bAnim); //stop photocam animation - elm_photocam_zoom_mode_set(si->photocam, ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT); - - si->zoom_level = 0; - } -} - - -void -ivug_slider_item_zoom_set(Slide_Item* si, double zoom, int center_x, int center_y) -{ - IV_ASSERT(si != NULL ); - - if ( si->photocam_show ) - { - elm_photocam_paused_set(si->photocam, EINA_FALSE); //stop photocam animation - elm_photocam_zoom_mode_set(si->photocam, ELM_PHOTOCAM_ZOOM_MODE_MANUAL); - elm_photocam_zoom_set(si->photocam, zoom); - } -} - -double -ivug_slider_item_zoom_get(Slide_Item* si) -{ - IV_ASSERT(si != NULL ); - - double ret = 1.0; - - if ( si->photocam_show ) - { - ret = elm_photocam_zoom_get(si->photocam); - } - return ret; -} - - -bool -ivug_slider_item_icon_click_check(Slide_Item *si, int x, int y) -{ - MSG_SITEM_HIGH("Check icon clicked. SI=0x%08x, XY(%d,%d)", si, x, y); - - IV_ASSERT(si != NULL ); - - Media_Data *mdata = ivug_data_get_data(si->mitem); - - if ( mdata == NULL ) - { - MSG_SITEM_ERROR("Debug Me! Data item is NULL."); - return false; - } - - if ( mdata->slide_type == SLIDE_TYPE_VIDEO ) - { - if (si->icon) - { - Evas_Coord ix,iy,iw,ih; - - evas_object_geometry_get(si->icon, &ix, &iy, &iw, &ih); - - bool bInside = !( (x) > (ix + iw) || (x) < (ix) - || (y) > (iy + iw) || (y) < (iy) ); - - MSG_SITEM_HIGH("Item XYWH(%d,%d,%d,%d) XY(%d,%d) bInside=%d", ix,iy,iw,ih, x, y, bInside); - - return bInside; - } - } - - MSG_SITEM_HIGH("Slide type = %d", mdata->slide_type); - return false; -} - - diff --git a/main/src/view/ivug-slider-item.h b/main/src/view/ivug-slider-item.h deleted file mode 100755 index 6bbc54d..0000000 --- a/main/src/view/ivug-slider-item.h +++ /dev/null @@ -1,137 +0,0 @@ -/* - * 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. - */ - - -#pragma once - -#include "ivug-data.h" - -typedef enum SLIDE_STATE { - SLIDE_STATE_NONE = 0x00, - SLIDE_STATE_READY, - SLIDE_STATE_LOADING, // Load main image or downloading - SLIDE_STATE_LOADED, // Image is shown - SLIDE_STATE_ERROR, -} slide_state_t; - -typedef struct _Slide_Item Slide_Item; - -typedef void (*OnSliderStateChanged)(slide_state_t state, Slide_Item *si, void *client_data); - -struct _Slide_Item { - int x, y, w, h; // Object geometry -//Data - slide_state_t state; // Currently not used, just for debugging. - Media_Item *mitem; - -//flag - Eina_Bool photocam_show; - Eina_Bool thumbnail_show; - -// UI - Evas_Object* layout; - const Evas_Object* icon; //video icon - Evas_Object* thumbnail; // thumbnail - Evas_Object* photocam; //photocam data. - Evas_Object* progress; //progress bar - - unsigned int thumb_w, thumb_h; // thumbnail width height. - - unsigned int zoom_level; - -// Callback - OnSliderStateChanged cb; - void *client_data; - -}; - -#ifdef __cplusplus -extern "C" { -#endif - -// GUI related -Slide_Item* -ivug_slider_item_add(Evas_Object *slider); - -void -ivug_slider_item_del(Slide_Item *si); - -void -ivug_slider_item_hide(Slide_Item *si); - -void -ivug_slider_item_show(Slide_Item *si); - -void -ivug_slider_item_move(Slide_Item *si, int x, int y); - -void -ivug_slider_item_resize(Slide_Item *si, int w, int h); - -void -ivug_slider_item_clip_set(Slide_Item *si, Evas_Object *clipper); - -void -ivug_slider_item_clip_unset(Slide_Item *si); - -// Data -bool -ivug_slider_item_set_callback(Slide_Item* si, OnSliderStateChanged cb, void *data); - -bool -ivug_slider_item_data_set(Slide_Item *si, Media_Item *item); - -bool -ivug_slider_item_data_loading(Slide_Item *si); - -void -ivug_slider_item_change_mitem_pointer(Slide_Item *si, Media_Item *item); // confused API!!! - -void -ivug_slider_item_data_unset(Slide_Item *si); - -slide_state_t -ivug_slider_item_get_state(Slide_Item *si); - -const Media_Item * -ivug_slider_item_data_get(Slide_Item *si); - -// Control -bool -ivug_slider_item_region_size_get(Slide_Item *si, int *x, int *y, int *w, int *h); - -void -ivug_slider_item_hold_set(Slide_Item *si, Eina_Bool hold); - -void -ivug_slider_item_zoom_reset(Slide_Item *si, Eina_Bool bAnim, int center_x, int center_y); - -void -ivug_slider_item_zoom_set(Slide_Item *si, double zoom, int center_x, int center_y); - -double -ivug_slider_item_zoom_get(Slide_Item* si); - -bool -ivug_slider_item_icon_click_check(Slide_Item *si, int x, int y); - - -#ifdef __cplusplus -} -#endif - - - diff --git a/main/src/view/ivug-slider-mouse.c b/main/src/view/ivug-slider-mouse.c deleted file mode 100755 index 2f3f190..0000000 --- a/main/src/view/ivug-slider-mouse.c +++ /dev/null @@ -1,439 +0,0 @@ -/* - * 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 "ivug-common.h" -#include "ivug-mouse-event.h" -#include "ivug-anim.h" -#include "ivug-slider-item.h" -#include "ivug-slider.h" -#include "ivug-effect.h" - -#include "ivug-slider-priv.h" - -#define SIG_CLICKED "slider,clicked" -#define SIG_LONGPRESSED "slider,longpressed" - -#define SHIFT_THRESHOLD (0.0f) // 52% - - -static bool _ivug_slider_check_flick(MouseEvent *down, MouseEvent *up) -{ -#define FLICK_TIME_MAX (200) //flick time value. -#define FLICK_WIDTH_MIN (elm_config_finger_size_get() >> 2) - - if ( up->event_flags & EVAS_EVENT_FLAG_ON_HOLD ) - { - MSG_SLIDER_HIGH("On hold detected"); - return false; - } - -// Check pinch zoom right before zoom - if ( (up->timestamp - down->timestamp) > FLICK_TIME_MAX ) - { - MSG_SLIDER_HIGH("Not flick opertion. TimeGap=%d", up->timestamp - down->timestamp); - return false; - } - -// TODO : Consider Y axis flick. - int delta_x = up->x - down->x; - int delta_y = up->y - down->y; - - if (abs(delta_x) < FLICK_WIDTH_MIN) - { - MSG_SLIDER_HIGH("Not flick opertion. Delta X=%d Delta Y=%d", delta_x, delta_y); - return false; - } - - return true; - -} - - -static bool _ivug_slider_check_click(MouseEvent *down, MouseEvent *up) -{ -#define CLICK_TIME_MIN (7) -#define CLICK_TIME_MAX (500) /* 500 < long press */ - -#define CLICK_WIDTH_MAX (elm_config_finger_size_get() >> 2) - - if ( down->device != up->device ) - { - MSG_SLIDER_HIGH("Not click. Device=%d %d", down->device , up->device); - return false; - } - - if (up->button_flags & EVAS_BUTTON_DOUBLE_CLICK) - { - MSG_SLIDER_HIGH("Up.. Double clicked!!"); - return false; - } - - int dTS = (up->timestamp - down->timestamp); - if ( (dTS < CLICK_TIME_MIN) || (dTS > CLICK_TIME_MAX) ) - { - MSG_SLIDER_HIGH("Not click. TS=%d", (up->timestamp - down->timestamp)); - return false; - } - - unsigned int dist = get_distance(down->x, down->y, up->x, up->y); - - if ( dist < (unsigned int)CLICK_WIDTH_MAX) - { - MSG_SLIDER_HIGH("Detect Clicked event. TS=%d, Dist=%d", dTS, dist); - return true; - } - - MSG_SLIDER_HIGH("Not Click : TS=%dms Dis=%d", dTS, dist); - - return false; -} - -static Eina_Bool _long_pressed(void *data) -{ - struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(data); - - if (!sd) return ECORE_CALLBACK_CANCEL; - - sd->long_timer = NULL; - - Evas_Coord_Point down; - - down.x = sd->down.x; - down.y = sd->down.y; - - evas_object_smart_callback_call(data, SIG_LONGPRESSED, &down); - - MSG_SLIDER_HIGH("Long pressed!!!!!"); - return ECORE_CALLBACK_CANCEL; -} - -static Eina_Bool _clicked(void *data) -{ - struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(data); - - if (!sd) return ECORE_CALLBACK_CANCEL; - - sd->click_timer = NULL; - - Evas_Coord_Point down; - - down.x = sd->down.x; - down.y = sd->down.y; - - // Check video icon clicked or not/ - Slide_Item *si = sd->slide[CENTER_SLIDE]; - - if ( ivug_slider_item_icon_click_check(si, down.x, down.y) == true ) // Video icon clicked. - { - MSG_SLIDER_HIGH("Video icon clicked!!!!!"); - - evas_object_smart_callback_call(data, "slider,clicked,icon", &down); - - return ECORE_CALLBACK_CANCEL; - } - - if(sd->ss_state == SLIDE_SHOW_RUNNING)/* this click is for stop slide show */ - { - ivug_slider_stop_slide_show(sd->obj); - return ECORE_CALLBACK_CANCEL; - } - - evas_object_smart_callback_call(data, SIG_CLICKED, &down); // For change menu visibility - - return ECORE_CALLBACK_CANCEL; -} - - -void _ivug_on_mouse_down(Evas_Object *obj, MouseEvent *down, void *data) -{ - struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(data); - Slide_Item* si = sd->slide[CENTER_SLIDE]; - - MSG_SLIDER_HIGH("%s. down->XY(%d,%d)", __func__, down->x, down->y); - -//save down position. - sd->down = *down; - -// End animation - if(sd->animator) - { - ecore_animator_del(sd->animator); - sd->animator = NULL; - - MSG_SLIDER_HIGH("Animation is working. stopping animation. Current SI->XY(%d,%d)", si->x, si->y); - } - - sd->edge = _ivug_slider_edge_state_get(si); - - if (down->button_flags & EVAS_BUTTON_DOUBLE_CLICK) - { - MSG_SLIDER_HIGH("Double clicked!!"); - } - - if (sd->long_timer) - { - ecore_timer_del(sd->long_timer); - sd->long_timer = NULL; - } - - if (sd->click_timer) - { - ecore_timer_del(sd->click_timer); - sd->click_timer = NULL; - } - - if ( sd->ss_state == SLIDE_SHOW_RUNNING) - { -// Stop slide show if running. BUG : When user click , menu bar is not visible. -// Evas_Object *slider = (Evas_Object *)data; - //ivug_slider_stop_slide_show(slider); // data is Evas_Object - - return; - } - - if ( abs(si->x) < IMAGE_MOVE_MARGIN) - { - MSG_SLIDER_HIGH("Creating long pressed timer"); - sd->long_timer = ecore_timer_add(elm_config_longpress_timeout_get(), _long_pressed, data); - } -} - - -void _ivug_on_mouse_up(Evas_Object *obj, MouseEvent *up, void *data) -{ - struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(data); - - sd->up = *up; - - Slide_Item *si = sd->slide[CENTER_SLIDE]; - - MSG_SLIDER_HIGH("Mouse Up : si->XYWH(%d,%d,%d,%d)", si->x, si->y, si->w, si->h); - - if (sd->long_timer) - { - ecore_timer_del(sd->long_timer); - sd->long_timer = NULL; - } - -// Find Scroll Direction - shift_direction_t dir = SLIDE_SHIFT_NONE; - -// TODO How to make simpler below routine??? - if ( _ivug_slider_check_flick(&sd->down, up) == true) // If flick - { - int delta_x = up->x - sd->down.x; -// int delta_y = up->y - sd->down.y; - - { - if ( (sd->edge & SLIDE_RIGHT_EDGE) && (delta_x < 0)) // Mouse : <-- - { - // <--------- - if ( sd->slide[NEXT_SLIDE]->state != SLIDE_STATE_NONE ) - { - dir = SLIDE_SHIFT_TO_RIGHT; - } - } - else if ( (sd->edge & SLIDE_LEFT_EDGE) && (delta_x > 0) ) // Mouse : --> - { - // ------> - if ( sd->slide[PREV_SLIDE]->state != SLIDE_STATE_NONE ) - { - dir = SLIDE_SHIFT_TO_LEFT; - } - } - } - } - else - { - MSG_SLIDER_HIGH("Si->x=%d", si->x); -// if ( si->x == 0 ) // If not moving state -// { - if ( _ivug_slider_check_click(&sd->down, up) == true ) - { - sd->click_timer = ecore_timer_add(0.2f, _clicked, data); - // Clicked event -// evas_object_smart_callback_call(data, SIG_CLICKED, &sd->down.x); - } - -// } - - // Not flick. check up position. - if ( si->x > sd->w * (SHIFT_THRESHOLD) ) - { - // Scroll to ---> - if ( sd->slide[PREV_SLIDE]->state != SLIDE_STATE_NONE ) // Check left end - { - dir = SLIDE_SHIFT_TO_LEFT; - } - } - else if (si->x + si->w < sd->w * (1.0f - SHIFT_THRESHOLD) ) - { - // Scroll to <--- - if ( sd->slide[NEXT_SLIDE]->state != SLIDE_STATE_NONE ) // Check left end - { - dir = SLIDE_SHIFT_TO_RIGHT; - } - } - } - - switch(dir) - { - case SLIDE_SHIFT_TO_LEFT: - MSG_SLIDER_HIGH("Scroll --->"); - - _ivug_slider_slide_update(sd, sd->slide[CENTER_SLIDE]->x, - sd->slide[CENTER_SLIDE]->w + IMAGE_BETWEEN_MARGIN); - if(sd->ss_state == SLIDE_SHOW_RUNNING) - { - sd->bSS_SlideFlag = EINA_TRUE; - ivug_slider_stop_slide_show(sd->obj); - } - break; - - case SLIDE_SHIFT_TO_RIGHT: - MSG_SLIDER_HIGH("Scroll <---"); - - _ivug_slider_slide_update(sd, sd->slide[CENTER_SLIDE]->x, - -sd->slide[CENTER_SLIDE]->w - IMAGE_BETWEEN_MARGIN); - if(sd->ss_state == SLIDE_SHOW_RUNNING) - { - sd->bSS_SlideFlag = EINA_TRUE; - ivug_slider_stop_slide_show(sd->obj); - } - break; - - case SLIDE_SHIFT_NONE: - - MSG_SLIDER_HIGH("Scroll to center"); - - if ( sd->slide[CENTER_SLIDE]->x == 0 ) - { - MSG_SLIDER_WARN("No need to animation"); - return; - } - - _ivug_slider_slide_update(sd,sd->slide[CENTER_SLIDE]->x , 0); - - break; - - } - - - -} - - -void _ivug_on_mouse_move(Evas_Object *obj, MouseEvent *prev, MouseEvent *cur, void *data) -{ - struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(data); - Slide_Item* si = sd->slide[CENTER_SLIDE]; - - if (sd->long_timer) - { - Evas_Coord dx, dy; - dx = sd->down.x - cur->x; - dx *= dx; - dy =sd->down.y - cur->y; - dy *= dy; - - if ((dx + dy) > LONG_PRESS_MARGIN * LONG_PRESS_MARGIN) - { - MSG_SLIDER_HIGH("%s delete long timer. Move:%d Margin:%d", __func__, (dx + dy), LONG_PRESS_MARGIN * LONG_PRESS_MARGIN ); - ecore_timer_del(sd->long_timer); //delete long press. - sd->long_timer = NULL; - } - } -// MSG_SLIDER_HIGH("%s. XY(%d,%d)", __func__, cur->x, cur->y); -// TODO : check slide move threshhold - if ( sd->edge == SLIDE_NO_EDGE ) - { - MSG_SLIDER_MED("Photocam handle this event"); - return; - } - - int dst_x, dst_y; - - dst_x = si->x + (cur->x - prev->x); - dst_y = si->y + (cur->y - prev->y); - - MSG_SLIDER_MED("%s. Edge=%d Cur XY(%d,%d) Prev XY(%d,%d) SI->XY(%d,%d) Dest(%d,%d)", __func__,sd->edge, - cur->x, cur->y, prev->x, prev->y, si->x, si->y, dst_x, dst_y); - -// If left-most or right-most image, do not scroll. - if ( ivug_slider_item_data_get(sd->slide[NEXT_SLIDE]) == NULL ) // Is left-most image? - { - MSG_SLIDER_MED("Next item is NULL. dst_x=%d", dst_x); - - if ( dst_x < 0 ) - { - MSG_SLIDER_MED("No allowed scroll to right"); - _ivug_slider_pass_event_to_item(sd, EINA_FALSE); - return; - } - } - - if ( ivug_slider_item_data_get(sd->slide[PREV_SLIDE]) == NULL ) // Is right-most image? - { - MSG_SLIDER_MED("Prev item is NULL. dst_x=%d", dst_x); - if ( dst_x > 0 ) - { - MSG_SLIDER_MED("No allowed scroll to left"); - _ivug_slider_pass_event_to_item(sd, EINA_FALSE); - return; - } - } - if ( (sd->edge & SLIDE_LEFT_EDGE) && (dst_x > IMAGE_SCROLL_MARGIN)) - { - MSG_SLIDER_MED("Case 1. edge=%d, X=%d", sd->edge, dst_x); - - _ivug_slider_pass_event_to_item(sd, EINA_FALSE); - - _ivug_slider_slide_update_pos(sd, dst_x , si->y); //update - _ivug_slider_slide_update_shift(sd); - - return; - } - - if ( (sd->edge & SLIDE_RIGHT_EDGE) && (dst_x < -IMAGE_SCROLL_MARGIN)) - { - MSG_SLIDER_MED("Case 2. edge=%d, X=%d", sd->edge, dst_x); - _ivug_slider_pass_event_to_item(sd, EINA_FALSE); - - _ivug_slider_slide_update_pos(sd, dst_x , si->y); //update - _ivug_slider_slide_update_shift(sd); - - return; - } - - if ( (sd->edge & SLIDE_FIT) != SLIDE_FIT) - { - MSG_SLIDER_MED("Case 3. edge=%d", sd->edge); - _ivug_slider_pass_event_to_item(sd, EINA_TRUE); // Send event to phtocam - sd->edge = SLIDE_NO_EDGE; - } - - if (dst_x >= -IMAGE_SCROLL_MARGIN && dst_x <= IMAGE_SCROLL_MARGIN) - { - MSG_SLIDER_MED("Case 4. It isn't over IMAGE_SCROLL_MARGIN"); - return ; - } - - MSG_SLIDER_ERROR("Debug Me NEw edge=%d delta_x=%d si->x=%d", sd->edge, dst_x, si->x); - return; - -} - diff --git a/main/src/view/ivug-slider-priv.h b/main/src/view/ivug-slider-priv.h deleted file mode 100755 index 2bc2f3d..0000000 --- a/main/src/view/ivug-slider-priv.h +++ /dev/null @@ -1,164 +0,0 @@ -/* - * 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 "ivug-data.h" - -#ifndef __IVUG_SLIDER_PRIV_H__ -#define __IVUG_SLIDER_PRIV_H__ - -/* elm_config_finger_size_get = 40 */ -#define IMAGE_BETWEEN_MARGIN (30) // The value is width between photocam(unit is pixel). -#define IMAGE_MOVE_MARGIN ((int)IMAGE_BETWEEN_MARGIN*0.8) -/* If moved width is larger than IMAGE_SCROLL_MARGIN, image is scrolled */ -#define IMAGE_SCROLL_MARGIN (5) /* vertical move doen't over 5 pixel width */ -#define LONG_PRESS_MARGIN ((int)(elm_config_finger_size_get() / 3)) - -typedef enum { - SLIDE_NO_EDGE = (1<<0), - - SLIDE_LEFT_EDGE = (1<<1), - SLIDE_RIGHT_EDGE = (1<<2), - - SLIDE_TOP_EDGE = (1<<3), - SLIDE_BOTTOM_EDGE = (1<<4), - - SLIDE_FIT = SLIDE_LEFT_EDGE | SLIDE_RIGHT_EDGE | SLIDE_TOP_EDGE | SLIDE_BOTTOM_EDGE, -} slide_edge_t; - -typedef enum { - SLIDE_SHIFT_NONE = 0x00, - SLIDE_SHIFT_TO_RIGHT, // <---------------------Mouse - SLIDE_SHIFT_TO_LEFT, // Mouse---------------------> -} shift_direction_t; - - -//ENUM -typedef enum { - CENTER_SLIDE, - NEXT_SLIDE, - PREV_SLIDE, - MAX_SLIDE, -} slide_index_t; - -// slider -typedef struct Smart_Data -{ - Evas_Object *obj; // smart object itself. - - Evas_Object *event_obj; // Event receiver layer - - Evas_Coord x, y, w, h; // Geometry of slider - -//silde - Slide_Item* slide[MAX_SLIDE]; -// Media_Item* mitem[MAX_SLIDE]; - -//data list - Eina_Bool bShow; - - Media_List* media_list; // Storing entire media list. - Media_Item* current; // Current medit item. Is it needed?? - - int cur_list_idx; - int next_list_idx; /* for slide show */ - int list_total_count; - -//Mouse Event - MouseEvent down; - MouseEvent up; - -// for flick anim - anim_handle_t *anim; - Ecore_Animator *animator; - double t_base; - -//slider show. - slideshow_state_t ss_state; - - Ecore_Timer *ss_timer; //slide show timer - ivug_slider_slide_show_finish_cb ss_func; // Callback for slide show finished - void* ss_user_data; - Eina_Bool bSS_StopFlag; /* request slide show stop flag */ - Eina_Bool bSS_SlideFlag; /* it was slided by user during slide show */ - -//Mouse event handler - Ivug_Event_Handle mouse_event; - - slide_edge_t edge; - -// For detecting long pressed - Ecore_Timer *long_timer; - -// For detecting click - Ecore_Timer *click_timer; - -/* For window loading */ - Ecore_Idler* idler_list; - -/* slide show setting */ - double ss_interval_time; - slide_show_mode ss_mode; - -/* slide show effect*/ - Effect_Type effect_type; - Effect_Engine* effect_engine; - - Ecore_Idler *load_idler; -} _Smart_Data; - - -#ifdef __cplusplus -extern "C" { -#endif - - -// Common function between slide show and slider. - -#define _ivug_slider_edge_state_get(si) __ivug_slider_edge_state_get(si, __func__, __LINE__) - -slide_edge_t __ivug_slider_edge_state_get(Slide_Item *si, const char *func, int line); - -void _ivug_slider_slide_update_shift_right(struct Smart_Data *sd); - -void _ivug_slider_slide_update_pos(struct Smart_Data *sd, Evas_Coord x, Evas_Coord y); - -void _ivug_slider_restore_window_list(struct Smart_Data *sd); - - -// Common function between slide and slide mouse. - -void _ivug_slider_slide_update(struct Smart_Data *sd, int x, int y); - -void _ivug_slider_pass_event_to_item(struct Smart_Data *sd, Eina_Bool bPass); - -void _ivug_slider_slide_update_shift(struct Smart_Data *sd); - - -void _ivug_on_mouse_down(Evas_Object *obj, MouseEvent *down, void *data); - -void _ivug_on_mouse_up(Evas_Object *obj, MouseEvent *up, void *data); - -void _ivug_on_mouse_move(Evas_Object *obj, MouseEvent *prev, MouseEvent *cur, void *data); - -#ifdef __cplusplus -} -#endif - - - -#endif // __IVUG_SLIDER_PRIV_H__ - diff --git a/main/src/view/ivug-slider-slideshow.c b/main/src/view/ivug-slider-slideshow.c deleted file mode 100755 index 3e2e7bb..0000000 --- a/main/src/view/ivug-slider-slideshow.c +++ /dev/null @@ -1,334 +0,0 @@ -/* - * 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 "ivug-common.h" -#include "ivug-main.h" - -#include "ivug-slider.h" -#include "ivug-mouse-event.h" -#include "ivug-slider-item.h" -#include "ivug-anim.h" -#include "ivug-effect.h" -#include "ivug-slider-priv.h" -#include "ivug-data.h" -#include "ivug-data-shuffle.h" - - -static const char *_get_ss_state(slideshow_state_t state) -{ - const char *szMsg[] = {"Stopped", "Running", "Paused" }; - - return szMsg[state]; -} - - -void _ivug_slider_effect_finished(void *data) -{ - struct Smart_Data* sd = (struct Smart_Data*) data; - ivug_ret_if(!sd); - - MSG_SLIDER_HIGH("Slide Effect ended"); - - if(sd->effect_engine) - { - ivug_effect_finalize(sd->effect_engine); - sd->effect_engine = NULL; - } - - if (sd->slide[NEXT_SLIDE]->mitem && sd->bSS_SlideFlag == EINA_FALSE) - { - _ivug_slider_slide_update_shift_right(sd); - } - - // Update edge state - sd->edge = _ivug_slider_edge_state_get(sd->slide[CENTER_SLIDE]); - - if(sd->bSS_StopFlag == EINA_TRUE) - { - sd->ss_state = SLIDE_SHOW_STOPPED; - MSG_SLIDER_HIGH("effect_engine is finished"); - evas_object_smart_callback_call(sd->obj, "slider,slideshow,interrupted", (void *)sd->slide[CENTER_SLIDE]); - ivug_slider_restore_window_list(sd->obj); - sd->bSS_StopFlag = EINA_FALSE; - } -} - - -// Slide Show related functions. -static Eina_Bool -_ivug_slider_slide_show_cb(void *data) -{ - IV_ASSERT(data != NULL); - - struct Smart_Data* sd = (struct Smart_Data*) data; - - if(sd->ss_state == SLIDE_SHOW_STOPPED) /* stopped by other operation */ - { - sd->ss_timer = NULL; - return ECORE_CALLBACK_CANCEL; - } - - Media_Item *item = NULL; - - if(sd->ss_mode & SLIDE_SHOW_MODE_SHUFFLE) - { - item = ivug_data_get_next_shuffle_item(sd->media_list); - } - else // shuffle slideshow is off - { - item = ivug_data_get_next(sd->slide[CENTER_SLIDE]->mitem); - } - - //calc slide show - if ( item != NULL || (sd->ss_mode & SLIDE_SHOW_MODE_REPEAT)) /* repeat is endless */ - { - MSG_SLIDER_HIGH("ivug_effect_add Effect=%d", sd->effect_type); - - Effect_Engine *eng = ivug_effect_add(sd->effect_type); - - if(eng == NULL) - { - MSG_SLIDER_ERROR("Cannot create effect NULL"); - return ECORE_CALLBACK_CANCEL; - } - - sd->effect_engine = eng; - ivug_effect_init(sd->effect_engine, sd->slide[CENTER_SLIDE]->layout, sd->slide[NEXT_SLIDE]->layout, sd->w, sd->h, 0); - - ivug_effect_start(sd->effect_engine, _ivug_slider_effect_finished, sd); - - return ECORE_CALLBACK_RENEW; - } - else - { - MSG_SLIDER_HIGH("Reached end of images. Stop slide show"); - - sd->ss_timer = NULL; - evas_object_smart_callback_call(sd->obj, "slider,slideshow,finished", (void *)sd->slide[CENTER_SLIDE]); - return ECORE_CALLBACK_CANCEL; - } - -} - - -static Eina_Bool -_ivug_slider_slide_finish_cb(void *data) -{ - IV_ASSERT(data != NULL); - - struct Smart_Data* sd = (struct Smart_Data*) data; - - sd->ss_timer = NULL; - - evas_object_smart_callback_call(sd->obj, "slider,slideshow,finished", (void *)sd->slide[CENTER_SLIDE]); - - return ECORE_CALLBACK_CANCEL; -} - - -static Effect_Type -ivug_slider_get_trans_effect(ivug_effect_type type) -{ - MSG_SLIDER_MED("type %d", type); - - switch(type) - { - case IVUG_EFFECT_TYPE_SLIDE: - return EFFECT_SLIDE; - break; - - default: - break; - } - - return EFFECT_NONE; -} - - -void -ivug_slider_start_slide_show(Evas_Object* obj, Eina_Bool bSlideFirst) -{ - IV_ASSERT(obj != NULL); - - struct Smart_Data *sd = (struct Smart_Data *)evas_object_smart_data_get(obj); - IV_ASSERT(sd != NULL); - - ivug_effect_type ivug_effect = IVUG_EFFECT_TYPE_SLIDE; - - ivug_config_get_slideshow_setting(&(sd->ss_mode), &(sd->ss_interval_time), &ivug_effect); - - MSG_SLIDER_HIGH("Start slide show. Interval=%f Effect=%d", sd->ss_interval_time, ivug_effect); - - if(sd->ss_interval_time < 0) - { - MSG_SLIDER_HIGH("slide show interval time is invalid !!!"); - ivug_slider_stop_slide_show(obj); - return ; - } - -// sd->ss_interval_time = 6.0f; // Test - - if ( sd->ss_state == SLIDE_SHOW_RUNNING ) - { - MSG_SLIDER_WARN("Slide show is running. remove previous one."); - ivug_slider_stop_slide_show(obj); - } - - if ( sd->effect_engine != NULL ) - { - MSG_SLIDER_FATAL("Debug Me!!!"); - return ; - } - - sd->bSS_SlideFlag = EINA_FALSE; - sd->bSS_StopFlag = EINA_FALSE; - - sd->effect_type = ivug_slider_get_trans_effect(ivug_effect); - - ivug_data_set_window_size(sd->media_list, IV_WINDOW_SIZE_FOR_SLIDE_SHOW); - - /////////////////////////////////////////////////////// - if(sd->ss_mode & SLIDE_SHOW_MODE_SHUFFLE) - { - { - ivug_data_init_shuffle_slide_show(sd->media_list, sd->ss_mode, sd->cur_list_idx, sd->list_total_count); - } - } - - ivug_slider_item_data_unset(sd->slide[NEXT_SLIDE]); -// TODO : parameter of ivug_data_get_current_slide_show_item() is too complex!!!! - Media_Item *item = ivug_data_get_current_slide_show_item(sd->media_list, sd->ss_mode, sd->cur_list_idx, &(sd->next_list_idx), sd->list_total_count); - - if(item == NULL) - { - MSG_SLIDER_ERROR("Item is NULL. CurIndex=%d", sd->cur_list_idx); - - ivug_data_set_window_size(sd->media_list, IV_WINDOW_SIZE); - if(sd->ss_timer) { - ecore_timer_del(sd->ss_timer); - sd->ss_timer = NULL; - } - sd->ss_timer = ecore_timer_add(sd->ss_interval_time, _ivug_slider_slide_finish_cb, sd); - return; - } - - ivug_data_append_media_item(sd->media_list, item); - ivug_slider_item_data_set(sd->slide[NEXT_SLIDE], item); //set iterator - ivug_slider_item_data_loading(sd->slide[NEXT_SLIDE]); - - /* set sd->slide[NEXT_SLIDE] 's next item*/ - ivug_data_set_next_slide_show_item(sd->media_list, sd->ss_mode, &(sd->next_list_idx), sd->list_total_count); - - sd->ss_state = SLIDE_SHOW_RUNNING; - if(bSlideFirst == EINA_TRUE) - { - if ( _ivug_slider_slide_show_cb(sd) == ECORE_CALLBACK_CANCEL ) - { - MSG_SLIDER_WARN("Slide ended????"); - ivug_data_set_window_size(sd->media_list, IV_WINDOW_SIZE); - return; - } - } - if(sd->ss_timer) { - ecore_timer_del(sd->ss_timer); - sd->ss_timer = NULL; - } - sd->ss_timer = ecore_timer_add(sd->ss_interval_time, _ivug_slider_slide_show_cb, sd); - - MSG_SLIDER_HIGH("Slide show started!"); - -// if it is last slide, need hide menu bar -} - -void -ivug_slider_pause_slide_show(Evas_Object* obj) -{ - IV_ASSERT(obj != NULL); - - struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj); - IV_ASSERT(sd != NULL); - - MSG_SLIDER_HIGH("Pause slide show. state=%s", _get_ss_state(sd->ss_state)); - - if(sd->ss_timer) - { - ecore_timer_freeze(sd->ss_timer); - } - - sd->ss_state = SLIDE_SHOW_PAUSE; -} - -void -ivug_slider_resume_slide_show(Evas_Object* obj) -{ - IV_ASSERT(obj != NULL); - - struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj); - IV_ASSERT(sd != NULL); - - MSG_SLIDER_HIGH("Resume slide show. state=%s", _get_ss_state(sd->ss_state)); - - if(sd->ss_timer) - { - ecore_timer_thaw(sd->ss_timer); - } - - sd->ss_state = SLIDE_SHOW_RUNNING; // TODO : Buggy -} - -void -ivug_slider_stop_slide_show(Evas_Object* obj) -{ - IV_ASSERT(obj != NULL); - - struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj); - IV_ASSERT(sd != NULL); - - if ( sd->ss_state != SLIDE_SHOW_RUNNING ) - { - MSG_SLIDER_WARN("Stop slide show. but not run state. state=%s", _get_ss_state(sd->ss_state) ); - return; - } - - MSG_SLIDER_HIGH("Stop slide show. XY(%d,%d)", sd->x, sd->y); - sd->bSS_StopFlag = EINA_TRUE; - - //delete timmer - if(sd->ss_timer) { - ecore_timer_del(sd->ss_timer); - sd->ss_timer = NULL; - } - - if(sd->ss_mode & SLIDE_SHOW_MODE_SHUFFLE) - { - ivug_data_deinit_shuffle_slide_show(sd->media_list, - sd->list_total_count); - } - - ivug_data_set_window_size(sd->media_list, IV_WINDOW_SIZE); - - if(sd->effect_engine == NULL) - { - sd->ss_state = SLIDE_SHOW_STOPPED; - MSG_SLIDER_HIGH("effect_engine is NULL"); - evas_object_smart_callback_call(sd->obj, "slider,slideshow,interrupted", (void *)sd->slide[CENTER_SLIDE]); - ivug_slider_restore_window_list(sd->obj); - sd->bSS_StopFlag = EINA_FALSE; - } -} - - diff --git a/main/src/view/ivug-slider.c b/main/src/view/ivug-slider.c deleted file mode 100755 index fe5645b..0000000 --- a/main/src/view/ivug-slider.c +++ /dev/null @@ -1,1245 +0,0 @@ -/* - * 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 // ug_destroy_me, ug_send_result - -#include "ivug-slider.h" -#include "ivug-common.h" -#include "ivug-main.h" - -#include "ivug-parameter.h" -#include "ivug-define.h" -#include "ivug-effect.h" -#include "ivug-config.h" - -#include "ivug-util.h" -#include "ivug-data.h" -#include "ivug-data-shuffle.h" - -#include "ivug-mouse-event.h" -#include "ivug-slider-item.h" -#include "ivug-anim.h" -#include "ivug-slider-priv.h" - -#undef LOG_TAG -#define LOG_TAG "IV-SLIDER" - -#define DEFFERED_LOADING - -#define ANI_TIME_FLICK (0.2f) - -static Eina_Bool _ivug_slider_on_animation(void *data); - -//smart object -static void -_ivug_slider_smart_init(void); -static void -_ivug_slider_smart_add(Evas_Object *obj); -static void -_ivug_slider_smart_del(Evas_Object *obj); -static void -_ivug_slider_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y); -static void -_ivug_slider_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h); -static void -_ivug_slider_smart_show(Evas_Object *obj); -static void -_ivug_slider_smart_hide(Evas_Object *obj); -static void -_ivug_slider_smart_color_set(Evas_Object *obj, int r, int g, int b, int a); -static void -_ivug_slider_smart_clip_set(Evas_Object *obj, Evas_Object * clip); -static void -_ivug_slider_smart_clip_unset(Evas_Object *obj); - -/* local subsystem globals */ -static Evas_Smart *_smart_ = NULL; - -// Smart Object -static void -_ivug_slider_smart_init(void) -{ - if (_smart_) return; - { - const char* name = eina_stringshare_add("ivug-slider"); - MSG_SLIDER_MED("name=%s", name); - static Evas_Smart_Class sc = - { - NULL, - EVAS_SMART_CLASS_VERSION, - _ivug_slider_smart_add, - _ivug_slider_smart_del, - _ivug_slider_smart_move, - _ivug_slider_smart_resize, - _ivug_slider_smart_show, - _ivug_slider_smart_hide, - _ivug_slider_smart_color_set, - _ivug_slider_smart_clip_set, - _ivug_slider_smart_clip_unset, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL - }; //Evas_smart_Class - sc.name = name; - _smart_ = evas_smart_class_new(&sc); - } -} - - -void -_ivug_slider_pass_event_to_item(struct Smart_Data *sd, Eina_Bool bPass) -{ - int i = 0; - - if ( bPass == EINA_TRUE) - { - MSG_SLIDER_HIGH("Photocam can get Event"); -// Later, will enable below code. -// evas_object_repeat_events_set(sd->event_obj, EINA_TRUE ); - } - else - { - MSG_SLIDER_MED("Photocam can not get Event"); -// evas_object_repeat_events_set(sd->event_obj, EINA_FALSE ); - } - - for (i = 0; i < MAX_SLIDE; i++) - { - ivug_slider_item_hold_set(sd->slide[i], !bPass); - } -} - - -#define _ivug_slider_edge_state_get(si) __ivug_slider_edge_state_get(si, __func__, __LINE__) - -slide_edge_t __ivug_slider_edge_state_get(Slide_Item *si, const char *func, int line) -{ - int nx, ny, nw, nh; - - slide_edge_t result = SLIDE_NO_EDGE; - - if ( ivug_slider_item_region_size_get(si, &nx, &ny, &nw, &nh) == false) - { - // false means video file item. in this case, no photocam exists. - MSG_SLIDER_HIGH("[%20s:%4d] Slide fit. Thumbnail only", func, line); - result = SLIDE_FIT; - } - else - { - if ( nw <= (si->w + IMAGE_SCROLL_MARGIN) && (nh <= si->h + IMAGE_SCROLL_MARGIN)) - { - MSG_SLIDER_HIGH("[%20s:%4d] Slide fit", func, line); - result = SLIDE_FIT; - } - else - { - MSG_SLIDER_HIGH("No edge!!"); - return SLIDE_NO_EDGE; - } - } - - if ( result == SLIDE_NO_EDGE ) - { - MSG_SLIDER_HIGH("[%20s:%4d] image over screen. %d", func, line, result); - } - - return result; -} - -static Eina_Bool _idler_loading_func(void* data) -{ - struct Smart_Data *sd = data; - - int i; - sd->load_idler = NULL; - - if ( sd->slide[CENTER_SLIDE]->state == SLIDE_STATE_READY ) // Center image must be loaded even while other image is loading. - { - ivug_slider_item_data_loading(sd->slide[CENTER_SLIDE]); - goto end; - } - - for ( i = 0; i < MAX_SLIDE ; i++) - { - if ( sd->slide[i]->state == SLIDE_STATE_LOADING ) - { - goto end; - } - } - - if ( sd->slide[NEXT_SLIDE]->state == SLIDE_STATE_READY ) - { - ivug_slider_item_data_loading(sd->slide[NEXT_SLIDE]); - goto end; - } - - if ( sd->slide[PREV_SLIDE]->state == SLIDE_STATE_READY ) - { - ivug_slider_item_data_loading(sd->slide[PREV_SLIDE]); - goto end; - } - - MSG_SLIDER_WARN("Set Data loading State=%d,%d,%d", - sd->slide[PREV_SLIDE]->state, - sd->slide[CENTER_SLIDE]->state, - sd->slide[NEXT_SLIDE]->state - ); - - -end: - return ECORE_CALLBACK_CANCEL; - -} - - -static Eina_Bool -_ivug_slider_set_window_loading_idler(void* data) -{ - ivug_retv_if(!data, ECORE_CALLBACK_CANCEL); - - struct Smart_Data *sd = (struct Smart_Data *)data; - ivug_retv_if(!sd, ECORE_CALLBACK_CANCEL); - - Load_State status = IVUG_SLIDER_LOADED_NONE; - - if(sd->ss_state != SLIDE_SHOW_RUNNING) - { - status = ivug_data_set_window_loading(sd->media_list, sd->cur_list_idx, sd->list_total_count); - switch(status) - { - case IVUG_SLIDER_LOADED_RIGHT: - if(sd->slide[NEXT_SLIDE]->mitem == NULL) - { - Media_Item *item = ivug_data_get_next(sd->slide[CENTER_SLIDE]->mitem); - if(item != NULL) /* loaded but not set yet */ - { - MSG_SLIDER_HIGH("SET NEXT!!!!!!!!!!"); - ivug_slider_item_data_set(sd->slide[NEXT_SLIDE], item); //set data. -#ifdef DEFFERED_LOADING - if ( sd->load_idler == NULL ) - { - sd->load_idler = ecore_idler_add(_idler_loading_func, sd); - } -#else - ivug_slider_item_data_loading(sd->slide[NEXT_SLIDE]); //set data. -#endif - - } - } - break; - case IVUG_SLIDER_LOADED_LEFT: - if(sd->slide[PREV_SLIDE]->mitem == NULL) - { - Media_Item *item = ivug_data_get_prev(sd->slide[CENTER_SLIDE]->mitem); - if(item != NULL) /* loaded but not set yet */ - { - MSG_SLIDER_HIGH("SET PREV!!!!!!!!!!"); - ivug_slider_item_data_set(sd->slide[PREV_SLIDE], item); //set data. -#ifdef DEFFERED_LOADING - if ( sd->load_idler == NULL ) - { - sd->load_idler = ecore_idler_add(_idler_loading_func, sd); - } -#else - ivug_slider_item_data_loading(sd->slide[PREV_SLIDE]); //set data. -#endif - - } - } - break; - default : - MSG_SLIDER_WARN("Unhandled state : %d", status); - break; - } - } - else - { - MSG_SLIDER_HIGH("SLIDE_SHOW_RUNNING!!!!!!!!!!"); - ivug_data_set_next_slide_show_item(sd->media_list, sd->ss_mode, &(sd->next_list_idx), sd->list_total_count); - } - - if (sd->idler_list) - { - ecore_idler_del(sd->idler_list); - sd->idler_list = NULL; - } - - return ECORE_CALLBACK_CANCEL; -} - -void _ivug_slider_item_changed(slide_state_t state, Slide_Item *si, void *client_data) -{ - struct Smart_Data *sd = client_data; - IV_ASSERT(sd != NULL); - - if ( state == SLIDE_STATE_LOADED ) - { - if ( sd->slide[CENTER_SLIDE] == si ) - { - MSG_SLIDER_HIGH("Call Item state changed callback State=%d Si->State=%d", state, si->state); - evas_object_smart_callback_call(sd->obj, "slider,item,state,changed", si); - } - } - else if (state == SLIDE_STATE_ERROR) - { - if ( sd->slide[CENTER_SLIDE] == si ) - { - MSG_SLIDER_ERROR("Decoding failed"); - evas_object_smart_callback_call(sd->obj, "slider,item,state,changed", si); - } - } - else - { - MSG_SLIDER_ERROR("Unknown state : %d", state); - if ( sd->slide[CENTER_SLIDE] == si ) - { - MSG_SLIDER_ERROR("Unknown state"); - evas_object_smart_callback_call(sd->obj, "slider,item,state,changed", si); - } - } - - if ( sd->load_idler == NULL ) - { - MSG_SLIDER_HIGH("Add idler for loading."); - sd->load_idler = ecore_idler_add(_idler_loading_func, sd); - } - -} - -void ivug_slider_restore_window_list(Evas_Object *obj) -{ - struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj); - - MSG_SDATA_HIGH("******* restore slide show index %d", sd->cur_list_idx); - - Media_Item *item = NULL; - Eina_List *new_list = NULL; - int start_index = sd->cur_list_idx; - int list_total_count = sd->list_total_count; - - Media_Data *mdata = ivug_data_get_data(sd->slide[CENTER_SLIDE]->mitem); - if(mdata == NULL) - { - MSG_SLIDER_ERROR("mdata is NULL"); - return; - } - - char *path = mdata->filepath; - if(path == NULL) - { - path = mdata->fileurl; - } - ivug_data_reset_window_load_count(sd->media_list); /* TODO : it is temp */ - item = ivug_data_create_media_list_from_param - (sd->media_list, &new_list, path, &start_index, &list_total_count); //get list by file path. - if(item == NULL) - { - MSG_SLIDER_ERROR("create media list failed"); - ug_destroy_me(gGetUGHandle()); - return; - } - - if (!ivug_slider_set_slide_list(sd->obj, sd->media_list, new_list, item, start_index, list_total_count)) - { - MSG_SLIDER_ERROR("slide list set Error"); - ug_destroy_me(gGetUGHandle()); - return ; - } -} - - -static void -_ivug_slider_smart_add(Evas_Object *obj) -{ - MSG_SLIDER_HIGH("Slider Add : 0x%08x", obj); - - PERF_CHECK_BEGIN(LVL4 "add slider item"); - - struct Smart_Data *sd = calloc(1, sizeof(struct Smart_Data)); - ivug_ret_if(!sd); - - sd->obj = obj; - evas_object_smart_data_set(obj, sd); - int idx = 0; - -//create slider item. - for (idx = 0; idx < MAX_SLIDE; idx++) - { - sd->slide[idx] = ivug_slider_item_add(obj); - ivug_slider_item_set_callback(sd->slide[idx], _ivug_slider_item_changed, sd); - } - - PERF_CHECK_END(LVL4 "add slider item"); - - PERF_CHECK_BEGIN(LVL4 "remants"); - - sd->event_obj = evas_object_rectangle_add(evas_object_evas_get(obj)); - evas_object_color_set(sd->event_obj , 0, 0, 0, 0); // Fully Transparent object. - evas_object_size_hint_align_set(sd->event_obj, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_size_hint_weight_set(sd->event_obj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - - evas_object_show(sd->event_obj); - - evas_object_smart_member_add(sd->event_obj, obj); - evas_object_repeat_events_set(sd->event_obj, EINA_TRUE); // mouse event should pass to phocam - - mouse_callback_t cb = {0,}; - - cb.onMouseDown = _ivug_on_mouse_down; - cb.onMouseUp = _ivug_on_mouse_up; - - cb.onMouseMove = _ivug_on_mouse_move; - - sd->mouse_event = ivug_mouse_event_add(sd->event_obj, &cb, obj, "SLIDER"); - sd->edge = SLIDE_FIT; - - sd->idler_list = NULL; - - sd->anim = create_animation(); - set_animation_type(sd->anim,ANIM_TYPE_QUARTIC_INOUT); - - PERF_CHECK_END(LVL4 "remants"); - return; - -} - -static void -_ivug_slider_smart_del(Evas_Object *obj) -{ - MSG_SLIDER_HIGH("Slider delete"); - - struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj); - ivug_ret_if(!sd); - - if(sd->click_timer) - { - ecore_timer_del(sd->click_timer); - sd->click_timer = NULL; - } - - if ( sd->load_idler ) - { - ecore_idler_del(sd->load_idler); - sd->load_idler = NULL; - } - - if(sd->animator) - { - ecore_animator_del(sd->animator); - sd->animator = NULL; - } - - if ( sd->anim ) - { - delete_animation(sd->anim); - sd->anim = NULL; - } - if (sd->long_timer) - { - ecore_timer_del(sd->long_timer); - sd->long_timer = NULL; - } - - if(sd->ss_timer) - { - ecore_timer_del(sd->ss_timer); - sd->ss_timer = NULL; - } - - if (sd->idler_list) - { - ecore_idler_del(sd->idler_list); - sd->idler_list = NULL; - } - - if ( sd->event_obj ) - { - ivug_mouse_event_del(sd->mouse_event); - - evas_object_del(sd->event_obj); - sd->event_obj = NULL; - } - - int i=0; - for (i = 0; i < MAX_SLIDE ; i++) //delete layout - { - ivug_slider_item_del(sd->slide[i]); - sd->slide[i] = NULL; - } - - if (sd->media_list) - { - ivug_data_delete_media_list(sd->media_list); - } - - free(sd); - - IVUG_FUNC_LEAVE(); -} - - -static void -_ivug_slider_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y) -{ - struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj); - ivug_ret_if(!sd); - - if ((sd->x == x) && (sd->y == y)) return; - - MSG_SLIDER_MED("Slider Move : XY(%d,%d)", x, y); - - sd->x = x; - sd->y = y; - _ivug_slider_slide_update_pos(sd, x, y); - - evas_object_move(sd->event_obj, sd->x, sd->y); -} - -static void -_ivug_slider_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h) -{ - MSG_SLIDER_HIGH("Slider Resize : WH(%d,%d)", w,h); - - struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj); - ivug_ret_if(!sd); - - if ((sd->w == w) && (sd->h == h)) return; - - sd->w = w; - sd->h = h; - - if ( sd->animator != NULL ) - { - // Remove animation during rotation - ecore_animator_del(sd->animator); - sd->animator = NULL; - } - - //resize layout - int i = 0; - for (i = 0; i < MAX_SLIDE; i++) - { //set resize - ivug_slider_item_resize(sd->slide[i], w, h); - } - -// Redraw items. - ivug_slider_item_move(sd->slide[CENTER_SLIDE], 0, 0); - -// TODO : so as to increas perf, dont draw slide under certain condition - ivug_slider_item_move(sd->slide[PREV_SLIDE], - sd->slide[PREV_SLIDE]->w - IMAGE_BETWEEN_MARGIN ,0); - - int right_x; - - if ( sd->w < sd->slide[CENTER_SLIDE]->w ) - { - right_x = sd->w + IMAGE_BETWEEN_MARGIN; - } - else - { - right_x = sd->slide[CENTER_SLIDE]->w + IMAGE_BETWEEN_MARGIN; - } - - ivug_slider_item_move(sd->slide[NEXT_SLIDE], right_x, 0); - -// evas_object_move(sd->event_obj, sd->x, sd->y); - evas_object_resize(sd->event_obj, sd->w, sd->h); -} - -static void -_ivug_slider_smart_show(Evas_Object *obj) -{ - struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj); - ivug_ret_if(!sd); - - if ( sd->bShow == EINA_TRUE) return; - - sd->bShow = EINA_TRUE; - - MSG_SLIDER_HIGH("Slider Show"); - - ivug_slider_item_show(sd->slide[CENTER_SLIDE]); - ivug_slider_item_show(sd->slide[NEXT_SLIDE]); - ivug_slider_item_show(sd->slide[PREV_SLIDE]); - - evas_object_show(sd->event_obj); -} - -static void -_ivug_slider_smart_hide(Evas_Object *obj) -{ - ivug_ret_if(!obj); - struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj); - - if ( sd->bShow == EINA_FALSE) return; - - sd->bShow = EINA_FALSE; - - MSG_SLIDER_HIGH("Slider Hide"); - - ivug_slider_item_hide(sd->slide[CENTER_SLIDE]); - ivug_slider_item_hide(sd->slide[NEXT_SLIDE]); - ivug_slider_item_hide(sd->slide[PREV_SLIDE]); - - evas_object_hide(sd->event_obj); -} - -static void -_ivug_slider_smart_color_set(Evas_Object *obj, int r, int g, int b, int a) -{ - MSG_SLIDER_HIGH("Slider Color set : RGBA(%d,%d,%d,%d)", r, g, b, a); - ivug_ret_if(!obj); -// struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj); -} - -static void -_ivug_slider_smart_clip_set(Evas_Object *obj, Evas_Object * clip) -{ - MSG_SLIDER_HIGH("Slider Clip set : Clipper=0x%08x"); - ivug_ret_if(!obj); - struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj); - - int i = 0; - for (i = 0; i < MAX_SLIDE; i++) - { //set resize - ivug_slider_item_clip_set(sd->slide[i], clip); - } - - evas_object_clip_set(sd->event_obj, clip); -} - -static void -_ivug_slider_smart_clip_unset(Evas_Object *obj) -{ - MSG_SLIDER_HIGH("Slider Clip unset"); - - ivug_ret_if(!obj); - struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj); - - int i = 0; - for (i = 0; i < MAX_SLIDE; i++) - { //set resize - ivug_slider_item_clip_unset(sd->slide[i]); - } - - evas_object_clip_unset(sd->event_obj); -} - -/******* slide UI function *******/ - -void -_ivug_slider_slide_update_pos(struct Smart_Data *sd, Evas_Coord x, Evas_Coord y) -{ - IV_ASSERT(sd != NULL); - -// TODO : If size is smaller than screen's, image should be put in middle - ivug_slider_item_move(sd->slide[CENTER_SLIDE], x, y); - -// TODO : so as to increas perf, dont draw slide under certain condition - ivug_slider_item_move(sd->slide[PREV_SLIDE], x - sd->slide[PREV_SLIDE]->w - IMAGE_BETWEEN_MARGIN , y); - - ivug_slider_item_move(sd->slide[NEXT_SLIDE], x + sd->slide[CENTER_SLIDE]->w + IMAGE_BETWEEN_MARGIN , y); -} - - - void -_ivug_slider_slide_update(struct Smart_Data *sd, int x, int y) - { - IV_ASSERT(sd != NULL); - - sd->t_base = ecore_loop_time_get(); - set_animation(sd->anim, x, y, ANI_TIME_FLICK); - - if (sd->animator == NULL) - { -// In elm_config_scroll_zoom_friction_get() returns 0.5. this means 500ms. - if(sd->animator) - { - ecore_animator_del(sd->animator); - sd->animator = NULL; - } - - sd->animator = ecore_animator_add(_ivug_slider_on_animation, sd); - - return; - } - - MSG_SLIDER_WARN("Updata animation is alreay exists."); -} - - -void -_ivug_slider_slide_update_shift_right(struct Smart_Data *sd) -{ - ivug_ret_if(!sd); - - Slide_Item* PrevSlide = NULL; - - MSG_SLIDER_HIGH( "Slide shited. <-----"); - - Media_Item *item = ivug_data_get_next(sd->slide[NEXT_SLIDE]->mitem); //get interator - - PrevSlide = sd->slide[PREV_SLIDE]; - ivug_slider_item_data_unset(PrevSlide); - - //set init - sd->slide[PREV_SLIDE] = sd->slide[CENTER_SLIDE]; - sd->slide[CENTER_SLIDE] = sd->slide[NEXT_SLIDE]; - sd->slide[NEXT_SLIDE] = PrevSlide; - - if ( item != NULL ) - { - ivug_slider_item_data_set(sd->slide[NEXT_SLIDE], item); //set iterator -#ifdef DEFFERED_LOADING - if ( sd->load_idler == NULL ) - { - sd->load_idler = ecore_idler_add(_idler_loading_func, sd); - } -#else - ivug_slider_item_data_loading(sd->slide[NEXT_SLIDE]); //set data. -#endif - } - - if(sd->ss_state == SLIDE_SHOW_RUNNING ) - { - MSG_SLIDER_HIGH("Slide show.. Update position. XY(%d,%d)", sd->x , sd->y); - _ivug_slider_slide_update_pos(sd, sd->x , sd->y); //update - - ivug_slider_item_show(sd->slide[CENTER_SLIDE]); - ivug_slider_item_show(sd->slide[NEXT_SLIDE]); - ivug_slider_item_show(sd->slide[PREV_SLIDE]); - } - else - { - _ivug_slider_slide_update_pos(sd, sd->slide[CENTER_SLIDE]->x , sd->slide[CENTER_SLIDE]->y); //update - } - - if(sd->ss_state != SLIDE_SHOW_RUNNING) - { - sd->cur_list_idx++; - } - else /* (sd->ss_state == SLIDE_SHOW_RUNNING) */ - { - int ret = 0; - sd->cur_list_idx = sd->next_list_idx; - ret = ivug_data_get_next_slide_show_index(sd->media_list, sd->ss_mode, sd->next_list_idx, sd->list_total_count, true); - if(ret > 0) - { - sd->next_list_idx = ret; - } - } - //call callback function. - - MSG_SLIDER_HIGH( ">>>cur index %d, total count %d, list_count %d <<<", - sd->cur_list_idx, sd->list_total_count, eina_list_count(ivug_data_get_first(sd->media_list))); - - - ivug_slider_item_zoom_reset(sd->slide[PREV_SLIDE], EINA_FALSE, 0,0); - - evas_object_smart_callback_call(sd->obj, "slider,item,changed", sd->slide[CENTER_SLIDE]); - - if(sd->idler_list == NULL) - { - sd->idler_list = ecore_idler_add(_ivug_slider_set_window_loading_idler, (void *)sd); - } -} - - -void -_ivug_slider_slide_update_shift_left(struct Smart_Data *sd) -{ - ivug_ret_if(!sd); - - Slide_Item* NextSlide = NULL; - - MSG_SLIDER_HIGH( "Slide shited. ----->"); - - Media_Item *item = ivug_data_get_prev(sd->slide[PREV_SLIDE]->mitem); //get interator - - NextSlide = sd->slide[NEXT_SLIDE]; - ivug_slider_item_data_unset(NextSlide); - - sd->slide[NEXT_SLIDE] = sd->slide[CENTER_SLIDE]; - sd->slide[CENTER_SLIDE] = sd->slide[PREV_SLIDE]; - sd->slide[PREV_SLIDE] = NextSlide; - - if ( item != NULL ) - { - ivug_slider_item_data_set(sd->slide[PREV_SLIDE], item); //set data. -#ifdef DEFFERED_LOADING - if ( sd->load_idler == NULL ) - { - sd->load_idler = ecore_idler_add(_idler_loading_func, sd); - } -#else - ivug_slider_item_data_loading(sd->slide[PREV_SLIDE]); //set data. -#endif - } - - _ivug_slider_slide_update_pos(sd, sd->slide[CENTER_SLIDE]->x , sd->slide[CENTER_SLIDE]->y); //update - - sd->cur_list_idx--; - //call callback function. - - ivug_slider_item_zoom_reset(sd->slide[NEXT_SLIDE], EINA_FALSE, 0,0); - - evas_object_smart_callback_call(sd->obj, "slider,item,changed", sd->slide[CENTER_SLIDE]); - - if(sd->idler_list == NULL) - { - sd->idler_list = ecore_idler_add(_ivug_slider_set_window_loading_idler, (void *)sd); - } - - -} - - void -_ivug_slider_slide_update_shift(struct Smart_Data *sd) -{ - ivug_ret_if(!sd); - - shift_direction_t shift_direction = SLIDE_SHIFT_NONE; - - if ( sd->slide[CENTER_SLIDE]->x + sd->slide[CENTER_SLIDE]->w < 0 ) - { - shift_direction = SLIDE_SHIFT_TO_RIGHT; - if ( sd->slide[NEXT_SLIDE]->mitem == NULL ) // most right position. - { - MSG_SLIDER_HIGH("Most right position"); - - _ivug_slider_slide_update(sd, sd->slide[CENTER_SLIDE]->x , 0); - - return; - } - } - else if ( sd->slide[CENTER_SLIDE]->x > sd->w ) - { - shift_direction = SLIDE_SHIFT_TO_LEFT; - - if ( sd->slide[PREV_SLIDE]->mitem == NULL ) // most right position. - { - MSG_SLIDER_HIGH("Most left position"); - - _ivug_slider_slide_update(sd, sd->slide[CENTER_SLIDE]->x , 0); - - return; - } - } - - if ( shift_direction == SLIDE_SHIFT_TO_RIGHT) // <-------------- - { - _ivug_slider_slide_update_shift_right(sd); - } - else if (shift_direction == SLIDE_SHIFT_TO_LEFT) // --------------> - { - _ivug_slider_slide_update_shift_left(sd); - } - -} - -static Eina_Bool -_ivug_slider_on_animation(void *data) -{ - ivug_retv_if(!data, ECORE_CALLBACK_CANCEL); - struct Smart_Data* sd = (struct Smart_Data*) data; - - int value = 0; - - if ( update_animation(sd->anim, ecore_loop_time_get() - sd->t_base, &value) == false ) // If last frame - { - if(sd->animator) - { - ecore_animator_del(sd->animator); - sd->animator = NULL; - } - - MSG_SLIDER_HIGH("Last ani frame : X pos(%d,%d,%d)", - sd->slide[PREV_SLIDE]->x, sd->slide[CENTER_SLIDE]->x, sd->slide[NEXT_SLIDE]->x); - - _ivug_slider_slide_update_pos(sd, value , sd->y); //update - - _ivug_slider_slide_update_shift(sd); - -// Update edge state - sd->edge = _ivug_slider_edge_state_get(sd->slide[CENTER_SLIDE]); - - return ECORE_CALLBACK_CANCEL; - } - - _ivug_slider_slide_update_pos(sd, value, sd->y); - - return ECORE_CALLBACK_RENEW; - - - } - - -Evas_Object* -ivug_slider_add(Evas_Object* parent) -{ - Evas_Object *obj = NULL; - _ivug_slider_smart_init(); //init smart object for ivug slider - - PERF_CHECK_BEGIN(LVL3 "evas_object_smart_add"); - - obj = evas_object_smart_add(evas_object_evas_get(parent), _smart_); //create smart object. - ivug_retv_if(!obj, NULL); - - - PERF_CHECK_END(LVL3 "evas_object_smart_add"); - - MSG_SLIDER_HIGH("Slider Added Obj(0x%08x) Evas(0x%08x) Parent(0x%08x)", obj, evas_object_evas_get(parent), parent); - - return obj; -} - - -int -ivug_slider_get_total_slide_count(Evas_Object* obj) -{ - ivug_retv_if(!obj, -1); // TODO - struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj); - ivug_retv_if(!sd, -1); - - if(sd->list_total_count <= 0) //sd->media_list->left_end == -1 || - { - sd->list_total_count = eina_list_count(ivug_data_get_first(sd->media_list)); - } - return sd->list_total_count; - -} - -int -ivug_slider_get_current_slide_count(Evas_Object* obj) -{ - ivug_retv_if(!obj, -1); // TODO - struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj); - ivug_retv_if(!sd, -1); - - return sd->cur_list_idx; -} - -Slide_Item * -ivug_slider_get_current_slide_item(Evas_Object* obj) -{ - ivug_retv_if(!obj, NULL); - struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj); - ivug_retv_if(!sd, NULL); - - return sd->slide[CENTER_SLIDE]; -} - - -void -ivug_slider_delete_current_slide(Evas_Object* obj) -{ - ivug_ret_if(!obj); - struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj); - IVUG_FUNC_ENTER(); - - if (sd == NULL) - { - MSG_SLIDER_ERROR("Slide data is NULL"); - return; - } - - shift_direction_t direction = SLIDE_SHIFT_NONE; - if (sd->slide[NEXT_SLIDE]->state != SLIDE_STATE_NONE) - { - MSG_SLIDER_HIGH("right slide state = %d ", sd->slide[NEXT_SLIDE]->state); - direction = SLIDE_SHIFT_TO_RIGHT; - } - else if (sd->slide[PREV_SLIDE]->state != SLIDE_STATE_NONE) - { - MSG_SLIDER_HIGH("left slide state = %d ", sd->slide[PREV_SLIDE]->state); - direction = SLIDE_SHIFT_TO_LEFT; - } - - MSG_SLIDER_HIGH("shift direction = %d ", direction); - - ivug_data_delete_media_item( sd->media_list , sd->slide[CENTER_SLIDE]->mitem ); //delete data. - sd->slide[CENTER_SLIDE]->mitem = NULL; - - ivug_slider_item_data_unset(sd->slide[CENTER_SLIDE]); - - Media_Item* item = NULL; - - //move slide. - if ( direction == SLIDE_SHIFT_TO_RIGHT ) - { - Slide_Item *tmp = sd->slide[CENTER_SLIDE]; - - item = ivug_data_get_next(sd->slide[NEXT_SLIDE]->mitem); //get next data. - - sd->slide[CENTER_SLIDE] = sd->slide[NEXT_SLIDE]; - sd->slide[NEXT_SLIDE] = tmp; - - if(item != NULL) - { - ivug_slider_item_data_set(sd->slide[NEXT_SLIDE], item); - ivug_slider_item_data_loading(sd->slide[NEXT_SLIDE]); - } - } - else if ( direction == SLIDE_SHIFT_TO_LEFT) // -----------> - { - Slide_Item *tmp = sd->slide[CENTER_SLIDE]; - - item = ivug_data_get_prev(sd->slide[PREV_SLIDE]->mitem); //get next data. - - sd->slide[CENTER_SLIDE] = sd->slide[PREV_SLIDE]; - sd->slide[PREV_SLIDE] = tmp; - - sd->cur_list_idx--; - - if(item != NULL) - { - ivug_slider_item_data_set(sd->slide[PREV_SLIDE], item); - ivug_slider_item_data_loading(sd->slide[PREV_SLIDE]); - } - } - else // Shift none - { - } - - _ivug_slider_slide_update_pos(sd, 0 , 0); //update - - Media_Data *sdata = NULL; - - if ( sd->slide[CENTER_SLIDE]->mitem != NULL ) - { - sdata = ivug_data_get_data(sd->slide[CENTER_SLIDE]->mitem); - } - - sd->list_total_count--; - - evas_object_smart_callback_call(sd->obj, "slider,item,deleted", sd->slide[CENTER_SLIDE]); - - if(sd->idler_list == NULL) - { - sd->idler_list = ecore_idler_add(_ivug_slider_set_window_loading_idler, (void *)sd); - } - - IVUG_FUNC_LEAVE(); -} - -Eina_Bool -ivug_slider_set_slide_list(Evas_Object* obj, Media_List *mList, Eina_List *new_list, Media_Item *current, int index, int total_count) - -{ - IV_ASSERT(obj != NULL); - struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj); - - ivug_retv_if(!sd, EINA_FALSE); //check smart data. - - sd->media_list = mList; - sd->cur_list_idx = index; - sd->current = current; - sd->list_total_count = total_count; - - //set init - PERF_CHECK_BEGIN(LVL4 "unset prev&next"); - - ivug_slider_item_data_unset(sd->slide[PREV_SLIDE]); - ivug_slider_item_data_unset(sd->slide[NEXT_SLIDE]); - - PERF_CHECK_END(LVL4 "unset prev&next"); - - if(new_list != NULL) - { - ivug_slider_item_change_mitem_pointer(sd->slide[CENTER_SLIDE], current); - - ivug_data_delete_all_window_list(sd->media_list); // clear window list - ivug_data_append_media_item(sd->media_list, new_list); - } - else - { - PERF_CHECK_BEGIN(LVL4 "set center"); - - ivug_slider_item_data_unset( sd->slide[CENTER_SLIDE]); - ivug_slider_item_data_set(sd->slide[CENTER_SLIDE], current); - - ivug_slider_item_data_loading(sd->slide[CENTER_SLIDE]); - - PERF_CHECK_END(LVL4 "set center"); - } - - Media_Item *item = ivug_data_get_next(current); - if(item != NULL) - { - PERF_CHECK_BEGIN(LVL4 "set next"); - - ivug_slider_item_data_set(sd->slide[NEXT_SLIDE], item); - -#ifdef DEFFERED_LOADING - if ( sd->load_idler == NULL ) - { - sd->load_idler = ecore_idler_add(_idler_loading_func, sd); - } -#else - ivug_slider_item_data_loading(sd->slide[NEXT_SLIDE]); //set data. -#endif - - - PERF_CHECK_END(LVL4 "set next"); - } - item = ivug_data_get_prev(current); - if(item != NULL) - { - PERF_CHECK_BEGIN(LVL4 "set prev"); - - ivug_slider_item_data_set(sd->slide[PREV_SLIDE], item); - -#ifdef DEFFERED_LOADING - if ( sd->load_idler == NULL ) - { - sd->load_idler = ecore_idler_add(_idler_loading_func, sd); - } -#else - ivug_slider_item_data_loading(sd->slide[PREV_SLIDE]); //set data. -#endif - - - PERF_CHECK_END(LVL4 "set prev"); - } - - PERF_CHECK_BEGIN(LVL4 "slider,item,changed"); - - evas_object_smart_callback_call(sd->obj, "slider,item,changed", sd->slide[CENTER_SLIDE]); - - PERF_CHECK_END(LVL4 "slider,item,changed"); - - return EINA_TRUE; -}//ivug slider set list - -Media_Data * -ivug_slider_create_media_list(Evas_Object* obj, ivug_parameter* ivug_param) -{ - // Data List - int list_total_count = 0; - int start_index = ivug_param->start_index; - Media_Item *item = NULL; - Media_List *mList = ivug_data_init_media_list(ivug_param); - Media_Data *mdata = NULL; - - if (mList == NULL) - { - MSG_SLIDER_ERROR("media list is NULL"); - return NULL; - } - - PERF_CHECK_BEGIN(LVL3 "get media list"); - item = ivug_data_create_media_list_from_param - (mList, NULL, ivug_param->filepath, &start_index, &list_total_count); //get list by file path. - if(item == NULL) - { - MSG_SLIDER_ERROR("create media list failed"); - free(mList); - return NULL; - } - PERF_CHECK_END(LVL3 "get media list"); - - PERF_CHECK_BEGIN(LVL3 "set slide list"); - - if (!ivug_slider_set_slide_list(obj, mList, NULL, item, start_index, list_total_count)) - { - MSG_SLIDER_ERROR("slide list set Error"); - free(mList); - return NULL; - } - - PERF_CHECK_END(LVL3 "set slide list"); - -// struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj); -// if(sd->ss_mode & SLIDE_SHOW_MODE_SHUFFLE) - { - PERF_CHECK_BEGIN(LVL3 "make shuffled list"); - - ivug_data_create_shuffled_list(mList, list_total_count); - - PERF_CHECK_END(LVL3 "make shuffled list"); - } - - mdata = ivug_data_get_data(item); - return mdata; -} - - -char* -ivug_slider_get_next_exist_filepath(Evas_Object* obj) -{ - IVUG_FUNC_ENTER(); - ivug_retv_if(!obj, NULL); - struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj); - ivug_retv_if(!sd, NULL); - - char* file_path = NULL; - - Media_Item* next_item = ivug_data_get_next(sd->slide[CENTER_SLIDE]->mitem); - Media_Data *sdata = NULL; - - while(next_item) - { - sdata = ivug_data_get_data(next_item); - - if(sdata != NULL) // TODO : Should review - { - MSG_SLIDER_HIGH("sl_data%s", sdata->filepath); - - if(sdata->filepath && ecore_file_exists(sdata->filepath)) - { - MSG_SLIDER_HIGH("exist filepath %s", sdata->filepath); - file_path = sdata->filepath; - break; - } - } - - next_item = ivug_data_get_next(next_item); - } - - //All files from current are deleted, search from beginning - if(!file_path) - { - next_item = ivug_data_get_first(sd->media_list); - while(next_item && next_item != ivug_data_get_next(sd->slide[CENTER_SLIDE]->mitem)) - { - sdata = ivug_data_get_data(next_item); - - if(sdata != NULL) // TODO : Should review - { - MSG_SLIDER_HIGH("sl_data%s", sdata->filepath); - - if(sdata->filepath && ecore_file_exists(sdata->filepath)) - { - MSG_SLIDER_HIGH("exist filepath %s", sdata->filepath); - file_path = sdata->filepath; - break; - } - } - - next_item = ivug_data_get_next(next_item); - } - } - - IVUG_FUNC_LEAVE(); - - return file_path; -} - - diff --git a/main/src/view/ivug-slider.h b/main/src/view/ivug-slider.h deleted file mode 100755 index bff73c2..0000000 --- a/main/src/view/ivug-slider.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * 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 __IVUG_SLIDER_H__ -#define __IVUG_SLIDER_H__ - -#include "ivug-data.h" -#include "ivug-slider-item.h" - -typedef enum { - SLIDE_SHOW_STOPPED = 0x00, - SLIDE_SHOW_RUNNING, - SLIDE_SHOW_PAUSE, -} slideshow_state_t; - - -//define callback function. -typedef void (*ivug_slider_shift_cb)(Media_Data *cur_sd, void* user_data); -typedef void (*ivug_slider_delete_cb)(Media_Data *cur_sd, void* user_data); -typedef void (*ivug_slider_slide_show_finish_cb)(Media_Data *cur_sd, void* user_data); - -/* - Slider signal list. - - "slider,clicked" : when click once - "slider,clicked,double" : when double click - "slider,longpressed" : when long pressed on slider - "slider,clicked,icon" : video icon clicked. - "slider,item,changed" - - "slider,item,state,changed" - "slider,item,deleted" - "slider,slideshow,finished" : slide show ended cause last slide - "slider,slideshow,interrupted" : slide show stopped by user -*/ - -Evas_Object* -ivug_slider_add(Evas_Object* parent); - -Eina_Bool -ivug_slider_set_slide_list(Evas_Object* obj, Media_List *mList, Eina_List *new_list, Media_Item *current, int index, int total_count); - -Media_Data * -ivug_slider_create_media_list(Evas_Object* obj, ivug_parameter* ivug_param); - -void -ivug_slider_delete_current_slide(Evas_Object* obj); - -void ivug_slider_restore_window_list(Evas_Object *obj); - -Slide_Item * -ivug_slider_get_current_slide_item(Evas_Object* obj); - -/* Will be deprecated */ -int -ivug_slider_get_current_slide_count(Evas_Object* obj); - -int -ivug_slider_get_total_slide_count(Evas_Object* obj); - -/* Will be deprecated*/ -char* -ivug_slider_get_next_exist_filepath(Evas_Object* obj); - -// Slide Show -void -ivug_slider_pause_slide_show(Evas_Object* obj); - -void -ivug_slider_resume_slide_show(Evas_Object* obj); - -/* if bSlideFirst == EINA_TRUE, slide and then wait interval time - if bSlideFirst == EINA_FALSE, wait interval time and then slide */ -void -ivug_slider_start_slide_show(Evas_Object* obj, Eina_Bool bSlideFirst); - -void -ivug_slider_stop_slide_show(Evas_Object* obj); - - -#endif diff --git a/packaging/ug-image-viewer-efl.spec b/packaging/ug-image-viewer-efl.spec index d812eb4..b0d9d9a 100755 --- a/packaging/ug-image-viewer-efl.spec +++ b/packaging/ug-image-viewer-efl.spec @@ -1,10 +1,11 @@ +%define optflags -Wall -Wextra -g -fpie -fPIC -O0 -Wno-unused-parameter -Wno-missing-field-initializers -finstrument-functions + %define _optdir /opt %define _ugdir %{_optdir}/ug - Name: ug-image-viewer-efl Summary: Image Viewer UI Gadget v1.0 -Version: 1.4 +Version: 1.6.35 Release: 0 Group: TO_BE/FILLED_IN License: Flora Software License @@ -15,30 +16,30 @@ BuildRequires: edje-tools BuildRequires: gettext-tools BuildRequires: prelink BuildRequires: libicu-devel + BuildRequires: pkgconfig(elementary) BuildRequires: pkgconfig(edje) BuildRequires: pkgconfig(evas) BuildRequires: pkgconfig(ecore) BuildRequires: pkgconfig(utilX) -BuildRequires: pkgconfig(libmedia-service) -BuildRequires: pkgconfig(ui-gadget) -BuildRequires: pkgconfig(aul) -BuildRequires: pkgconfig(mmutil-imgp) -BuildRequires: pkgconfig(mmutil-jpeg) +BuildRequires: pkgconfig(ui-gadget-1) +BuildRequires: pkgconfig(drm-client) +BuildRequires: pkgconfig(vconf) BuildRequires: pkgconfig(libexif) BuildRequires: pkgconfig(efreet) -BuildRequires: pkgconfig(x11) -BuildRequires: pkgconfig(mm-fileinfo) BuildRequires: pkgconfig(dlog) -BuildRequires: pkgconfig(mm-common) -BuildRequires: pkgconfig(appcore-efl) -BuildRequires: pkgconfig(pmapi) -BuildRequires: pkgconfig(appsvc) BuildRequires: pkgconfig(glib-2.0) -BuildRequires: pkgconfig(sensor) BuildRequires: pkgconfig(xext) BuildRequires: pkgconfig(xcomposite) -BuildRequires: pkgconfig(gconf-2.0) +BuildRequires: pkgconfig(capi-system-power) +BuildRequires: pkgconfig(capi-appfw-application) +BuildRequires: pkgconfig(capi-appfw-app-manager) +BuildRequires: pkgconfig(capi-system-runtime-info) +BuildRequires: pkgconfig(capi-system-sensor) +BuildRequires: pkgconfig(capi-system-haptic) +BuildRequires: pkgconfig(capi-media-metadata-extractor) +BuildRequires: pkgconfig(capi-content-mime-type) +BuildRequires: pkgconfig(capi-content-media-content) %description Description: Image Viewer UI Gadget v1.0 @@ -47,29 +48,55 @@ Description: Image Viewer UI Gadget v1.0 %setup -q %build -cmake . -DCMAKE_INSTALL_PREFIX=%{_ugdir}/ -DCMAKE_DATA_DIR=%{_ugdir}/data + +%ifarch %{arm} +%define ARCH arm +CXXFLAGS+=" -D_ARCH_ARM_ -mfpu=neon -mfloat-abi=softfp" +export CXXFLAGS +%else +%define ARCH i586 +%endif + +CFLAGS+="%optflags" CXXFLAGS+="%{optflags}" \ + cmake . -DCMAKE_INSTALL_PREFIX=%{_ugdir}/ -DCMAKE_DATA_DIR=%{_ugdir}/data -DARCH=%{ARCH} make %{?jobs:-j%jobs} %install +rm -rf %{buildroot} %make_install execstack -c %{buildroot}%{_ugdir}/lib/libug-image-viewer-efl.so.0.1.0 -%find_lang ug-image-viewer-efl - %post chown -R 5000:5000 %{_ugdir}/data/ug-image-viewer-efl +mkdir -p /opt/ug/bin/ +ln -sf /usr/bin/ug-client /opt/ug/bin/image-viewer-efl -%files -f ug-image-viewer-efl.lang +%files +%defattr(-,root,root,-) %dir %{_ugdir}/data/ug-image-viewer-efl -%{_ugdir}/data/ug-image-viewer-efl -%{_ugdir}/res/images/ug-image-viewer-efl/* -%{_ugdir}/res/edje/ug-image-viewer-efl/* -%{_ugdir}/lib/libug-image-viewer-efl.so.0.1.0 -%{_ugdir}/lib/libug-image-viewer-efl.so -%{_ugdir}/lib/libug-image-viewer-efl.so.0 -%{_ugdir}/lib/libivug_common.so -%{_ugdir}/lib/libivug_common.so.0.1.0 + +%defattr(-,root,root,-) +%{_ugdir}/* +#/opt/share/applications/*.desktop +/opt/share/packages/*.xml + +# %{_ugdir}/lib/libivug_common.so +# %{_ugdir}/lib/libivug_common.so.0.1.0 +# %{_ugdir}/lib/libivug_widget.so +# %{_ugdir}/lib/libivug_widget.so.0.1.0 +# %{_ugdir}/lib/libug-image-viewer-efl.so +# %{_ugdir}/lib/libug-image-viewer-efl.so.0 +# %{_ugdir}/lib/libug-image-viewer-efl.so.0.1.0 +# %{_ugdir}/lib/libivug_medialist.so +# %{_ugdir}/lib/libivug_medialist.so.0.1.0 +# %{_ugdir}/lib/libivug_slideshow.so +# %{_ugdir}/lib/libivug_slideshow.so.0.1.0 +# %{_ugdir}/res/edje/ug-image-viewer-efl/*.edj +# %{_ugdir}/res/images/ug-image-viewer-efl/*.png +# %{_ugdir}/res/images/ug-image-viewer-efl/*.jpg +# %{_ugdir}/res/images/ug-image-viewer-efl/*/*.png +# %{_ugdir}/res/locale/*/LC_MESSAGES/ug-image-viewer-efl.mo -- 2.7.4