Add voice feature 14/83614/10
authorsungwook79.park <sungwook79.park@samsung.com>
Fri, 12 Aug 2016 04:49:08 +0000 (13:49 +0900)
committersungwook79.park <sungwook79.park@samsung.com>
Tue, 16 Aug 2016 05:54:51 +0000 (14:54 +0900)
Change-Id: I110bebcac9c1952e932b07aadc3ecf203f336dc8
Signed-off-by: sungwook79.park <sungwook79.park@samsung.com>
85 files changed:
CMakeLists.txt
edje/images/icon/B13_mic.png [new file with mode: 0644]
edje/images/icon/B13_mic_Que.png [new file with mode: 0644]
edje/images/icon/standby_mic_icon.png [new file with mode: 0644]
edje/images/input_ic_voice_mic.png [new file with mode: 0644]
edje/images/style/tw_list_sub_btn_round.png [new file with mode: 0644]
edje/images/style/tw_loading_small_00.png [new file with mode: 0644]
edje/images/style/tw_loading_small_01.png [new file with mode: 0644]
edje/images/style/tw_loading_small_02.png [new file with mode: 0644]
edje/images/style/tw_loading_small_03.png [new file with mode: 0644]
edje/images/style/tw_loading_small_04.png [new file with mode: 0644]
edje/images/style/tw_loading_small_05.png [new file with mode: 0644]
edje/images/style/tw_loading_small_06.png [new file with mode: 0644]
edje/images/style/tw_loading_small_07.png [new file with mode: 0644]
edje/images/style/tw_loading_small_08.png [new file with mode: 0644]
edje/images/style/tw_loading_small_09.png [new file with mode: 0644]
edje/images/style/tw_loading_small_10.png [new file with mode: 0644]
edje/images/style/tw_loading_small_11.png [new file with mode: 0644]
edje/images/style/tw_loading_small_12.png [new file with mode: 0644]
edje/images/style/tw_loading_small_13.png [new file with mode: 0644]
edje/images/style/tw_loading_small_14.png [new file with mode: 0644]
edje/images/style/tw_loading_small_15.png [new file with mode: 0644]
edje/images/style/tw_loading_small_16.png [new file with mode: 0644]
edje/images/style/tw_loading_small_17.png [new file with mode: 0644]
edje/images/style/tw_loading_small_18.png [new file with mode: 0644]
edje/images/style/tw_loading_small_19.png [new file with mode: 0644]
edje/images/style/tw_loading_small_20.png [new file with mode: 0644]
edje/images/style/tw_loading_small_21.png [new file with mode: 0644]
edje/images/style/tw_loading_small_22.png [new file with mode: 0644]
edje/images/style/tw_loading_small_23.png [new file with mode: 0644]
edje/images/style/tw_loading_small_24.png [new file with mode: 0644]
edje/images/style/tw_loading_small_25.png [new file with mode: 0644]
edje/images/style/tw_loading_small_26.png [new file with mode: 0644]
edje/images/style/tw_loading_small_27.png [new file with mode: 0644]
edje/images/style/tw_loading_small_28.png [new file with mode: 0644]
edje/images/style/tw_loading_small_29.png [new file with mode: 0644]
edje/images/style/tw_loading_small_30.png [new file with mode: 0644]
edje/images/style/tw_loading_small_31.png [new file with mode: 0644]
edje/images/style/tw_loading_small_32.png [new file with mode: 0644]
edje/images/style/tw_loading_small_33.png [new file with mode: 0644]
edje/images/style/tw_loading_small_34.png [new file with mode: 0644]
edje/images/style/tw_loading_small_35.png [new file with mode: 0644]
edje/images/style/tw_loading_small_36.png [new file with mode: 0644]
edje/images/style/tw_loading_small_37.png [new file with mode: 0644]
edje/images/style/tw_loading_small_38.png [new file with mode: 0644]
edje/images/style/tw_loading_small_39.png [new file with mode: 0644]
edje/images/style/tw_loading_small_40.png [new file with mode: 0644]
edje/images/style/tw_loading_small_41.png [new file with mode: 0644]
edje/images/style/tw_loading_small_42.png [new file with mode: 0644]
edje/images/style/tw_loading_small_43.png [new file with mode: 0644]
edje/images/style/tw_loading_small_44.png [new file with mode: 0644]
edje/images/style/tw_loading_small_45.png [new file with mode: 0644]
edje/images/style/tw_loading_small_46.png [new file with mode: 0644]
edje/images/style/tw_loading_small_47.png [new file with mode: 0644]
edje/images/style/tw_loading_small_48.png [new file with mode: 0644]
edje/images/style/tw_loading_small_49.png [new file with mode: 0644]
edje/images/style/tw_loading_small_50.png [new file with mode: 0644]
edje/images/style/tw_loading_small_51.png [new file with mode: 0644]
edje/images/style/tw_loading_small_52.png [new file with mode: 0644]
edje/images/style/tw_loading_small_53.png [new file with mode: 0644]
edje/images/style/tw_loading_small_54.png [new file with mode: 0644]
edje/images/style/tw_loading_small_55.png [new file with mode: 0644]
edje/images/style/tw_loading_small_56.png [new file with mode: 0644]
edje/images/style/tw_loading_small_57.png [new file with mode: 0644]
edje/images/style/tw_loading_small_58.png [new file with mode: 0644]
edje/images/style/tw_loading_small_59.png [new file with mode: 0644]
edje/images/style/tw_loading_small_60.png [new file with mode: 0644]
edje/images/style/tw_loading_small_61.png [new file with mode: 0644]
edje/images/style/tw_loading_small_62.png [new file with mode: 0644]
edje/images/style/tw_loading_small_63.png [new file with mode: 0644]
edje/images/style/tw_loading_small_64.png [new file with mode: 0644]
edje/images/tw_bottom_btn_bg.png [new file with mode: 0644]
ise-default.xml
packaging/ise-default.spec
po/en_US.po [changed mode: 0644->0755]
res/edje/w-input-stt-button.edc [new file with mode: 0644]
res/edje/w-input-stt.edc [new file with mode: 0644]
res/images/w_mode_stt_ic.png [new file with mode: 0644]
src/include/ise-stt-engine.h [new file with mode: 0755]
src/include/ise-stt-mode.h [new file with mode: 0644]
src/include/ise-stt-option.h [new file with mode: 0644]
src/ise-stt-engine.cpp [new file with mode: 0644]
src/ise-stt-mode.cpp [new file with mode: 0644]
src/ise-stt-option.cpp [new file with mode: 0644]
src/ise.cpp

index 6db03ef..997aeb9 100644 (file)
@@ -7,6 +7,9 @@ SET(ISE_SRCS
     src/config.cpp
     src/option.cpp
     src/imdata.cpp
+    src/ise-stt-engine.cpp
+    src/ise-stt-mode.cpp
+    src/ise-stt-option.cpp
     src/sdk/ise_lang_table.cpp
     src/sdk/sdk.cpp
     src/sdk/sdk_option.cpp
@@ -49,6 +52,8 @@ pkg_check_modules(ISE_PKGS REQUIRED
         isf
         vconf
         libxml-2.0
+        stt
+        capi-appfw-application
         )
 
 FOREACH(flag ${ISE_PKGS_CFLAGS})
@@ -115,6 +120,23 @@ ADD_CUSTOM_TARGET(
         DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/data/edc/gengrid/layout_keypad.edc)
 ADD_DEPENDENCIES(${PROJECT_NAME} layout_keypad.edj)
 INSTALL(FILES ${CMAKE_BINARY_DIR}/layout_keypad.edj DESTINATION ${ISE_LAYOUTDIR}/sdk/edc)
+
+ADD_CUSTOM_TARGET(w-input-stt.edj COMMAND edje_cc
+        -id ${CMAKE_CURRENT_SOURCE_DIR}/edje/images
+        ${CMAKE_CURRENT_SOURCE_DIR}/res/edje/w-input-stt.edc
+        ${CMAKE_BINARY_DIR}/res/edje/w-input-stt.edj
+        DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/res/edje/w-input-stt.edc)
+ADD_DEPENDENCIES(${PROJECT_NAME} w-input-stt.edj)
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edje/w-input-stt.edj DESTINATION ${ISE_RESDIR}/edje)
+
+ADD_CUSTOM_TARGET(w-input-stt-button.edj COMMAND edje_cc
+        -id ${CMAKE_CURRENT_SOURCE_DIR}/edje/images
+        ${CMAKE_CURRENT_SOURCE_DIR}/res/edje/w-input-stt-button.edc
+        ${CMAKE_BINARY_DIR}/res/edje/w-input-stt-button.edj
+        DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/res/edje/w-input-stt-button.edc)
+ADD_DEPENDENCIES(${PROJECT_NAME} w-input-stt-button.edj)
+INSTALL(FILES ${CMAKE_BINARY_DIR}/res/edje/w-input-stt-button.edj DESTINATION ${ISE_RESDIR}/edje)
+
 # For edc File end
 
 TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${ISE_PKGS_LDFLAGS})
@@ -125,6 +147,9 @@ INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${ISE_BINDIR})
 INSTALL(FILES ${CMAKE_SOURCE_DIR}/${PROJECT_NAME}.xml DESTINATION
         ${TZ_SYS_RO_PACKAGES})
 
+FILE(GLOB_RECURSE ISE_DEFAULT_IMAGES "${CMAKE_CURRENT_SOURCE_DIR}/res/images/*.png")
+INSTALL(FILES ${ISE_DEFAULT_IMAGES} DESTINATION ${ISE_RESDIR}/images)
+
 if(${TARGET} STREQUAL "tv")
 INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/data/pixmaps/default/tv/
         DESTINATION ${ISE_LAYOUTDIR}/tv/image)
diff --git a/edje/images/icon/B13_mic.png b/edje/images/icon/B13_mic.png
new file mode 100644 (file)
index 0000000..eedb538
Binary files /dev/null and b/edje/images/icon/B13_mic.png differ
diff --git a/edje/images/icon/B13_mic_Que.png b/edje/images/icon/B13_mic_Que.png
new file mode 100644 (file)
index 0000000..d73679c
Binary files /dev/null and b/edje/images/icon/B13_mic_Que.png differ
diff --git a/edje/images/icon/standby_mic_icon.png b/edje/images/icon/standby_mic_icon.png
new file mode 100644 (file)
index 0000000..eedb538
Binary files /dev/null and b/edje/images/icon/standby_mic_icon.png differ
diff --git a/edje/images/input_ic_voice_mic.png b/edje/images/input_ic_voice_mic.png
new file mode 100644 (file)
index 0000000..b2869bf
Binary files /dev/null and b/edje/images/input_ic_voice_mic.png differ
diff --git a/edje/images/style/tw_list_sub_btn_round.png b/edje/images/style/tw_list_sub_btn_round.png
new file mode 100644 (file)
index 0000000..9c53f57
Binary files /dev/null and b/edje/images/style/tw_list_sub_btn_round.png differ
diff --git a/edje/images/style/tw_loading_small_00.png b/edje/images/style/tw_loading_small_00.png
new file mode 100644 (file)
index 0000000..b0d25e2
Binary files /dev/null and b/edje/images/style/tw_loading_small_00.png differ
diff --git a/edje/images/style/tw_loading_small_01.png b/edje/images/style/tw_loading_small_01.png
new file mode 100644 (file)
index 0000000..52bcaa5
Binary files /dev/null and b/edje/images/style/tw_loading_small_01.png differ
diff --git a/edje/images/style/tw_loading_small_02.png b/edje/images/style/tw_loading_small_02.png
new file mode 100644 (file)
index 0000000..5077568
Binary files /dev/null and b/edje/images/style/tw_loading_small_02.png differ
diff --git a/edje/images/style/tw_loading_small_03.png b/edje/images/style/tw_loading_small_03.png
new file mode 100644 (file)
index 0000000..3b3b087
Binary files /dev/null and b/edje/images/style/tw_loading_small_03.png differ
diff --git a/edje/images/style/tw_loading_small_04.png b/edje/images/style/tw_loading_small_04.png
new file mode 100644 (file)
index 0000000..2a12143
Binary files /dev/null and b/edje/images/style/tw_loading_small_04.png differ
diff --git a/edje/images/style/tw_loading_small_05.png b/edje/images/style/tw_loading_small_05.png
new file mode 100644 (file)
index 0000000..07a90c4
Binary files /dev/null and b/edje/images/style/tw_loading_small_05.png differ
diff --git a/edje/images/style/tw_loading_small_06.png b/edje/images/style/tw_loading_small_06.png
new file mode 100644 (file)
index 0000000..810af15
Binary files /dev/null and b/edje/images/style/tw_loading_small_06.png differ
diff --git a/edje/images/style/tw_loading_small_07.png b/edje/images/style/tw_loading_small_07.png
new file mode 100644 (file)
index 0000000..f6fb69b
Binary files /dev/null and b/edje/images/style/tw_loading_small_07.png differ
diff --git a/edje/images/style/tw_loading_small_08.png b/edje/images/style/tw_loading_small_08.png
new file mode 100644 (file)
index 0000000..f79375e
Binary files /dev/null and b/edje/images/style/tw_loading_small_08.png differ
diff --git a/edje/images/style/tw_loading_small_09.png b/edje/images/style/tw_loading_small_09.png
new file mode 100644 (file)
index 0000000..ce12908
Binary files /dev/null and b/edje/images/style/tw_loading_small_09.png differ
diff --git a/edje/images/style/tw_loading_small_10.png b/edje/images/style/tw_loading_small_10.png
new file mode 100644 (file)
index 0000000..86c6c8a
Binary files /dev/null and b/edje/images/style/tw_loading_small_10.png differ
diff --git a/edje/images/style/tw_loading_small_11.png b/edje/images/style/tw_loading_small_11.png
new file mode 100644 (file)
index 0000000..ebb0dd1
Binary files /dev/null and b/edje/images/style/tw_loading_small_11.png differ
diff --git a/edje/images/style/tw_loading_small_12.png b/edje/images/style/tw_loading_small_12.png
new file mode 100644 (file)
index 0000000..74952d5
Binary files /dev/null and b/edje/images/style/tw_loading_small_12.png differ
diff --git a/edje/images/style/tw_loading_small_13.png b/edje/images/style/tw_loading_small_13.png
new file mode 100644 (file)
index 0000000..5daf9c2
Binary files /dev/null and b/edje/images/style/tw_loading_small_13.png differ
diff --git a/edje/images/style/tw_loading_small_14.png b/edje/images/style/tw_loading_small_14.png
new file mode 100644 (file)
index 0000000..f04d96d
Binary files /dev/null and b/edje/images/style/tw_loading_small_14.png differ
diff --git a/edje/images/style/tw_loading_small_15.png b/edje/images/style/tw_loading_small_15.png
new file mode 100644 (file)
index 0000000..313ad9c
Binary files /dev/null and b/edje/images/style/tw_loading_small_15.png differ
diff --git a/edje/images/style/tw_loading_small_16.png b/edje/images/style/tw_loading_small_16.png
new file mode 100644 (file)
index 0000000..e18da5b
Binary files /dev/null and b/edje/images/style/tw_loading_small_16.png differ
diff --git a/edje/images/style/tw_loading_small_17.png b/edje/images/style/tw_loading_small_17.png
new file mode 100644 (file)
index 0000000..cc7cf19
Binary files /dev/null and b/edje/images/style/tw_loading_small_17.png differ
diff --git a/edje/images/style/tw_loading_small_18.png b/edje/images/style/tw_loading_small_18.png
new file mode 100644 (file)
index 0000000..3abe74c
Binary files /dev/null and b/edje/images/style/tw_loading_small_18.png differ
diff --git a/edje/images/style/tw_loading_small_19.png b/edje/images/style/tw_loading_small_19.png
new file mode 100644 (file)
index 0000000..b94b6e0
Binary files /dev/null and b/edje/images/style/tw_loading_small_19.png differ
diff --git a/edje/images/style/tw_loading_small_20.png b/edje/images/style/tw_loading_small_20.png
new file mode 100644 (file)
index 0000000..3405721
Binary files /dev/null and b/edje/images/style/tw_loading_small_20.png differ
diff --git a/edje/images/style/tw_loading_small_21.png b/edje/images/style/tw_loading_small_21.png
new file mode 100644 (file)
index 0000000..a229364
Binary files /dev/null and b/edje/images/style/tw_loading_small_21.png differ
diff --git a/edje/images/style/tw_loading_small_22.png b/edje/images/style/tw_loading_small_22.png
new file mode 100644 (file)
index 0000000..00ee4cb
Binary files /dev/null and b/edje/images/style/tw_loading_small_22.png differ
diff --git a/edje/images/style/tw_loading_small_23.png b/edje/images/style/tw_loading_small_23.png
new file mode 100644 (file)
index 0000000..6f054e1
Binary files /dev/null and b/edje/images/style/tw_loading_small_23.png differ
diff --git a/edje/images/style/tw_loading_small_24.png b/edje/images/style/tw_loading_small_24.png
new file mode 100644 (file)
index 0000000..a8c2e7a
Binary files /dev/null and b/edje/images/style/tw_loading_small_24.png differ
diff --git a/edje/images/style/tw_loading_small_25.png b/edje/images/style/tw_loading_small_25.png
new file mode 100644 (file)
index 0000000..e0b7ba0
Binary files /dev/null and b/edje/images/style/tw_loading_small_25.png differ
diff --git a/edje/images/style/tw_loading_small_26.png b/edje/images/style/tw_loading_small_26.png
new file mode 100644 (file)
index 0000000..57a7299
Binary files /dev/null and b/edje/images/style/tw_loading_small_26.png differ
diff --git a/edje/images/style/tw_loading_small_27.png b/edje/images/style/tw_loading_small_27.png
new file mode 100644 (file)
index 0000000..1eaaf7b
Binary files /dev/null and b/edje/images/style/tw_loading_small_27.png differ
diff --git a/edje/images/style/tw_loading_small_28.png b/edje/images/style/tw_loading_small_28.png
new file mode 100644 (file)
index 0000000..f58f867
Binary files /dev/null and b/edje/images/style/tw_loading_small_28.png differ
diff --git a/edje/images/style/tw_loading_small_29.png b/edje/images/style/tw_loading_small_29.png
new file mode 100644 (file)
index 0000000..51340a0
Binary files /dev/null and b/edje/images/style/tw_loading_small_29.png differ
diff --git a/edje/images/style/tw_loading_small_30.png b/edje/images/style/tw_loading_small_30.png
new file mode 100644 (file)
index 0000000..3dc9414
Binary files /dev/null and b/edje/images/style/tw_loading_small_30.png differ
diff --git a/edje/images/style/tw_loading_small_31.png b/edje/images/style/tw_loading_small_31.png
new file mode 100644 (file)
index 0000000..0338677
Binary files /dev/null and b/edje/images/style/tw_loading_small_31.png differ
diff --git a/edje/images/style/tw_loading_small_32.png b/edje/images/style/tw_loading_small_32.png
new file mode 100644 (file)
index 0000000..32dfdb1
Binary files /dev/null and b/edje/images/style/tw_loading_small_32.png differ
diff --git a/edje/images/style/tw_loading_small_33.png b/edje/images/style/tw_loading_small_33.png
new file mode 100644 (file)
index 0000000..c129b87
Binary files /dev/null and b/edje/images/style/tw_loading_small_33.png differ
diff --git a/edje/images/style/tw_loading_small_34.png b/edje/images/style/tw_loading_small_34.png
new file mode 100644 (file)
index 0000000..3fbe76f
Binary files /dev/null and b/edje/images/style/tw_loading_small_34.png differ
diff --git a/edje/images/style/tw_loading_small_35.png b/edje/images/style/tw_loading_small_35.png
new file mode 100644 (file)
index 0000000..d1132f8
Binary files /dev/null and b/edje/images/style/tw_loading_small_35.png differ
diff --git a/edje/images/style/tw_loading_small_36.png b/edje/images/style/tw_loading_small_36.png
new file mode 100644 (file)
index 0000000..44d7f98
Binary files /dev/null and b/edje/images/style/tw_loading_small_36.png differ
diff --git a/edje/images/style/tw_loading_small_37.png b/edje/images/style/tw_loading_small_37.png
new file mode 100644 (file)
index 0000000..6625cfa
Binary files /dev/null and b/edje/images/style/tw_loading_small_37.png differ
diff --git a/edje/images/style/tw_loading_small_38.png b/edje/images/style/tw_loading_small_38.png
new file mode 100644 (file)
index 0000000..6252bd4
Binary files /dev/null and b/edje/images/style/tw_loading_small_38.png differ
diff --git a/edje/images/style/tw_loading_small_39.png b/edje/images/style/tw_loading_small_39.png
new file mode 100644 (file)
index 0000000..fc37da8
Binary files /dev/null and b/edje/images/style/tw_loading_small_39.png differ
diff --git a/edje/images/style/tw_loading_small_40.png b/edje/images/style/tw_loading_small_40.png
new file mode 100644 (file)
index 0000000..5cf9739
Binary files /dev/null and b/edje/images/style/tw_loading_small_40.png differ
diff --git a/edje/images/style/tw_loading_small_41.png b/edje/images/style/tw_loading_small_41.png
new file mode 100644 (file)
index 0000000..0140159
Binary files /dev/null and b/edje/images/style/tw_loading_small_41.png differ
diff --git a/edje/images/style/tw_loading_small_42.png b/edje/images/style/tw_loading_small_42.png
new file mode 100644 (file)
index 0000000..251bb71
Binary files /dev/null and b/edje/images/style/tw_loading_small_42.png differ
diff --git a/edje/images/style/tw_loading_small_43.png b/edje/images/style/tw_loading_small_43.png
new file mode 100644 (file)
index 0000000..cd21efc
Binary files /dev/null and b/edje/images/style/tw_loading_small_43.png differ
diff --git a/edje/images/style/tw_loading_small_44.png b/edje/images/style/tw_loading_small_44.png
new file mode 100644 (file)
index 0000000..532e010
Binary files /dev/null and b/edje/images/style/tw_loading_small_44.png differ
diff --git a/edje/images/style/tw_loading_small_45.png b/edje/images/style/tw_loading_small_45.png
new file mode 100644 (file)
index 0000000..b16702b
Binary files /dev/null and b/edje/images/style/tw_loading_small_45.png differ
diff --git a/edje/images/style/tw_loading_small_46.png b/edje/images/style/tw_loading_small_46.png
new file mode 100644 (file)
index 0000000..ced25a7
Binary files /dev/null and b/edje/images/style/tw_loading_small_46.png differ
diff --git a/edje/images/style/tw_loading_small_47.png b/edje/images/style/tw_loading_small_47.png
new file mode 100644 (file)
index 0000000..2fb1f50
Binary files /dev/null and b/edje/images/style/tw_loading_small_47.png differ
diff --git a/edje/images/style/tw_loading_small_48.png b/edje/images/style/tw_loading_small_48.png
new file mode 100644 (file)
index 0000000..b867102
Binary files /dev/null and b/edje/images/style/tw_loading_small_48.png differ
diff --git a/edje/images/style/tw_loading_small_49.png b/edje/images/style/tw_loading_small_49.png
new file mode 100644 (file)
index 0000000..28993f6
Binary files /dev/null and b/edje/images/style/tw_loading_small_49.png differ
diff --git a/edje/images/style/tw_loading_small_50.png b/edje/images/style/tw_loading_small_50.png
new file mode 100644 (file)
index 0000000..2fd13fe
Binary files /dev/null and b/edje/images/style/tw_loading_small_50.png differ
diff --git a/edje/images/style/tw_loading_small_51.png b/edje/images/style/tw_loading_small_51.png
new file mode 100644 (file)
index 0000000..88eca9b
Binary files /dev/null and b/edje/images/style/tw_loading_small_51.png differ
diff --git a/edje/images/style/tw_loading_small_52.png b/edje/images/style/tw_loading_small_52.png
new file mode 100644 (file)
index 0000000..7e6440a
Binary files /dev/null and b/edje/images/style/tw_loading_small_52.png differ
diff --git a/edje/images/style/tw_loading_small_53.png b/edje/images/style/tw_loading_small_53.png
new file mode 100644 (file)
index 0000000..2cc22cd
Binary files /dev/null and b/edje/images/style/tw_loading_small_53.png differ
diff --git a/edje/images/style/tw_loading_small_54.png b/edje/images/style/tw_loading_small_54.png
new file mode 100644 (file)
index 0000000..cba627b
Binary files /dev/null and b/edje/images/style/tw_loading_small_54.png differ
diff --git a/edje/images/style/tw_loading_small_55.png b/edje/images/style/tw_loading_small_55.png
new file mode 100644 (file)
index 0000000..f97fd69
Binary files /dev/null and b/edje/images/style/tw_loading_small_55.png differ
diff --git a/edje/images/style/tw_loading_small_56.png b/edje/images/style/tw_loading_small_56.png
new file mode 100644 (file)
index 0000000..48f2b39
Binary files /dev/null and b/edje/images/style/tw_loading_small_56.png differ
diff --git a/edje/images/style/tw_loading_small_57.png b/edje/images/style/tw_loading_small_57.png
new file mode 100644 (file)
index 0000000..6fa98f6
Binary files /dev/null and b/edje/images/style/tw_loading_small_57.png differ
diff --git a/edje/images/style/tw_loading_small_58.png b/edje/images/style/tw_loading_small_58.png
new file mode 100644 (file)
index 0000000..409121c
Binary files /dev/null and b/edje/images/style/tw_loading_small_58.png differ
diff --git a/edje/images/style/tw_loading_small_59.png b/edje/images/style/tw_loading_small_59.png
new file mode 100644 (file)
index 0000000..b09a5aa
Binary files /dev/null and b/edje/images/style/tw_loading_small_59.png differ
diff --git a/edje/images/style/tw_loading_small_60.png b/edje/images/style/tw_loading_small_60.png
new file mode 100644 (file)
index 0000000..cb56a1f
Binary files /dev/null and b/edje/images/style/tw_loading_small_60.png differ
diff --git a/edje/images/style/tw_loading_small_61.png b/edje/images/style/tw_loading_small_61.png
new file mode 100644 (file)
index 0000000..8f11a06
Binary files /dev/null and b/edje/images/style/tw_loading_small_61.png differ
diff --git a/edje/images/style/tw_loading_small_62.png b/edje/images/style/tw_loading_small_62.png
new file mode 100644 (file)
index 0000000..a00b0de
Binary files /dev/null and b/edje/images/style/tw_loading_small_62.png differ
diff --git a/edje/images/style/tw_loading_small_63.png b/edje/images/style/tw_loading_small_63.png
new file mode 100644 (file)
index 0000000..e57c19a
Binary files /dev/null and b/edje/images/style/tw_loading_small_63.png differ
diff --git a/edje/images/style/tw_loading_small_64.png b/edje/images/style/tw_loading_small_64.png
new file mode 100644 (file)
index 0000000..b9643ce
Binary files /dev/null and b/edje/images/style/tw_loading_small_64.png differ
diff --git a/edje/images/tw_bottom_btn_bg.png b/edje/images/tw_bottom_btn_bg.png
new file mode 100644 (file)
index 0000000..c5bf4ca
Binary files /dev/null and b/edje/images/tw_bottom_btn_bg.png differ
index bad880b..08d59ac 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns="http://tizen.org/ns/packages" api-version="2.3" package="ise-default" version="1.2.70" install-location="internal-only">
+<manifest xmlns="http://tizen.org/ns/packages" api-version="3.0" package="ise-default" version="1.2.70" install-location="internal-only">
 <author/>
 <description/>
 <label>Tizen keyboard</label>
@@ -91,6 +91,7 @@
 </ui-application>
 <privileges>
     <privilege>http://tizen.org/privilege/ime</privilege>
+    <privilege>http://tizen.org/privilege/recorder</privilege>
     <privilege>http://tizen.org/privilege/haptic</privilege>
 </privileges>
 </manifest>
index 2abd53a..3db0ed9 100644 (file)
@@ -20,6 +20,8 @@ BuildRequires:  pkgconfig(ecore-imf)
 BuildRequires:  pkgconfig(libxml-2.0)
 BuildRequires:  pkgconfig(efl-extension)
 BuildRequires:  pkgconfig(libtzplatform-config)
+BuildRequires:  pkgconfig(stt)
+BuildRequires:  pkgconfig(capi-appfw-application)
 BuildRequires:  model-build-features
 
 
old mode 100644 (file)
new mode 100755 (executable)
index cf31d58..30363d0
@@ -100,3 +100,8 @@ msgstr "Keypad settings will be reset. Continue?"
 msgid "IDS_IME_HEADER_SMART_TYPING_ABB"
 msgstr "Smart typing"
 
+msgid "IDS_VOICE_OPT_LANGUAGE_ABB"
+msgstr "Language"
+
+msgid "IDS_VC_BODY_AUTOMATIC"
+msgstr "Automatic"
\ No newline at end of file
diff --git a/res/edje/w-input-stt-button.edc b/res/edje/w-input-stt-button.edc
new file mode 100644 (file)
index 0000000..c8865f4
--- /dev/null
@@ -0,0 +1,288 @@
+/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+#define NORMAL_BG_IMAGE                                                 "B09_voice_input_panel.png"
+
+#define PROGRESSING_DELAY 0.03
+#define PROGRESS_BG_DESC1( param_name, param_num )                                                             \
+description                                                                                                                                       \
+{                                                                                                                                                               \
+       state, "pulse" 0.#param_num;                                                                                              \
+       inherit, "default" 0.0;                                                                                                    \
+       image.normal, "B09_"#param_name"_"#param_num".png";                                                \
+}
+
+#define LISTEN_BG_DESC( param_name, param_num )                                                                   \
+description                                                                                                                                       \
+{                                                                                                                                                               \
+       state, "wave" 0.#param_num;                                                                                                \
+       inherit, "default" 0.0;                                                                                                    \
+       image.normal, "B09_"#param_name"_"#param_num".png";                                                \
+}
+
+#define BUTTON_CIRCLE_STYLE_BG_MIN_MAX_INC 112 112
+#define BUTTON_CIRCLE_STYLE_IMAGE_MIN_MAX_INC 45 45
+#define BUTTON_CIRCLE_STYLE_CONTENT_MIN_MAX_INC 45 45
+#define BUTTON_CIRCLE_STYLE_LEFT_PADDING_MIN_MAX_INC 13 13
+#define BUTTON_CIRCLE_STYLE_RIGHT_PADDING_MIN_MAX_INC 14 14
+
+#define BUTTON_CIRCLE_STYLE_NORMAL_TOP_OFFSET_INC 0 2
+#define BUTTON_CIRCLE_STYLE_NORMAL_BOTTOM_OFFSET_INC -1 1
+#define BUTTON_CIRCLE_STYLE_PRESSED_TOP_OFFSET_INC 0 -2
+#define BUTTON_CIRCLE_STYLE_PRESSED_BOTTOM_OFFSET_INC -1 -3
+
+#define BUTTON_CIRCLE_STYLE_CLIPPER_DEFAULT_COLOR_INC 0 0 0 255
+#define BUTTON_CIRCLE_STYLE_ICON_CLIPPER_PRESSED_COLOR_INC 0 0 0 255
+#define BUTTON_CIRCLE_STYLE_ICON_CLIPPER_DISABLED_COLOR_INC 21 22 25 255
+
+#define BUTTON_CIRCLE_STYLE_NORMAL_COLOR_INC 250 250 250 255
+#define BUTTON_CIRCLE_STYLE_PRESSED_COLOR_INC 250 250 250 255
+#define BUTTON_CIRCLE_STYLE_DISABLED_COLOR_INC 166 167 169 255
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+
+
+//============================================================================
+//============================================================================
+
+/**
+ * Resources
+ *
+ */
+
+/**
+ * Macro
+ *
+ */
+#define BTN_IMAGE()                                                                                                              \
+part                                                                                                                                            \
+{                                                                                                                                                      \
+       name, "button_image";                                                                                                   \
+       mouse_events, 1;                                                                                                                 \
+       scale, 1;                                                                                                                               \
+       description                                                                                                                       \
+       {                                                                                                                                               \
+               state, "default" 0.0;                                                                                           \
+       }                                                                                                                                               \
+       description                                                                                                                       \
+       {                                                                                                                                               \
+               state, "clicked" 0.0;                                                                                           \
+               inherit, "default" 0.0;                                                                                   \
+       }                                                                                                                                               \
+       description                                                                                                                       \
+       {                                                                                                                                               \
+               state, "disabled" 0.0;                                                                                     \
+               inherit, "default" 0.0;                                                                                   \
+               visible, 1;                                                                                                               \
+       }                                                                                                                                               \
+       description                                                                                                                       \
+       {                                                                                                                                               \
+               state, "focused" 0.0;                                                                                           \
+               inherit, "default" 0.0;                                                                                   \
+       }                                                                                                                                               \
+}
+
+#define OVER()                                                                                                                    \
+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;                                                                                                   \
+       }                                                                                                                                               \
+       description                                                                                                                       \
+       {                                                                                                                                               \
+               state, "disabled" 0.0;                                                                                     \
+               inherit,  "default" 0.0;                                                                                         \
+               visible, 0;                                                                                                               \
+       }                                                                                                                                               \
+}                                                                                                                                                      \
+part                                                                                                                                            \
+{                                                                                                                                                      \
+       name, "over3";                                                                                                             \
+       type, RECT;                                                                                                                       \
+       mouse_events, 1;                                                                                                                 \
+       repeat_events, 1;                                                                                                               \
+       description                                                                                                                       \
+       {                                                                                                                                               \
+               state, "default" 0.0;                                                                                           \
+               color, 0 0 0 0;                                                                                                   \
+       }                                                                                                                                               \
+       description                                                                                                                       \
+       {                                                                                                                                               \
+               state, "clicked" 0.0;                                                                                           \
+               inherit,  "default" 0.0;                                                                                         \
+               visible, 1;                                                                                                               \
+       }                                                                                                                                               \
+}
+
+#define DISABLER()                                                                                                                \
+part                                                                                                                                            \
+{                                                                                                                                                      \
+       name, "disabler";                                                                                                               \
+       type, RECT;                                                                                                                       \
+       description                                                                                                                       \
+       {                                                                                                                                               \
+               state, "default" 0.0;                                                                                           \
+               color, 255 255 255 0;                                                                                           \
+               visible, 0;                                                                                                               \
+       }                                                                                                                                               \
+       description                                                                                                                       \
+       {                                                                                                                                               \
+               state, "disabled" 0.0;                                                                                     \
+               inherit, "default" 0.0;                                                                                   \
+               visible, 1;                                                                                                               \
+       }                                                                                                                                               \
+}
+
+#define PROG_FOCUS                                                                                                                \
+program                                                                                                                                          \
+{                                                                                                                                                      \
+       name, "focused";                                                                                                                 \
+       signal, "elm,action,focus";                                                                                       \
+       source, "elm";                                                                                                             \
+       action, STATE_SET "focused" 0.0;                                                                                 \
+       target, "button_image";                                                                                           \
+}                                                                                                                                                      \
+program                                                                                                                                          \
+{                                                                                                                                                      \
+       name, "unfocused";                                                                                                         \
+       signal, "elm,action,unfocus";                                                                                   \
+       source, "elm";                                                                                                             \
+       action, STATE_SET "default" 0.0;                                                                                 \
+       target, "button_image";                                                                                           \
+}
+
+#define PROG_ENABLE                                                                                                              \
+program                                                                                                                                          \
+{                                                                                                                                                      \
+       name: "disable";                                                                                                                 \
+       signal: "elm,state,disabled";                                                                                   \
+       source: "elm";                                                                                                             \
+       action: STATE_SET "disabled" 0.0;                                                                               \
+       target: "button_image";                                                                                           \
+       target: "over2";                                                                                                                 \
+       target: "disabler";                                                                                                       \
+}                                                                                                                                                      \
+program                                                                                                                                          \
+{                                                                                                                                                      \
+       name: "enable";                                                                                                           \
+       signal: "elm,state,enabled";                                                                                     \
+       source: "elm";                                                                                                             \
+       action: STATE_SET "default" 0.0;                                                                                 \
+       target: "button_image";                                                                                           \
+       target: "over2";                                                                                                                 \
+       target: "disabler";                                                                                                       \
+}
+
+#define PROG_CLICK                                                                                                                \
+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";                                                                                           \
+}                                                                                                                                                      \
+program                                                                                                                                          \
+{                                                                                                                                                      \
+       name: "button_unclick";                                                                                           \
+       signal: "mouse,up,1";                                                                                                   \
+       source: "over2";                                                                                                                 \
+       action: SIGNAL_EMIT "elm,action,unpress" "";                                                     \
+       after: "button_unclick_anim";                                                                                   \
+}                                                                                                                                                      \
+program                                                                                                                                          \
+{                                                                                                                                                      \
+       name: "button_unclick_anim";                                                                                     \
+       action: STATE_SET "default" 0.0;                                                                                 \
+       target: "button_image";                                                                                           \
+}                                                                                                                                                      \
+program                                                                                                                                          \
+{                                                                                                                                                      \
+       name: "button_mouseout_clicked";                                                                                 \
+       signal: "mouse,out";                                                                                                     \
+       source: "over2";                                                                                                                 \
+       script                                                                                                                             \
+       {                                                                                                                                               \
+               new st[31];                                                                                                               \
+               new Float:vl;                                                                                                           \
+               get_state(PART:"button_image", st, 30, vl);                                               \
+               if (!strcmp(st, "clicked"))                                                                               \
+               {                                                                                                                                       \
+                       set_state(PART:"button_image", "visible", 0.0);                           \
+               }                                                                                                                                       \
+       }                                                                                                                                               \
+}                                                                                                                                                      \
+program                                                                                                                                          \
+{                                                                                                                                                      \
+       name: "button_click2";                                                                                             \
+       signal: "mouse,down,1";                                                                                           \
+       source: "over3";                                                                                                                 \
+       action: STATE_SET "clicked" 0.0;                                                                                 \
+       target: "over3";                                                                                                                 \
+       action: SIGNAL_EMIT "elm,action,click" "";                                                         \
+}                                                                                                                                                      \
+program                                                                                                                                          \
+{                                                                                                                                                      \
+       name: "button_unclick2";                                                                                                 \
+       signal: "mouse,up,1";                                                                                                   \
+       source: "over3";                                                                                                                 \
+       action: STATE_SET "default" 0.0;                                                                                 \
+       target: "over3";                                                                                                                 \
+}                                                                                                                                                      \
+program                                                                                                                                          \
+{                                                                                                                                                      \
+       name: "button_unclick3";                                                                                                 \
+       signal: "mouse,up,1";                                                                                                   \
+       source: "over2";                                                                                                                 \
+}
+
+#define VIC_BUTTON()                                                                                                            \
+group                                                                                                                                          \
+{                                                                                                                                                      \
+       name, "elm/button/base/vic/micbutton";                                                             \
+       parts                                                                                                                                   \
+       {                                                                                                                                               \
+               BTN_IMAGE()                                                                                                               \
+               OVER()                                                                                                                     \
+               DISABLER()                                                                                                                 \
+       }                                                                                                                                               \
+       programs                                                                                                                                 \
+       {                                                                                                                                               \
+               PROG_CLICK                                                                                                                 \
+               PROG_ENABLE                                                                                                               \
+               PROG_FOCUS                                                                                                                 \
+       }                                                                                                                                               \
+}
+
+collections
+{
+       VIC_BUTTON()
+}
diff --git a/res/edje/w-input-stt.edc b/res/edje/w-input-stt.edc
new file mode 100644 (file)
index 0000000..70488e2
--- /dev/null
@@ -0,0 +1,2035 @@
+#include "w-input-stt-button.edc"
+
+#define VOICE_CANDIDATE_AREA_HEIGHT 56
+
+collections
+{
+       base_scale: 1.3;
+
+       plugins {
+          plugin {
+                 name: "touch_sound";
+                 source: "feedback";
+                 param: "FEEDBACK_TYPE_SOUND FEEDBACK_PATTERN_TAP";
+                 /* 2014.06.11 updated from libsvi(feedback)
+                  Above plugin will run below external function:
+                  int feedback_play_type(feedback_type_e type, feedback_pattern_e pattern);
+
+                  param1: feedback_type_e
+                  FEEDBACK_TYPE_NONE = 0,
+                  FEEDBACK_TYPE_SOUND = 1,
+                  FEEDBACK_TYPE_VIBRATION,
+                  FEEDBACK_TYPE_LED,
+                  FEEDBACK_TYPE_END
+
+                  * param2 enumeration:
+                  FEEDBACK_PATTERN_TAP = 0,
+                  FEEDBACK_PATTERN_SIP,
+                  FEEDBACK_PATTERN_SIP_BACKSPACE,
+                  FEEDBACK_PATTERN_SIP_FUNCTION,
+                  FEEDBACK_PATTERN_SIP_FJKEY,
+                  ...
+                  */
+          }
+          plugin {
+                 name: "haptic_tap";
+                 source: "feedback";
+                 param: "FEEDBACK_TYPE_VIBRATION FEEDBACK_PATTERN_TAP";
+          }
+       }
+
+       images {
+               // MIC
+               image, "./bg/B13_mic_bg.png" COMP;
+               image, "./icon/B13_mic.png" COMP;
+               image, "./icon/B13_mic_Que.png" COMP;
+               image, "./icon/B13_mic_Que_01.png" COMP;
+               image, "./icon/B13_mic_procecessing_bg.png" COMP;
+               image, "./text_downdrop.#.png" COMP;
+               image, "./text_downdrop_press.#.png" COMP;
+
+               image, "./input_ic_voice_mic.png" COMP;
+               image, "./w_sip_mask_bg.png" COMP;
+               image, "./tw_bottom_btn_bg.png" COMP;
+
+               image, "./w_mode_ic_bg.png" COMP;
+
+               image, "./b_stt_text_fade_out.png" COMP;
+               image, "./b_stt_icon_btn.png" COMP;
+               image, "./b_stt_confirm_icon.png" COMP;
+               image, "./b_stt_send_icon.png" COMP;
+       }
+
+       color_classes
+       {
+          color_class
+          {
+             name: "AO013";
+             color: 68 71 77 100;
+          }
+          color_class
+          {
+             name: "AO014";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AO014P";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AO014D";
+             color: 0 0 0 35;
+          }
+          color_class
+          {
+             name: "AO015L1";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AO015L1P";
+             color: 0 0 0 50;
+          }
+          color_class
+          {
+             name: "AO015L1D";
+             color: 0 0 0 40;
+          }
+          color_class
+          {
+             name: "AO0151";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AO0151P";
+             color: 0 0 0 50;
+          }
+          color_class
+          {
+             name: "AO0151D";
+             color: 0 0 0 20;
+          }
+          color_class
+          {
+             name: "AO0152";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AO015L2";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AO015L2P";
+             color: 0 0 0 50;
+          }
+          color_class
+          {
+             name: "AO015L2D";
+             color: 0 0 0 40;
+          }
+          color_class
+          {
+             name: "AO015L3";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AO01151";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AO01153L1";
+             color: 163 163 163 100;
+          }
+          color_class
+          {
+             name: "AO01153L1P";
+             color: 61 61 61 100;
+          }
+          color_class
+          {
+             name: "AO01153L1D";
+             color: 163 163 163 100;
+          }
+          color_class
+          {
+             name: "AO01154L1";
+             color: 110 110 110 100;
+          }
+          color_class
+          {
+             name: "AO01154L1P";
+             color: 41 41 41 100;
+          }
+          color_class
+          {
+             name: "AO01154L1D";
+             color: 110 110 110 100;
+          }
+          color_class
+          {
+             name: "AO01155L1";
+             color: 122 122 122 100;
+          }
+          color_class
+          {
+             name: "AO01155L1P";
+             color: 33 33 33 100;
+          }
+          color_class
+          {
+             name: "AO01155L1D";
+             color: 122 122 122 100;
+          }
+          color_class
+          {
+             name: "AO01153L2";
+             color: 18 18 18 30;
+          }
+          color_class
+          {
+             name: "AO01153L3";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AO01153L3P";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AO01153L3D";
+             color: 0 0 0 40;
+          }
+          color_class
+          {
+             name: "AO0116";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AO0116P";
+             color: 0 0 0 50;
+          }
+          color_class
+          {
+             name: "AO0116D";
+             color: 0 0 0 30;
+          }
+          color_class
+          {
+             name: "AO01161";
+             color: 64 64 64 100;
+          }
+          color_class
+          {
+             name: "AO01161P";
+             color: 38 38 38 100;
+          }
+          color_class
+          {
+             name: "AO01161D";
+             color: 26 26 26 100;
+          }
+          color_class
+          {
+             name: "AO0117";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AO0118";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AO0119";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AO0119P";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AO0119D";
+             color: 0 0 0 5;
+          }
+          color_class
+          {
+             name: "AO031";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AO031P";
+             color: 0 0 0 40;
+          }
+          color_class
+          {
+             name: "AO031L1";
+             color: 0 0 0 41;
+          }
+          color_class
+          {
+             name: "AO031L1P";
+             color: 0 0 0 70;
+          }
+          color_class
+          {
+             name: "AO0331";
+             color: 0 0 0 50;
+          }
+          color_class
+          {
+             name: "AO0332";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AO034";
+             color: 102 102 102 100;
+          }
+          color_class
+          {
+             name: "AO034P";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AO034D";
+             color: 0 0 0 30;
+          }
+          color_class
+          {
+             name: "AO035";
+             color: 5 5 5 100;
+          }
+          color_class
+          {
+             name: "AO0351";
+             color: 0 0 0 15;
+          }
+          color_class
+          {
+             name: "AO036";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AO0361";
+             color: 0 0 0 50;
+          }
+          color_class
+          {
+             name: "AO037";
+             color: 10 10 10 100;
+          }
+          color_class
+          {
+             name: "AO037P";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AO037S";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AO038";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AO038P";
+             color: 0 0 0 50;
+          }
+          color_class
+          {
+             name: "AO038D";
+             color: 0 0 0 40;
+          }
+          color_class
+          {
+             name: "AT0113";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AT0113P";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AT0113D";
+             color: 0 0 0 70;
+          }
+          color_class
+          {
+             name: "AT0113S";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AT0114";
+#            color: 0 0 0 100;
+           color: 128 128 128 100;
+          }
+          color_class
+          {
+             name: "AT0114D";
+             color: 0 0 0 5;
+          }
+          color_class
+          {
+             name: "AT02111";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AT02112";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AT02113";
+             color: 10 10 10 100;
+          }
+          color_class
+          {
+             name: "AT021";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AT022";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AT023";
+             color: 0 0 0 100;
+          }
+          color_class
+          {
+             name: "AT023P";
+             color: 0 0 0 50;
+          }
+          color_class
+          {
+             name: "AT023D";
+             color: 0 0 0 40;
+          }
+       }
+
+       styles
+       {
+          style { name, "textblock_style";
+             base, "font=Tizen:style=Regular font_size=36 align=center color=#FFFFFF  text_class=text_class wrap=word ellipsis=1.0";
+                 tag,  "br" "\n";
+                 tag,  "ps" "ps";
+                 tag,  "hilight" "+ font=Tizen:style=Bold";
+                 tag,  "b" "+ font=Tizen:style=Bold";
+                 tag,  "tab" "\t";
+          }
+          style { name, "textblock_style_bottom";
+             base, "font=Tizen:style=Regular font_size=36 align=center color=#FFFFFF  text_class=text_class wrap=word ellipsis=1.0";
+                 tag,  "br" "\n";
+                 tag,  "ps" "ps";
+                 tag,  "hilight" "+ font=Tizen:style=Bold";
+                 tag,  "b" "+ font=Tizen:style=Bold";
+                 tag,  "tab" "\t";
+          }
+       }
+
+       group
+       {
+               name, "mic_control";
+               parts
+               {
+                       part
+                       {
+                               name, "bg";
+                               type, RECT;
+                               scale, 1;
+                               description
+                               {
+                                       state, "default" 0.0;
+                                       rel1
+                                       {
+                                               relative, 0.0 0.0;
+                                       }
+                                       rel2
+                                       {
+                                               relative, 1.0 1.0;
+                                       }
+                                       visible: 1;
+                                       color_class, "AO0118";
+                               }
+                       }
+                       part
+                       {
+                               name, "top_block";
+                               type, SPACER;
+                               scale, 1;
+                               description
+                               {
+                                       state, "default" 0.0;
+                                       min, 360 (360-103);
+                                       align, 0.5 0;
+                                       rel1
+                                       {
+                                               relative, 0.0 0.0;
+                                               to, "bg";
+                                       }
+                                       rel2
+                                       {
+                                               relative, 1.0 0.0;
+                                               to, "bg";
+                                       }
+                               }
+                       }
+
+                       part
+                       {
+                               name, "text_area";
+                               type, SWALLOW;
+                               description
+                               {
+                                       state, "default" 0.0;
+                                       align, 0.5 1;
+                                       min, 282 (360-103);
+                                       max, 282 (360-103);
+
+                                       rel1
+                                       {
+                                               relative, 39/360 1;
+                                               to, "top_block";
+                                               offset, 0 -1;
+                                       }
+                                       rel2
+                                       {
+                                               relative, 321/360 1;
+                                               to, "top_block";
+                                               offset, 0 -1;
+                                       }
+                               }
+                       }
+                       part
+                       {
+                               name, "left_panel_area";
+                               type, SWALLOW;
+                               description
+                               {
+                                       state, "default" 0.0;
+                                       align, 0.5 0.5;
+                                       rel1
+                                       {
+                                               relative, 0.0 0.0;
+                                               to, "bg";
+                                       }
+                                       rel2
+                                       {
+                                               relative, 1.0 1.0;
+                                               to, "bg";
+                                       }
+                               }
+                       }
+
+
+                       part
+                       {
+                               name, "background";
+                               type, IMAGE;
+                               scale, 1;
+                               description
+                               {
+                                       state, "default" 0.0;
+                                       min, 360 100;
+                                       max, 360 100;
+                                       rel1
+                                       {
+                                               relative, 0 260/360;
+                                               to, "bg";
+                                       }
+                                       rel2
+                                       {
+                                               relative, 1 1;
+                                               to, "bg";
+                                       }
+                                       image.normal, "./tw_bottom_btn_bg.png";
+                                       color: 128 128 128 128;
+                               }
+                               description
+                               {
+                                       state, "pressed" 0.0;
+                                       inherit, "default" 0.0;
+                                       color: 128 128 128 128;
+                               }
+                               description
+                               {
+                                       state, "dim" 0.0;
+                                       inherit, "default" 0.0;
+                                       color: 128 128 128 128;
+                               }
+                       }
+
+                       part
+                       {
+                               name, "EFFECT_BG_AREA";
+                               type, SPACER;
+                               description
+                               {
+                                       state, "default" 0.0;
+                                       min, 0 74;
+                                       max, 9999 74;
+                                       align, 0.5 1;
+                                       rel1
+                                       {
+                                               relative, 0 1;
+                                               to, "bg";
+                                               offset, 0 -14;
+                                       }
+                                       rel2
+                                       {
+                                               relative, 1 1;
+                                               to, "bg";
+                                               offset, 0 -14;
+                                       }
+                               }
+                       }
+                       part
+                       {
+                               name, "EFFECT_BG";
+                               type, SWALLOW;
+                               description
+                               {
+                                       state, "default" 0.0;
+                                       visible, 0;
+                                       rel1
+                                       {
+                                               relative, 0 0;
+                                               to, "EFFECT_BG_AREA";
+                                       }
+                                       rel2
+                                       {
+                                               relative, 1 1;
+                                               to, "EFFECT_BG_AREA";
+                                       }
+                               }
+                               description
+                               {
+                                       state, "default" 0.1;
+                                       inherit, "default" 0.0;
+                                       visible, 1;
+                               }
+                       }
+
+
+                       part
+                       {
+                               name, "MIC_ICON";
+                               type, IMAGE;
+                               scale, 1;
+                               description
+                               {
+                                       state, "default" 0.0;
+                                       min, 50 50;
+                                       max, 50 50;
+                                       rel1
+                                       {
+                                               relative, 155/360 26/100;
+                                               to, "background";
+                                       }
+                                       rel2
+                                       {
+                                               relative, 205/360 76/100;
+                                               to, "background";
+                                       }
+                                       image.normal, "./input_ic_voice_mic.png";
+                               }
+                               description
+                               {
+                                       state, "recording" 0.0;
+                                       inherit, "default" 0.0;
+                                       visible, 0;
+                               }
+                               description
+                               {
+                                       state, "processing" 0.0;
+                                       inherit, "default" 0.0;
+                                       visible, 0;
+                               }
+                               description
+                               {
+                                       state, "message" 0.0;
+                                       inherit, "default" 0.0;
+                                       rel1
+                                       {
+                                               relative, 155/360 41/100;
+                                               to, "background";
+                                       }
+                                       rel2
+                                       {
+                                               relative, 205/360 91/100;
+                                               to, "background";
+                                       }
+                                       visible, 1;
+                               }
+                       }
+
+
+
+                       //Part for mic button
+                       part
+                       {
+                               name, "MIC";
+                               type, SWALLOW;
+                               scale, 1;
+                               description
+                               {
+                                       state, "default" 0.0;
+                                       visible, 1;
+                                       min, 290 100;
+                                       max, 290 100;
+                                       rel1
+                                       {
+                                               relative, 35/360 0.0;
+                                               to, "background";
+                                       }
+                                       rel2
+                                       {
+                                               relative, 325/360 1.0;
+                                               to, "background";
+                                       }
+                               }
+                       }
+                       part
+                       {
+                               name, "PROGRESS_BAR";
+                               type, SWALLOW;
+                               scale, 1;
+                               description
+                               {
+                                       state, "default" 0.0;
+                                       min, 50 50;
+                                       max, 50 50;
+                                       visible, 0;
+                                       rel1
+                                       {
+                                               relative, 155/360 27/100;
+                                               to, "background";
+                                       }
+                                       rel2
+                                       {
+                                               relative, 205/360 77/100;
+                                               to, "background";
+                                       }
+                               }
+                               description
+                               {
+                                       state, "message" 0.0;
+                                       inherit, "default" 0.0;
+                               }
+                               description
+                               {
+                                       state, "processing" 0.0;
+                                       inherit, "default" 0.0;
+                                       visible, 1;
+                               }
+                       }
+
+                       part
+                       {
+                               name, "guide_text_block";
+                               type, SPACER;
+                               description
+                               {
+                                       state, "default" 0.0;
+                                       align, 0.5 0;
+                                       rel1
+                                       {
+                                               relative, 39/360 140/360;
+                                               to, "bg";
+                                       }
+                                       rel2
+                                       {
+                                               relative, (360-39)/360 (140+42)/360;
+                                               to, "bg";
+                                       }
+                               }
+                               description
+                               {
+                                       state, "bottom" 0.0;
+                                       align, 0.5 0;
+                                       rel1
+                                       {
+                                               relative, 74/360 (360-91)/360;
+                                               to, "bg";
+                                       }
+                                       rel2
+                                       {
+                                               relative, (360-74)/360 (360-57)/360;
+                                               to, "bg";
+                                       }
+                               }
+                       }
+
+                       part
+                       {
+                               name, "elm.text";
+                               type, TEXTBLOCK;
+                               mouse_events, 0;
+                               scale, 1;
+                               description
+                               {
+                                       state, "default" 0.0;
+                                       visible, 1;
+                                       align, 0.5 0.6;
+                                       rel1.to, "guide_text_block";
+                                       rel2.to, "guide_text_block";
+                                       text
+                                       {
+                                               fit: 1 1;
+                                               style, "textblock_style";
+                                       }
+                                       color, 120 120 120 120;
+                               }
+                               description
+                               {
+                                       state, "bottom" 0.0;
+                                       inherit, "default" 0.0;
+                                       text
+                                       {
+                                               fit: 1 1;
+                                               style, "textblock_style_bottom";
+                                       }
+                                       color, 120 120 120 120;
+                               }
+                       }
+               }
+
+               programs
+               {
+                       program
+                       {
+                               name,   "initial_view";
+                               signal, "mouse,clicked,1";
+                               source, "background";
+                               in,     0 0.3;
+                               after,  "emit_signal1";
+                       }
+
+                       program
+                       {
+                               name,   "emit_signal1";
+                               action, SIGNAL_EMIT "idle,state,pulse,visible" "";
+                       }
+
+                       program
+                       {
+                               name,   "listening";
+                               signal, "elm,state,listening";
+                               source, "elm";
+                               action, STATE_SET "recording" 0.0;
+                               target, "MIC_ICON";
+                       }
+
+                       program
+                       {
+                               name,   "start_processing";
+                               signal, "elm,state,processing";
+                               source, "elm";
+                               action, STATE_SET "processing" 0.0;
+                               target, "PROGRESS_BAR";
+                               target, "MIC_ICON";
+                               transition, DECELERATE 0.3;
+                       }
+
+                       program
+                       {
+                               name,   "idle";
+                               signal, "elm,state,init";
+                               source, "elm";
+                               action, STATE_SET "default" 0.0;
+                               target, "PROGRESS_BAR";
+                               target, "MIC_ICON";
+                               transition, DECELERATE 0.3;
+                       }
+                       program
+                       {
+                               name, "idle_message";
+                               signal, "elm,state,init_message";
+                               source, "elm";
+                               action, STATE_SET "message" 0.0;
+                               target, "PROGRESS_BAR";
+                               target, "MIC_ICON";
+                       }
+
+                       program
+                       {
+                               name,   "text_show";
+                               signal, "idle,state,text,visible";
+                               source, "elm";
+                               action, STATE_SET "expand" 0.0;
+                               target, "elm.text";
+                       }
+
+                       program
+                       {
+                               name,   "text_hide";
+                               signal, "idle,state,text,hidden";
+                               source, "elm";
+                               action, STATE_SET "default" 0.0;
+                               target, "elm.text";
+                       }
+                       program
+                       {
+                               name,   "show_effect_part";
+                               signal, "elm,state,eq,show";
+                               source, "eq";
+                               action, STATE_SET "default" 0.1;
+                               target, "EFFECT_BG";
+                       }
+
+                       program
+                       {
+                               name,   "hide_effect_part";
+                               signal, "elm,state,eq,hide";
+                               source, "eq";
+                               action, STATE_SET "default" 0.0;
+                               target, "EFFECT_BG";
+                       }
+
+                       program
+                       {
+                               name,   "guide_text_up";
+                               signal, "idle,state,guide_text,up";
+                               source, "elm";
+                               action, STATE_SET "default" 0.0;
+                               target, "guide_text_block";
+                       }
+                       program
+                       {
+                               name,   "guide_text_bottom";
+                               signal, "idle,state,guide_text,bottom";
+                               source, "elm";
+                               action, STATE_SET "bottom" 0.0;
+                               target, "guide_text_block";
+                       }
+
+
+               }
+       }
+
+       group{
+               name: "layout_textblock";
+
+               script {
+                        public timer_cb(val) {
+                               run_program(PROGRAM:"do_scroll");
+                        }
+
+                 }
+               parts {
+                       part
+                       {
+                               name, "bg";
+                               type, SPACER;
+                               scale, 1;
+                               description
+                               {
+                                       state, "default" 0.0;
+                                       min, 282 39;
+                                       rel1
+                                       {
+                                               relative, 0.0 0.0;
+                                       }
+                                       rel2
+                                       {
+                                               relative, 1.0 1.0;
+                                       }
+                               }
+                       }
+                  part { name: "elm.swallow.content";
+                         scale: 1;
+                         type: SWALLOW;
+                         description { state: "default" 0.0;
+                                min: 282 39;
+                                color, 120 120 120 120;
+                         }
+                  }
+               }
+               programs {
+                       program
+                       {
+                               name, "scroll";
+                               signal, "scrolling";
+                               source, "entry";
+                               script {
+                                       timer(3/10, "timer_cb", 0);
+                               }
+                       }
+                       program
+                       {
+                               name, "do_scroll";
+                               action, SIGNAL_EMIT "do_scroll" "entry";
+                       }
+               }
+       }
+
+
+
+#define PROGRESSBAR_ACTIVITY_SMALL_SIZE_INC 50
+       group
+       {
+               name: "elm/progressbar/horizontal/voice_input/process/small";
+               images {
+                       image: "style/tw_loading_small_00.png" COMP;
+                       image: "style/tw_loading_small_01.png" COMP;
+                       image: "style/tw_loading_small_02.png" COMP;
+                       image: "style/tw_loading_small_03.png" COMP;
+                       image: "style/tw_loading_small_04.png" COMP;
+                       image: "style/tw_loading_small_05.png" COMP;
+                       image: "style/tw_loading_small_06.png" COMP;
+                       image: "style/tw_loading_small_07.png" COMP;
+                       image: "style/tw_loading_small_08.png" COMP;
+                       image: "style/tw_loading_small_09.png" COMP;
+                       image: "style/tw_loading_small_10.png" COMP;
+                       image: "style/tw_loading_small_11.png" COMP;
+                       image: "style/tw_loading_small_12.png" COMP;
+                       image: "style/tw_loading_small_13.png" COMP;
+                       image: "style/tw_loading_small_14.png" COMP;
+                       image: "style/tw_loading_small_15.png" COMP;
+                       image: "style/tw_loading_small_16.png" COMP;
+                       image: "style/tw_loading_small_17.png" COMP;
+                       image: "style/tw_loading_small_18.png" COMP;
+                       image: "style/tw_loading_small_19.png" COMP;
+                       image: "style/tw_loading_small_20.png" COMP;
+                       image: "style/tw_loading_small_21.png" COMP;
+                       image: "style/tw_loading_small_22.png" COMP;
+                       image: "style/tw_loading_small_23.png" COMP;
+                       image: "style/tw_loading_small_24.png" COMP;
+                       image: "style/tw_loading_small_25.png" COMP;
+                       image: "style/tw_loading_small_26.png" COMP;
+                       image: "style/tw_loading_small_27.png" COMP;
+                       image: "style/tw_loading_small_28.png" COMP;
+                       image: "style/tw_loading_small_29.png" COMP;
+                       image: "style/tw_loading_small_30.png" COMP;
+                       image: "style/tw_loading_small_31.png" COMP;
+                       image: "style/tw_loading_small_32.png" COMP;
+                       image: "style/tw_loading_small_33.png" COMP;
+                       image: "style/tw_loading_small_34.png" COMP;
+                       image: "style/tw_loading_small_35.png" COMP;
+                       image: "style/tw_loading_small_36.png" COMP;
+                       image: "style/tw_loading_small_37.png" COMP;
+                       image: "style/tw_loading_small_38.png" COMP;
+                       image: "style/tw_loading_small_39.png" COMP;
+                       image: "style/tw_loading_small_40.png" COMP;
+                       image: "style/tw_loading_small_41.png" COMP;
+                       image: "style/tw_loading_small_42.png" COMP;
+                       image: "style/tw_loading_small_43.png" COMP;
+                       image: "style/tw_loading_small_44.png" COMP;
+                       image: "style/tw_loading_small_45.png" COMP;
+                       image: "style/tw_loading_small_46.png" COMP;
+                       image: "style/tw_loading_small_47.png" COMP;
+                       image: "style/tw_loading_small_48.png" COMP;
+                       image: "style/tw_loading_small_49.png" COMP;
+                       image: "style/tw_loading_small_50.png" COMP;
+                       image: "style/tw_loading_small_51.png" COMP;
+                       image: "style/tw_loading_small_52.png" COMP;
+                       image: "style/tw_loading_small_53.png" COMP;
+                       image: "style/tw_loading_small_54.png" COMP;
+                       image: "style/tw_loading_small_55.png" COMP;
+                       image: "style/tw_loading_small_56.png" COMP;
+                       image: "style/tw_loading_small_57.png" COMP;
+                       image: "style/tw_loading_small_58.png" COMP;
+                       image: "style/tw_loading_small_59.png" COMP;
+                       image: "style/tw_loading_small_60.png" COMP;
+                       image: "style/tw_loading_small_61.png" COMP;
+                       image: "style/tw_loading_small_62.png" COMP;
+                       image: "style/tw_loading_small_63.png" COMP;
+                       image: "style/tw_loading_small_64.png" COMP;
+               }
+               parts {
+                       part {
+                               name: "access";
+                               type: RECT;
+                               description
+                               {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "elm.background.progressbar";
+                               mouse_events: 0;
+                               scale: 1;
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                               }
+                       }
+                       part {
+                               name: "bar";
+                               mouse_events: 0;
+                               scale: 1;
+                               clip_to: "elm.background.progressbar";
+                               description {
+                                       state: "default" 0.0;
+                                       min: PROGRESSBAR_ACTIVITY_SMALL_SIZE_INC PROGRESSBAR_ACTIVITY_SMALL_SIZE_INC;
+                                       max: PROGRESSBAR_ACTIVITY_SMALL_SIZE_INC PROGRESSBAR_ACTIVITY_SMALL_SIZE_INC;
+                                       fixed, 1 1;
+                                       aspect: 1.0 1.0;
+                                       aspect_preference: BOTH;
+                                       image.normal: "style/tw_loading_small_00.png";
+                                       image.tween: "style/tw_loading_small_01.png";
+                                       image.tween: "style/tw_loading_small_02.png";
+                                       image.tween: "style/tw_loading_small_03.png";
+                                       image.tween: "style/tw_loading_small_04.png";
+                                       image.tween: "style/tw_loading_small_05.png";
+                                       image.tween: "style/tw_loading_small_06.png";
+                                       image.tween: "style/tw_loading_small_07.png";
+                                       image.tween: "style/tw_loading_small_08.png";
+                                       image.tween: "style/tw_loading_small_09.png";
+                                       image.tween: "style/tw_loading_small_10.png";
+                                       image.tween: "style/tw_loading_small_11.png";
+                                       image.tween: "style/tw_loading_small_12.png";
+                                       image.tween: "style/tw_loading_small_13.png";
+                                       image.tween: "style/tw_loading_small_14.png";
+                                       image.tween: "style/tw_loading_small_15.png";
+                                       image.tween: "style/tw_loading_small_16.png";
+                                       image.tween: "style/tw_loading_small_17.png";
+                                       image.tween: "style/tw_loading_small_18.png";
+                                       image.tween: "style/tw_loading_small_19.png";
+                                       image.tween: "style/tw_loading_small_20.png";
+                                       image.tween: "style/tw_loading_small_21.png";
+                                       image.tween: "style/tw_loading_small_22.png";
+                                       image.tween: "style/tw_loading_small_23.png";
+                                       image.tween: "style/tw_loading_small_24.png";
+                                       image.tween: "style/tw_loading_small_25.png";
+                                       image.tween: "style/tw_loading_small_26.png";
+                                       image.tween: "style/tw_loading_small_27.png";
+                                       image.tween: "style/tw_loading_small_28.png";
+                                       image.tween: "style/tw_loading_small_29.png";
+                                       image.tween: "style/tw_loading_small_30.png";
+                                       image.tween: "style/tw_loading_small_31.png";
+                                       image.tween: "style/tw_loading_small_32.png";
+                                       image.tween: "style/tw_loading_small_33.png";
+                                       image.tween: "style/tw_loading_small_34.png";
+                                       image.tween: "style/tw_loading_small_35.png";
+                                       image.tween: "style/tw_loading_small_36.png";
+                                       image.tween: "style/tw_loading_small_37.png";
+                                       image.tween: "style/tw_loading_small_38.png";
+                                       image.tween: "style/tw_loading_small_39.png";
+                                       image.tween: "style/tw_loading_small_40.png";
+                                       image.tween: "style/tw_loading_small_41.png";
+                                       image.tween: "style/tw_loading_small_42.png";
+                                       image.tween: "style/tw_loading_small_43.png";
+                                       image.tween: "style/tw_loading_small_44.png";
+                                       image.tween: "style/tw_loading_small_45.png";
+                                       image.tween: "style/tw_loading_small_46.png";
+                                       image.tween: "style/tw_loading_small_47.png";
+                                       image.tween: "style/tw_loading_small_48.png";
+                                       image.tween: "style/tw_loading_small_48.png";
+                                       image.tween: "style/tw_loading_small_49.png";
+                                       image.tween: "style/tw_loading_small_50.png";
+                                       image.tween: "style/tw_loading_small_51.png";
+                                       image.tween: "style/tw_loading_small_52.png";
+                                       image.tween: "style/tw_loading_small_53.png";
+                                       image.tween: "style/tw_loading_small_54.png";
+                                       image.tween: "style/tw_loading_small_55.png";
+                                       image.tween: "style/tw_loading_small_56.png";
+                                       image.tween: "style/tw_loading_small_57.png";
+                                       image.tween: "style/tw_loading_small_58.png";
+                                       image.tween: "style/tw_loading_small_59.png";
+                                       image.tween: "style/tw_loading_small_60.png";
+                                       image.tween: "style/tw_loading_small_61.png";
+                                       image.tween: "style/tw_loading_small_62.png";
+                                       image.tween: "style/tw_loading_small_63.png";
+                                       image.tween: "style/tw_loading_small_64.png";
+                                       color: 128 128 128 128;
+                               }
+                       }
+               }
+               programs {
+                       program {
+                               name: "start_pulse";
+                               signal: "elm,state,pulse,start";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "bar";
+                               transition: LINEAR 1.8;
+                               after: "start_pulse";
+                       }
+                       program {
+                               name: "stop_pulse";
+                               signal: "elm,state,pulse,stop";
+                               source: "elm";
+                               action: ACTION_STOP;
+                               target: "start_pulse";
+                               after: "init_pulse";
+                       }
+                       program { name: "init_pulse";
+                               action: STATE_SET "default" 0.0;
+                               target: "bar";
+                       }
+               }
+       }
+
+
+#define BUTTON_PADDING_SIZE_INC                            20 0
+#define BUTTON_HEIGHT_INC                                  122
+#define BUTTON_ICON_SIZE_INC                               60 60
+   group { name: "elm/button/base/default";
+      script {
+         public mouse_down = 0;
+         public multi_down = 0;
+      }
+      parts {
+         part { name: "bg";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 BUTTON_HEIGHT_INC;
+               color: 128 128 128 128;
+            }
+            description { state: "pressed" 0.0;
+               inherit: "default" 0.0;
+               color: 128 128 128 128;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 128 128 128 128;
+            }
+         }
+         part { name: "padding_left_top";
+            type: SPACER;
+            scale: 1;
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel2.relative: 0.0 0.0;
+               min: BUTTON_PADDING_SIZE_INC;
+               fixed: 1 1;
+            }
+         }
+         part { name: "padding_right_bottom";
+            type: SPACER;
+            scale: 1;
+            description { state: "default" 0.0;
+               align: 1.0 1.0;
+               rel1.relative: 1.0 1.0;
+               min: BUTTON_PADDING_SIZE_INC;
+               fixed: 1 1;
+            }
+         }
+         part { name: "icon_rect";
+            type: SPACER;
+            scale: 1;
+            description { state: "default" 0.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";
+               }
+               min: 0 0;
+               fixed: 1 1;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: BUTTON_ICON_SIZE_INC;
+               max: BUTTON_ICON_SIZE_INC;
+               fixed: 1 1;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            clip_to: "elm.swallow.content.clip";
+            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 1;
+               min: BUTTON_ICON_SIZE_INC;
+               max: BUTTON_ICON_SIZE_INC;
+               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";
+               }
+            }
+            description { state: "icononly" 0.0;
+               min: BUTTON_ICON_SIZE_INC;
+               max: BUTTON_ICON_SIZE_INC;
+            }
+         }
+         part { name: "elm.text";
+            type: TEXTBLOCK;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "icon_rect";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to: "padding_right_bottom";
+               }
+               text {
+                  max: 1 0;
+                  style: "button_general_text_normal";
+               }
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               text.style: "button_general_text_dim";
+            }
+            description { state: "pressed" 0.0;
+               inherit: "default" 0.0;
+               text.style: "button_general_text_press";
+            }
+         }
+         part { name: "elm.swallow.content.clip";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               color: 128 128 128 128;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 128 128 128 128;
+            }
+         }
+         part { name: "event";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+               rel1.to: "bg";
+               rel2.to: "bg";
+            }
+         }
+      }
+      programs {
+         program { name: "pressed";
+            signal: "mouse,down,1*";
+            source: "event";
+            script {
+               if ((get_int(multi_down) == 0) && (get_int(mouse_down) == 0))
+                 {
+                     set_int(mouse_down, 1);
+                     run_program(PROGRAM:"button_press1");
+                 }
+            }
+         }
+         program { name: "button_press1";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"bg", st, 30, vl);
+               if (strcmp(st, "disabled")) {
+                  set_state(PART:"bg", "pressed", 0.0);
+                  set_state(PART:"elm.text", "pressed", 0.0);
+                  emit("elm,action,press", "");
+               }
+            }
+         }
+         program { name: "unpressed";
+            signal: "mouse,up,1";
+            source: "event";
+            script {
+               if (get_int(mouse_down) == 1) {
+                 set_int(mouse_down, 0);
+                 run_program(PROGRAM:"button_unpress1");
+               }
+            }
+         }
+         program { name: "button_unpress1";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"bg", st, 30, vl);
+               if (strcmp(st, "disabled")) {
+                  set_state(PART:"bg", "default", 0.0);
+                  set_state(PART:"elm.text", "default", 0.0);
+                  emit("elm,action,unpress", "");
+               }
+            }
+         }
+         program { name: "touch_snd";
+            signal: "mouse,clicked,1";
+            source: "event";
+            script {
+               new st[31];
+               new Float:vl;
+               if (get_int(multi_down) == 0) {
+                  get_state(PART:"bg", st, 30, vl);
+                  if (strcmp(st, "disabled")) {
+                     //run_program(PROGRAM:"play_sample");
+                     emit("elm,action,click", "");
+                  }
+               }
+            }
+         }
+         program {
+            name: "play_sample";
+            action: RUN_PLUGIN "touch_sound";
+         }
+         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);
+                 }
+               get_state(PART:"bg", st, 30, vl);
+               if (strcmp(st, "disabled"))
+                  set_state(PART:"elm.text", "default", 0.0);
+               else
+                  set_state(PART:"elm.text", "disabled", 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", "default", 0.0);
+                 }
+               set_state(PART:"elm.text", "default", 0.0);
+            }
+         }
+         program { name: "icon_show";
+            signal: "elm,state,icon,visible";
+            source: "elm";
+            action: STATE_SET "visible" 0.0;
+            target: "elm.swallow.content";
+            target: "icon_rect";
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,icon,hidden";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.content";
+            target: "icon_rect";
+         }
+         program { name: "disable";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "bg";
+            target: "elm.swallow.content.clip";
+            target: "elm.text";
+         }
+         program { name: "enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg";
+            target: "elm.swallow.content.clip";
+            target: "elm.text";
+         }
+         program { name: "multi_down";
+            signal: "elm,action,multi,down";
+            source: "elm";
+            script {
+               set_int(multi_down, 1);
+            }
+         }
+         program { name: "multi_up";
+            signal: "elm,action,multi,up";
+            source: "elm";
+            script {
+               set_int(multi_down, 0);
+            }
+         }
+      }
+   }
+
+       group { name: "elm/button/base/ime_transparent";
+         inherit: "elm/button/base/default";
+         parts {
+                 part { name: "bg";
+                        type: RECT;
+                        scale: 1;
+                        description { state: "default" 0.0;
+                               min: 0 112;
+                               visible: 0;
+                        }
+                        description { state: "pressed" 0.0;
+                               inherit: "default" 0.0;
+                        }
+                        description { state: "disabled" 0.0;
+                               inherit: "default" 0.0;
+                               }
+                       }
+               }
+       }
+
+
+
+#define NAVIFRAME_VIEW_TRANS_TIME 0.4 //time for push and pop
+#define NAVIFRAME_TITLE_TRANS_TIME 0.5 //Title transition time
+#define NAVIFRAME_TITLE_EXPAND_TRANS_TIME 0.5 //Title Expansion transition time
+#define NAVIFRAME_TEXT_FADE_OUT_CALC_TIME 0.2 //Text fade out calculation time
+#define ACTIONBAR_PADDING_SIZE_INC 64
+#define ACTIONBAR_HEIGHT_INC 115
+#define ACTIONBAR_TEXT_SIZE_INC 39
+#define ACTIONBAR_TEXT_TOP_PADDING_SIZE_INC 51
+#define ACTIONBAR_TEXT_BOTTOM_PADDING_SIZE_INC 25
+#define ACTIONBAR_TEX_SLIDING_SPEED 0.006
+#define ACTIONBAR_TEX_SLIDING_START_WAITING_TIME 0.8
+#define HIDDEN_BUTTON_HEIGHT_INC 88
+
+#define STYLE_TAG_MATCH \
+       tag: "match" "+ color=#ffffff color_class=T0212";
+
+styles {
+       style { name: "action_bar_title";
+               base: "font=Tizen:style=Regular font_size="ACTIONBAR_TEXT_SIZE_INC" color=#FFFFFF color_class=T012 text_class=T012";
+               STYLE_TAG_MATCH
+       }
+}
+
+group { name: "elm_naviframe_item_basic_customized";
+       data.item: "tizen_zoom" 1;
+       script {
+               public g_mirrored = 0; //Mirrored on/off status
+               public g_text_fade_out_calc_timer = 0; //Text fade out calculation timer
+
+               public g_duration_1st;
+               public g_duration_2nd;
+               public g_timer_id;
+               public g_anim_id;
+               public g_sliding_start;
+
+               public title_text_fade_out() {
+                       new x, y, w, h, w2;
+
+                       if (get_int(g_text_fade_out_calc_timer)) {
+                               cancel_timer(g_text_fade_out_calc_timer);
+                               set_int(g_text_fade_out_calc_timer, 0);
+                       }
+
+                       get_geometry(PART:"elm.text.title", x, y, w, h);
+                       get_geometry(PART:"title_text_bg", x, y, w2, h);
+               }
+
+               public init() {
+                       slide_stop();
+                       set_float(g_duration_1st, 0);
+                       set_float(g_duration_2nd, 0);
+                       set_int(g_timer_id, 0);
+                       set_int(g_anim_id, 0);
+                       set_int(g_sliding_start, 0);
+               }
+               public slide_first_anim(val, Float:pos) {
+                       set_tween_state(PART:"elm.text.title", pos, "slide", 0.0, "slide_1", 0.0);
+                       if (pos >= 1.0) {
+                               cancel_anim(get_int(g_anim_id));
+                               set_int(g_anim_id, anim(get_float(g_duration_2nd), "slide_second_anim", 1));
+                       }
+               }
+               public slide_second_anim(val, Float:pos) {
+                       set_tween_state(PART:"elm.text.title", pos, "slide_2", 0.0, "slide", 0.0);
+                       if (pos >= 1.0)
+                               slide_stop();
+                       }
+               public slide_first() {
+                       check_size();
+                       if (get_int(g_sliding_start)) {
+                               set_state(PART:"elm.text.title", "slide", 0.0);
+                               get_duration();
+                               set_int(g_anim_id, anim(get_float(g_duration_1st), "slide_first_anim", 1));
+                       }
+               }
+               public slide_start() {
+                       set_int(g_timer_id, timer(ACTIONBAR_TEX_SLIDING_START_WAITING_TIME, "slide_first", 1));
+               }
+               public slide_stop() {
+                       cancel_anim(get_int(g_anim_id));
+                       set_state(PART:"elm.text.title", "default", 0.0);
+                       set_int(g_sliding_start, 0);
+               }
+               public check_size() {
+                       new x, y, w, w1, h;
+                       get_geometry(PART:"elm.text.title", x, y, w, h);
+                       get_geometry(PART:"title_text_clip", x, y, w1, h);
+                       if (w >= w1) {
+                               set_int(g_sliding_start, 1);
+                       }
+                       else {
+                               set_int(g_sliding_start, 0);
+                       }
+               }
+               public get_duration() {
+                       new x, y, w, w1, h;
+                       get_geometry(PART:"elm.text.title", x, y, w, h);
+                       get_geometry(PART:"title_text_clip", x, y, w1, h);
+                       set_float(g_duration_1st, w * ACTIONBAR_TEX_SLIDING_SPEED);
+                       set_float(g_duration_2nd, w1 * ACTIONBAR_TEX_SLIDING_SPEED);
+               }
+       }
+       parts {
+               part { name: "clipper";
+                       type: RECT;
+                       description { state: "default" 0.0;
+                       visible: 1;
+                       }
+                       description { state: "hide" 0.0;
+                               visible: 0;
+                       }
+               }
+               part { name: "base";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "clipper";
+                       description { state: "default" 0.0;
+                               color: 128 128 128 128;
+                       }
+               }
+               part { name: "title_expand";
+                       type: RECT;
+                       scale: 1;
+                       repeat_events: 0;
+                       clip_to: "clipper";
+                       description { state: "default" 0.0;
+                               min: 0 HIDDEN_BUTTON_HEIGHT_INC;
+                               max: -1 HIDDEN_BUTTON_HEIGHT_INC;
+                               fixed: 1 1;
+                               align: 0.5 1.0;
+                               visible: 0;
+                               color: 255 255 255 0;
+                               rel1 { relative: 0.0 1.0; to_x: "base"; to_y: "title_bg"; }
+                               rel2 { relative: 1.0 1.0; to_x: "base"; to_y: "title_bg"; }
+                       }
+                       description { state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               align: 0.5 0.0;
+                               visible: 1;
+                       }
+               }
+               part { name: "title_clip";
+                       type: RECT;
+                       clip_to: "clipper";
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               rel1.to: "title_bg";
+                               rel2.to: "title_bg";
+                       }
+                       description { state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+               part { name: "title_bg";
+                       type: RECT;
+                       scale: 1;
+                       clip_to: "title_clip";
+                       description { state: "default" 0.0;
+                               min: 0 ACTIONBAR_HEIGHT_INC;
+                               max: -1 ACTIONBAR_HEIGHT_INC;
+                               fixed: 0 1;
+                               align: 0.5 0.0;
+                               rel1 { relative: 0.0 0.0; to: "base"; }
+                               rel2 { relative: 1.0 0.0; to: "base"; }
+                               color: 255 255 255 0;
+                       }
+                       description { state: "hide_trans" 0.0;
+                               inherit: "default" 0.0;
+                               align: 0.5 1.0;
+                       }
+                       description { state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               min: 0 0;
+                               max: -1 0;
+                       }
+               }
+               part { name: "title_text_bg";
+                       type: SPACER;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 1.0 1.0; to_x: "left_padding"; to_y: "top_padding"; }
+                               rel2 { relative: 0.0 0.0; to: "right_padding"; to_y: "bottom_padding"; }
+                               fixed: 0 1;
+                       }
+               }
+               part { name: "title_text_clip";
+                       type: RECT;
+                       scale: 1;
+                       clip_to: "title_clip";
+                       description { state: "default" 0.0;
+                               rel1.to: "title_text_bg";
+                               rel2.to: "title_text_bg";
+                       }
+               }
+               part { name: "elm.text.title";
+                       type: TEXTBLOCK;
+                       scale: 1;
+                       clip_to: "title_text_clip";
+                       description { state: "default" 0.0;
+                               text {
+                                       min: 0 1;
+                                       max: 1 1;
+                                       ellipsis: -1.0;
+//                                     fade_ellipsis: 1.0;
+                                       style: "action_bar_title";
+                               }
+                               fixed: 1 1;
+                               align: 0.5 0.5;
+                               rel1.to: "title_text_bg"; rel2.to: "title_text_bg";
+                       }
+                       description { state: "slide" 0.0;
+                               inherit: "default" 0.0;
+                               align: 0.0 0.5;
+                               rel1 {
+                                       relative: 1.0 1.0;
+                                       to_x: "left_padding";
+                                       to_y: "top_padding";
+                               }
+                               rel2 {
+                                       relative: 1.0 0.0;
+                                       to_x: "left_padding";
+                                       to_y: "bottom_padding";
+                               }
+                               text.min: 1 1;
+                       }
+                       description { state: "slide_1" 0.0;
+                               inherit: "default" 0.0;
+                               align: 1.0 0.5;
+                               rel1 {
+                                       relative: 1.0 1.0;
+                                       to_x: "left_padding";
+                                       to_y: "top_padding";
+                               }
+                               rel2 {
+                                       relative: 1.0 0.0;
+                                       to_x: "left_padding";
+                                       to_y: "bottom_padding";
+                               }
+                               text.min: 1 1;
+                       }
+                       description { state: "slide_2" 0.0;
+                               inherit: "default" 0.0;
+                               align: 0.0 0.5;
+                               rel1 {
+                                       relative: 0.0 1.0;
+                                       to_x: "right_padding";
+                                       to_y: "top_padding";
+                               }
+                               rel2 {
+                                       relative: 0.0 0.0;
+                                       to_x: "right_padding";
+                                       to_y: "bottom_padding";
+                               }
+                               text.min: 1 1;
+                       }
+               }
+               part { name: "left_padding";
+                       type: SPACER;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               min: ACTIONBAR_PADDING_SIZE_INC 0;
+                               max: ACTIONBAR_PADDING_SIZE_INC -1;
+                               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"; }
+                       }
+               }
+               part { name: "right_padding";
+                       type: SPACER;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               min: ACTIONBAR_PADDING_SIZE_INC 0;
+                               max: ACTIONBAR_PADDING_SIZE_INC -1;
+                               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"; }
+                       }
+               }
+               part { name: "click_event_area";
+                       type: RECT;
+                       ignore_flags: ON_HOLD;
+                       description { state: "default" 0.0;
+                               rel1 { to: "title_bg"; }
+                               rel2 { to: "title_bg"; }
+                               color: 0 0 0 0;
+                       }
+               }
+               part { name: "access.title";
+                       type: RECT;
+                       repeat_events: 1;
+                       description { state: "default" 0.0;
+                               rel1.to: "title_bg";
+                               rel2.to: "title_bg";
+                               color: 0 0 0 0;
+                       }
+               }
+               part { name: "top_padding";
+                       type: SPACER;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               fixed: 0 1;
+                               align: 0.5 0.0;
+                               min: 0 ACTIONBAR_TEXT_TOP_PADDING_SIZE_INC;
+                               max: -1 ACTIONBAR_TEXT_TOP_PADDING_SIZE_INC;
+                               rel1 {relative: 0.0 0.0; to: "title_bg"; }
+                               rel2 {relative: 1.0 0.0; to: "title_bg"; }
+                       }
+               }
+               part { name: "bottom_padding";
+                       type: SPACER;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               fixed: 0 1;
+                               align: 0.5 1.0;
+                               min: 0 ACTIONBAR_TEXT_BOTTOM_PADDING_SIZE_INC;
+                               max: -1 ACTIONBAR_TEXT_BOTTOM_PADDING_SIZE_INC;
+                               rel1 {relative: 0.0 1.0; to: "title_bg"; }
+                               rel2 {relative: 1.0 1.0; to: "title_bg"; }
+                       }
+               }
+               part { name: "elm.swallow.content";
+                       type: SWALLOW;
+                       scale: 1;
+                       repeat_events: 0;
+                       clip_to: "clipper";
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0.0 1.0; to_x: "base"; to_y: "title_expand"; }
+                               rel2 { relative: 1.0 0.0; to_x: "base"; to_y: "button_padding"; }
+                       }
+               }
+               part { name: "elm.swallow.circle_bg";
+                       type: SWALLOW;
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "clipper";
+                       description { state: "default" 0.0; }
+               }
+               part { name: "elm.swallow.circle";
+                       type: SWALLOW;
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "clipper";
+                       description { state: "default" 0.0; }
+               }
+               part { name: "button_padding";
+                       type: SPACER;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               fixed: 0 1;
+                               align: 0.5 1.0;
+                               min: 0 100;
+                               max: -1 100;
+                               rel1 {relative: 0.0 1.0; to: "base"; }
+                               rel2 {relative: 1.0 1.0; to: "base"; }
+                       }
+               }
+       }
+       programs {
+               program { name: "visible";
+                       signal: "elm,state,visible";
+                       source: "elm";
+                       script {
+                               set_state(PART:"base", "default", 0.0);
+                               set_state(PART:"clipper", "default", 0.0);
+                               init();
+                               slide_start();
+                               run_program(PROGRAM:"title_text_fade_out");
+                       }
+               }
+               program { name: "invisible";
+                       signal: "elm,state,invisible";
+                       source: "elm";
+                       script {
+                               set_state(PART:"clipper", "hide", 0.0);
+                       }
+               }
+               program { name: "title_hide";
+                       signal: "elm,state,title,hide";
+                       source: "elm";
+                       script {
+                               set_state(PART:"title_bg", "hide", 0.0);
+                               set_state(PART:"title_clip", "hide", 0.0);
+                       }
+               }
+               program { name: "title_hide_trans";
+                       signal: "elm,action,title,hide";
+                       source: "elm";
+                       script {
+                               new st[32];
+                               new Float:vl;
+                               get_state(PART:"title_bg", st, 32, vl);
+                               if (!strcmp(st, "default")) {
+                                       run_program(PROGRAM:"title_hide_trans2");
+                               }
+                       }
+               }
+               program { name: "title_hide_trans2";
+                       action: STATE_SET "hide_trans" 0.0;
+                       target: "title_bg";
+                       transition: SIN_FAC NAVIFRAME_TITLE_TRANS_TIME 1.7;
+                       after: "title_hide_trans3";
+               }
+               program { name: "title_hide_trans3";
+                       script {
+                               run_program(PROGRAM:"title_hide");
+                       }
+                       after: "title_trans_finished";
+               }
+               program { name: "title_trans_finished";
+                       action: SIGNAL_EMIT "elm,action,title,transition,finished" "";
+               }
+               program { name: "title_show";
+                       signal: "elm,state,title,show";
+                       source: "elm";
+                       script {
+                               set_state(PART:"title_bg", "default", 0.0);
+                               set_state(PART:"title_clip", "default", 0.0);
+                               run_program(PROGRAM:"title_text_fade_out");
+                       }
+               }
+               program { name: "title_show_trans";
+                       signal: "elm,action,title,show";
+                       source: "elm";
+                       script {
+                               new st[32];
+                               new Float:vl;
+                               get_state(PART:"title_bg", st, 32, vl);
+                               if (!strcmp(st, "hide")) {
+                                       set_state(PART:"title_bg", "hide_trans", 0.0);
+                                       set_state(PART:"title_clip", "default", 0.0);
+                                       run_program(PROGRAM:"title_show_trans2");
+                               }
+                       }
+               }
+               program { name: "title_show_trans2";
+                       action: STATE_SET "default" 0.0;
+                       target: "title_bg";
+                       transition: SIN_FAC NAVIFRAME_TITLE_TRANS_TIME 1.7;
+                       after: "title_trans_finished";
+               }
+               program { name: "title_label_show";
+                       signal: "elm,state,title_label,show";
+                       source: "elm";
+                       script {
+                               run_program(PROGRAM:"title_text_fade_out");
+                       }
+               }
+               program { name: "title_label_hide";
+                       signal: "elm,state,title_label,hide";
+                       source: "elm";
+               }
+               program { name: "title_expand_show";
+                       signal: "elm,state,title_expand,show";
+                       source: "";
+                       script {
+                               set_state(PART:"title_expand", "show", 0.0);
+                       }
+               }
+               program { name: "title_expand_hide";
+                       signal: "elm,state,title_expand,hide";
+                       source: "";
+                       script {
+                               set_state(PART:"title_expand", "default", 0.0);
+                       }
+               }
+               program { name: "hidden_btn_show_trans";
+                       signal: "elm,action,title_expand,show";
+                       source: "";
+                       action: STATE_SET "show" 0.0;
+                       target: "title_expand";
+                       transition: SIN_FAC NAVIFRAME_TITLE_EXPAND_TRANS_TIME 1.7;
+               }
+               program { name: "title_expand_hide_trans";
+                       signal: "elm,action,title_expand,hide";
+                       source: "";
+                       action: STATE_SET "default" 0.0;
+                       target: "title_expand";
+                       transition: SIN_FAC NAVIFRAME_TITLE_EXPAND_TRANS_TIME 1.7;
+               }
+               program { name: "title_clicked";
+                       signal: "mouse,clicked,1";
+                       source: "click_event_area";
+                       action: SIGNAL_EMIT "elm,action,title,clicked" "";
+               }
+               program {
+                       name: "mirrored_on";
+                       signal: "edje,state,rtl";
+                       source: "edje";
+                       script {
+                               set_int(g_mirrored, 1);
+                               run_program(PROGRAM:"title_text_fade_out");
+                       }
+               }
+               program {
+                       name: "mirrored_off";
+                       signal: "edje,state,ltr";
+                       source: "edje";
+                       script {
+                               set_int(g_mirrored, 0);
+                               run_program(PROGRAM:"title_text_fade_out");
+                       }
+               }
+               program {
+                       name: "title_text_fade_out";
+                       script {
+                               if (get_int(g_text_fade_out_calc_timer)) {
+                                       cancel_timer(g_text_fade_out_calc_timer);
+                                       set_int(g_text_fade_out_calc_timer, 0);
+                               }
+                               set_int(g_text_fade_out_calc_timer, timer(NAVIFRAME_TEXT_FADE_OUT_CALC_TIME, "title_text_fade_out", 0));
+                       }
+               }
+       }
+}
+
+}
diff --git a/res/images/w_mode_stt_ic.png b/res/images/w_mode_stt_ic.png
new file mode 100644 (file)
index 0000000..0761a5c
Binary files /dev/null and b/res/images/w_mode_stt_ic.png differ
diff --git a/src/include/ise-stt-engine.h b/src/include/ise-stt-engine.h
new file mode 100755 (executable)
index 0000000..0fbd7a8
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef ISE_STT_ENGINE_H_
+#define ISE_STT_ENGINE_H_
+
+/*
+ * This file will be included from ISE
+ */
+
+
+#include <Elementary.h>
+
+#ifdef EAPI
+# undef EAPI
+#endif
+
+
+#ifdef __GNUC__
+# if __GNUC__ >= 4
+#  define EAPI __attribute__ ((visibility("default")))
+# else
+#  define EAPI
+# endif
+#else
+# define EAPI
+#endif
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+void ise_stt_start();
+void ise_stt_finish();
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ISE_STT_ENGINE_H_ */
diff --git a/src/include/ise-stt-mode.h b/src/include/ise-stt-mode.h
new file mode 100644 (file)
index 0000000..f2c2e71
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef ISE_STT_MODE_H_
+#define ISE_STT_MODE_H_
+
+/*
+ * This file will be included from ISE
+ */
+
+
+#include <Elementary.h>
+
+#ifdef EAPI
+# undef EAPI
+#endif
+
+
+#ifdef __GNUC__
+# if __GNUC__ >= 4
+#  define EAPI __attribute__ ((visibility("default")))
+# else
+#  define EAPI
+# endif
+#else
+# define EAPI
+#endif
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+
+#define STT_EDJ_FILE "edje/w-input-stt.edj"
+
+
+void ise_show_stt_mode(Evas_Object *win);
+void ise_hide_stt_mode();
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ISE_STT_MODE_H_ */
diff --git a/src/include/ise-stt-option.h b/src/include/ise-stt-option.h
new file mode 100644 (file)
index 0000000..1602f2a
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef ISE_STT_OPTION_H_
+#define ISE_STT_OPTION_H_
+
+/*
+ * This file will be included from ISE
+ */
+
+
+#include <Elementary.h>
+
+#ifdef EAPI
+# undef EAPI
+#endif
+
+
+#ifdef __GNUC__
+# if __GNUC__ >= 4
+#  define EAPI __attribute__ ((visibility("default")))
+# else
+#  define EAPI
+# endif
+#else
+# define EAPI
+#endif
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#define VCONFKEY_ISE_STT_LANGUAGE   "db/private/ise/stt/language"
+#define PREFERENCE_ISE_STT_LANGUAGE "ise/stt/language"
+
+
+void create_setting_window();
+char *get_stt_default_language();
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ISE_STT_OPTION_H_ */
diff --git a/src/ise-stt-engine.cpp b/src/ise-stt-engine.cpp
new file mode 100644 (file)
index 0000000..2585523
--- /dev/null
@@ -0,0 +1,182 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <vconf.h>
+#include <stdio.h>
+#include <Ecore.h>
+#include <dlog.h>
+#include <app.h>
+#include <string.h>
+#include <stt.h>
+#include <unistd.h>
+
+#include "ise.h"
+#include "ise-stt-engine.h"
+#include "ise-stt-option.h"
+
+stt_h g_stt = NULL;
+static const char *language = "en_US";
+
+const char* ErrorString(int ecode);
+
+static Eina_Bool __stt_get_volume(void *data)
+{
+    float volume = 0.0;
+    int ret = stt_get_recording_volume(g_stt, &volume);
+    if (STT_ERROR_NONE != ret) {
+        LOGD("[ERROR] Fail to get volume : err = %s", ErrorString((stt_error_e)ret));
+        return EINA_FALSE;
+    }
+
+    LOGD("Get volume : %f", volume);
+
+    return EINA_TRUE;
+}
+
+static Eina_Bool __stt_start(void *data)
+{
+    int ret;
+    LOGD("STT set silence detection");
+    ret = stt_set_silence_detection(g_stt, STT_OPTION_SILENCE_DETECTION_TRUE);
+    if (STT_ERROR_NONE != ret) {
+        LOGD("[ERROR] Fail to set silence detection : err = %s", ErrorString((stt_error_e)ret));
+    }
+
+    LOGD("STT start");
+    ret = stt_start(g_stt, language, STT_RECOGNITION_TYPE_FREE);
+    if (STT_ERROR_NONE != ret) {
+        LOGD("[ERROR] Fail to start : err = %s", ErrorString((stt_error_e)ret));
+    }
+
+    ecore_timer_add(0.1, __stt_get_volume, NULL);
+
+    return EINA_FALSE;
+}
+
+static void __stt_state_changed_cb(stt_h stt, stt_state_e previous, stt_state_e current, void* user_data)
+{
+    if (STT_STATE_CREATED == previous && STT_STATE_READY == current) {
+        LOGD("State is Created -> Ready");
+        ecore_timer_add(0, __stt_start, NULL);
+    }
+}
+
+static void __stt_finalize(void *data)
+{
+    int ret;
+    LOGD("STT destroy");
+    ret = stt_unprepare(g_stt);
+    if (STT_ERROR_NONE != ret) {
+        LOGD("[ERROR] Fail to stt unprepare : err = %s", ErrorString((stt_error_e)ret));
+    }
+    ret = stt_destroy(g_stt);
+    if (STT_ERROR_NONE != ret) {
+        LOGD("[ERROR] Fail to stt destroy : err = %s", ErrorString((stt_error_e)ret));
+    }
+}
+
+static void __stt_recognition_result_cb(stt_h stt, stt_result_event_e event, const char** data, int data_count, const char* msg, void *user_data)
+{
+    LOGD("==== STT result cb ====");
+
+    if (NULL != data) {
+        LOGD("( %s )", data[0]);
+        ise_send_string(data[0]);
+    }
+}
+
+const char* ErrorString(int ecode) {
+    const char *str = NULL;
+
+    switch (ecode) {
+        case STT_ERROR_OUT_OF_MEMORY:
+            str = (const char *) "STT_ERROR_OUT_OF_MEMORY";
+            break;
+        case STT_ERROR_IO_ERROR:
+            str = (const char *) "STT_ERROR_IO_ERROR";
+            break;
+        case STT_ERROR_INVALID_PARAMETER:
+            str = (const char *) "STT_ERROR_INVALID_PARAMETER";
+            break;
+        case STT_ERROR_TIMED_OUT:
+            str = (const char *) "STT_ERROR_TIMED_OUT";
+            break;
+        case STT_ERROR_RECORDER_BUSY:
+            str = (const char *) "STT_ERROR_RECORDER_BUSY";
+            break;
+        case STT_ERROR_OUT_OF_NETWORK:
+            str = (const char *) "STT_ERROR_OUT_OF_NETWORK";
+            break;
+        case STT_ERROR_INVALID_STATE:
+            str = (const char *) " STT_ERROR_INVALID_STATE";
+            break;
+        case STT_ERROR_INVALID_LANGUAGE:
+            str = (const char *) "STT_ERROR_INVALID_LANGUAGE";
+            break;
+        case STT_ERROR_ENGINE_NOT_FOUND:
+            str = (const char *) "STT_ERROR_ENGINE_NOT_FOUND";
+            break;
+        case STT_ERROR_OPERATION_FAILED:
+            str = (const char *) "STT_ERROR_OPERATION_FAILED";
+            break;
+        case STT_ERROR_NOT_SUPPORTED_FEATURE:
+            str = (const char *) "STT_ERROR_NOT_SUPPORTED_FEATURE";
+            break;
+    }
+    return str;
+}
+
+void ise_stt_start()
+{
+    int ret;
+
+    language = get_stt_default_language();
+
+    LOGD("STT Create");
+    ret = stt_create(&g_stt);
+    if (STT_ERROR_NONE != ret) {
+        LOGD("Fail to create : err = %s", ErrorString((stt_error_e)ret));
+        return;
+    }
+
+    LOGD("Set callback");
+    ret = stt_set_state_changed_cb(g_stt, __stt_state_changed_cb, NULL);
+    if (STT_ERROR_NONE != ret) {
+        stt_destroy(g_stt);
+        LOGD("Fail to set state changed cb : err = %s", ErrorString((stt_error_e)ret));
+        return;
+    }
+
+    ret = stt_set_recognition_result_cb(g_stt, __stt_recognition_result_cb, NULL);
+    if (STT_ERROR_NONE != ret) {
+        stt_destroy(g_stt);
+        LOGD("Fail to set recognition result cb : err = %s", ErrorString((stt_error_e)ret));
+        return;
+    }
+
+    LOGD("STT prepare");
+    ret = stt_prepare(g_stt);
+    if (STT_ERROR_NONE != ret) {
+        stt_destroy(g_stt);
+        LOGD("Fail to prepare : err = %s", ErrorString((stt_error_e)ret));
+        return;
+    }
+}
+
+void ise_stt_finish()
+{
+    __stt_finalize(NULL);
+}
diff --git a/src/ise-stt-mode.cpp b/src/ise-stt-mode.cpp
new file mode 100644 (file)
index 0000000..30ff032
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <vconf.h>
+#include <stdio.h>
+#include <Ecore.h>
+#include <dlog.h>
+#include <app.h>
+#include <string.h>
+#include <stt.h>
+#include <unistd.h>
+
+#include "ise.h"
+#include "ise-stt-mode.h"
+
+static void on_mic_button_press_cb(void *data, Evas_Object *obj, void *event_info)
+{
+    LOGD("on_mic_button_press_cb");
+    return;
+}
+
+void ise_show_stt_mode(Evas_Object *win)
+{
+    int ret;
+/*     if(1) return;
+
+       Evas_Object *main_win = elm_win_add(NULL, "voice", ELM_WIN_BASIC);
+       Evas_Coord w = -1, h = -1;
+       elm_win_screen_size_get(main_win, NULL, NULL, &w, &h);
+       if (w > 0 && h > 0) {
+               evas_object_resize(main_win, w, h);
+       }
+
+       Evas_Object *naviframe = elm_naviframe_add(win);
+       elm_naviframe_prev_btn_auto_pushed_set(naviframe, EINA_TRUE);
+       eext_object_event_callback_add(naviframe, EEXT_CALLBACK_BACK, eext_naviframe_back_cb, NULL);
+       evas_object_size_hint_weight_set(naviframe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(naviframe, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_object_part_content_set(win, "elm.swallow.content", naviframe);
+       evas_object_show(naviframe);
+*/
+    Evas_Object *layout_main = elm_layout_add(win);
+    evas_object_size_hint_weight_set(layout_main, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    evas_object_size_hint_align_set(layout_main, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    // evas_object_show(layout_main);
+
+    std::string edj_path = app_get_resource_path();
+    edj_path = edj_path + STT_EDJ_FILE;
+    LOGD("edj_path = %s", edj_path.c_str());
+
+    ret = elm_layout_file_set(layout_main, edj_path.c_str(), "mic_control");
+    LOGD("elm_layout_file_set result = %d", ret);
+
+    // elm_object_content_set(win, layout_main);
+
+    // evas_object_show(naviframe);
+    evas_object_show(layout_main);
+
+    // MIC Button
+    Evas_Object *m_mic_button = elm_button_add(win);
+    elm_object_style_set(m_mic_button, "bottom");
+    // elm_object_part_content_set(layout_main, "MIC", m_mic_button);
+    evas_object_smart_callback_add(m_mic_button, "clicked", on_mic_button_press_cb, NULL);
+    evas_object_show(m_mic_button);
+
+    // evas_object_show(main_win);
+}
+
+void ise_hide_stt_mode()
+{
+
+}
diff --git a/src/ise-stt-option.cpp b/src/ise-stt-option.cpp
new file mode 100644 (file)
index 0000000..0c9b632
--- /dev/null
@@ -0,0 +1,528 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <vconf.h>
+#include <stdio.h>
+#include <Ecore.h>
+#include <dlog.h>
+#include <string.h>
+#include <app.h>
+#include <stt.h>
+#include <unistd.h>
+#include <efl_extension.h>
+
+#include "ise.h"
+#include "ise-stt-option.h"
+#include "ise-stt-engine.h"
+
+#define item_append(obj, style, index, cb, udata) \
+               elm_genlist_item_append(obj, &(style), (void *)index, NULL, ELM_GENLIST_ITEM_NONE, cb, udata)
+
+extern stt_h g_stt;
+static Evas_Object *radio_gp = NULL;
+Evas_Object *g_setting_naviframe = NULL;
+Evas_Object *g_setting_window = NULL;
+char *language = "en_US";
+
+static Elm_Genlist_Item_Class itc_title;
+static Elm_Genlist_Item_Class itc_1text;
+static Elm_Genlist_Item_Class itc_2text;
+
+const char* get_lang_label(char lang[]);
+static int get_language_value();
+static void set_language_value(int type);
+void _stt_lang_changed_cb(keynode_t *key, void* data);
+int is_lang_supported_by_stt(char lang[]);
+static char *__get_genlist_title_label(void *data, Evas_Object *obj, const char *part);
+char *__get_genlist_item_label(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *__get_genlist_item_content(void *data, Evas_Object *obj, const char *part);
+static void language_set_genlist_radio_cb(void *data, Evas_Object *obj, void *event_info);
+static Eina_Bool close_setting_window_idler_cb(void *data);
+static Evas_Object *create_language_list(Evas_Object *parent);
+
+const char *supported_language[7] = {
+    "auto",
+    "en_US",
+    "es_US",
+    "fr_FR",
+    "zh_CN",
+    "ja_JP",
+    "ko_KR",
+};
+
+const char *disp_lang_array[7] = {
+    "",
+    "English (United States)",
+    "Español (América Latina)",
+    "Français (France)",
+    "简体中文",
+    "日本語",
+    "한국어",
+};
+
+typedef enum {
+    STT_VOICE_N66_AUTO,
+    STT_VOICE_N66_EN_US,
+    STT_VOICE_N66_ES_US,
+    STT_VOICE_N66_FR_FR,
+    STT_VOICE_N66_ZH_CN,
+    STT_VOICE_N66_JA_JP,
+    STT_VOICE_N66_KO_KR
+} STT_VOICE_LANGUAGE_N66_I;
+
+const char* get_lang_label(char lang[])
+{
+    const char *str = NULL;
+
+    if (strcmp (lang, "en_US") == 0)
+        str = disp_lang_array[1];
+    else if (strcmp (lang, "ko_KR") == 0)
+        str = disp_lang_array[6];
+    else if (strcmp (lang, "fr_FR") == 0)
+        str = disp_lang_array[3];
+    else if (strcmp (lang, "ja_JP") == 0)
+        str = disp_lang_array[5];
+    else if (strcmp (lang, "zh_CN") == 0)
+        str = disp_lang_array[4];
+    else if (strcmp (lang, "es_US") == 0)
+        str = disp_lang_array[2];
+    else
+        str = disp_lang_array[1];
+
+    return str;
+}
+
+static int get_language_value()
+{
+#if 1
+    int lang = 0, ret = 0;
+
+    ret = preference_get_int(PREFERENCE_ISE_STT_LANGUAGE, &lang);
+    if (PREFERENCE_ERROR_NONE != ret){
+        LOGD("preference_get_int error!(%d)", ret);
+        preference_set_int(PREFERENCE_ISE_STT_LANGUAGE, (int)2); //auto
+        lang = 2;
+    }
+#else
+    int lang = 0, ret = 0;
+
+    ret = vconf_get_int(VCONFKEY_ISE_STT_LANGUAGE, &lang);
+    if (ret !=0) {
+        LOGD("Vconf_get_int error!(%d)", ret);
+    }
+#endif
+    if (lang < 0 || lang > 6) {
+        LOGD("vconf lang orig(%d) to be 0", lang);
+        lang = 0;
+    }
+    LOGD("n66 current language value for stt (%s).", disp_lang_array[lang]);
+
+    return lang;
+}
+
+static void set_language_value(int type)
+{
+    // Add implementation to store language type.
+    int ret = 0;
+
+#if 1
+    ret = preference_set_int(PREFERENCE_ISE_STT_LANGUAGE, (int)type);
+    if (PREFERENCE_ERROR_NONE != ret){
+        LOGD("preference_set_int error!(%d)", ret);
+    }
+
+#else
+    ret = vconf_set_int(VCONFKEY_ISE_STT_LANGUAGE, (int) type);
+    if (ret != 0) {
+        LOGD("Vconf_set_int error!(%d)", ret);
+        return;
+    }
+#endif
+    LOGD("language type (%d)", type);
+
+    // Update string
+}
+
+void _stt_lang_changed_cb(keynode_t *key, void* data)
+{
+    get_stt_default_language();
+    return;
+}
+
+int is_lang_supported_by_stt(char lang[])
+{
+    /* to check if the language is supported by stt */
+    int index;
+    for (index = (sizeof(supported_language) / sizeof(supported_language[0]))-1; index != 0; index--)
+    {
+        if (!strcmp(lang, supported_language[index])) {
+            LOGD("current lang supported (%s)", supported_language[index]);
+            return TRUE;
+        }
+    }
+
+    LOGD("current lang not supported (%s)", lang);
+
+    return FALSE;
+}
+
+char * get_stt_default_language()
+{
+    STT_VOICE_LANGUAGE_N66_I stt_lang;
+    stt_lang = (STT_VOICE_LANGUAGE_N66_I)get_language_value();
+    char *kbd_lang;
+
+    LOGD("language type (%d)", stt_lang);
+
+    switch(stt_lang) {
+        case STT_VOICE_N66_AUTO :
+            {
+                stt_get_default_language(g_stt, &kbd_lang);
+
+                // get system display language
+                char* value = NULL;
+                value = vconf_get_str(VCONFKEY_LANGSET);
+                if (NULL == value) {
+                    LOGD("Fail to get display language");
+                    return NULL;
+                }
+                LOGD("system language (%s)", value);
+
+                char system_lang[6] = {0, };
+                strncpy(system_lang, value , 5);
+                free(value);
+
+                // confirm whether the system language is supported by stt engine or not.
+                // if supported, set the language
+                // otherwise, set language to en_US
+                if (is_lang_supported_by_stt(system_lang) == TRUE) {
+                    kbd_lang = strdup(system_lang);
+                    LOGD("Set auto language (%s)", system_lang);
+                } else {
+                    kbd_lang = strdup("en_US");
+                    LOGD("System language is not supported by STT (%s), en_US will be set", system_lang);
+                }
+            }
+            break;
+        case STT_VOICE_N66_EN_US :
+        case STT_VOICE_N66_ES_US :
+        case STT_VOICE_N66_FR_FR :
+        case STT_VOICE_N66_JA_JP :
+        case STT_VOICE_N66_KO_KR :
+        case STT_VOICE_N66_ZH_CN :
+            {
+                kbd_lang = strdup(supported_language[stt_lang]);
+            }
+            break;
+        default :
+            kbd_lang = strdup("en_US");
+            break;
+    }
+
+    LOGD("stt language (%s)", kbd_lang);
+    language = strdup(kbd_lang);
+
+    return language;
+}
+
+static char *__get_genlist_title_label(void *data, Evas_Object *obj, const char *part)
+{
+    return strdup(_("IDS_VOICE_OPT_LANGUAGE_ABB"));
+}
+
+char *__get_genlist_item_label(void *data, Evas_Object *obj, const char *part)
+{
+    char text[128] = {0, };
+
+    if (!strcmp(part, "elm.text"))
+    {
+        if ((int)data == 0) {
+            return strdup(_("IDS_VC_BODY_AUTOMATIC"));
+        } else {
+            char *s = NULL;
+            s = (char *)disp_lang_array[(int)data];
+
+            if (s) {
+                char *p = strchr(s, '(');
+                if (p) {
+                    strncpy(text, s, p-s);
+                } else {
+                    strncpy(text, s, strlen(s));
+                }
+            } else {
+                strncpy(text, "", strlen(""));
+            }
+        }
+        return strdup(text);
+    } else if (!strcmp(part, "elm.text.1")) {
+        if ((int)data == 0) {
+            char* value = NULL;
+            value = vconf_get_str(VCONFKEY_LANGSET);
+            if (NULL == value) {
+                LOGD("Fail to get display language");
+                return NULL;
+            }
+            LOGD("system language (%s)", value);
+
+            char system_lang[6] = {0, };
+            strncpy(system_lang, value , 5);
+            free(value);
+
+            // confirm whether the system language is supported by stt engine or not.
+            // if supported, set the language
+            // otherwise, set language to en_US
+            return strdup(get_lang_label(system_lang));
+
+        } else {
+            char *s = NULL;
+            s = (char *)disp_lang_array[(int)data];
+
+            if (s) {
+                char *p = strchr(s, '(');
+                if (p) {
+                    strncpy(text, p+1, strlen(s)-(p-s)-2);
+                } else {
+                    strncpy(text, s, strlen(s));
+                }
+            } else {
+                strncpy(text, "", strlen(""));
+            }
+            return strdup(text);
+        }
+    }
+    return NULL;
+}
+
+static Evas_Object *__get_genlist_item_content(void *data, Evas_Object *obj, const char *part)
+{
+    int index = (int)data;
+    Evas_Object * content = NULL;
+
+    if (!strcmp(part, "elm.icon")) {
+        content = elm_radio_add(obj);
+        elm_radio_state_value_set(content, index);
+        elm_radio_group_add(content, radio_gp);
+        evas_object_size_hint_weight_set(content, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+        evas_object_propagate_events_set(content, EINA_TRUE);
+        evas_object_size_hint_align_set(content, EVAS_HINT_FILL, EVAS_HINT_FILL);
+        elm_object_style_set(content, "list");
+    }
+    return content;
+}
+
+static void language_set_genlist_radio_cb(void *data, Evas_Object *obj, void *event_info)
+{
+    if (!data) return;
+
+    int index = 0;
+
+    Elm_Object_Item * item = (Elm_Object_Item *) event_info;
+    if (item) {
+        elm_genlist_item_selected_set(item, 0);
+        index = (int)elm_object_item_data_get(item);
+        elm_genlist_item_update(item);
+    }
+    set_language_value(index);
+
+    elm_radio_value_set(radio_gp, index);
+    ecore_timer_add(0.3, close_setting_window_idler_cb, NULL);
+}
+
+static void close_setting_window()
+{
+    elm_naviframe_item_pop(g_setting_naviframe);
+    g_setting_naviframe = NULL;
+    evas_object_del(g_setting_window);
+    g_setting_window = NULL;
+    vconf_ignore_key_changed(VCONFKEY_ISE_STT_LANGUAGE, _stt_lang_changed_cb);
+}
+
+static Eina_Bool close_setting_window_idler_cb(void *data)
+{
+    LOGD("close_setting_window_idler_cb");
+    close_setting_window();
+
+    return ECORE_CALLBACK_CANCEL;
+}
+
+static void _naviframe_back_cb(void *data, Evas_Object *obj, void *event_info)
+{
+    Elm_Object_Item *top_it = elm_naviframe_top_item_get(obj);
+    Elm_Object_Item *bottom_it = elm_naviframe_bottom_item_get(obj);
+    if (top_it && bottom_it &&
+            (elm_object_item_content_get(top_it) == elm_object_item_content_get(bottom_it))) {
+        close_setting_window();
+    } else {
+        elm_naviframe_item_pop(obj);
+    }
+}
+
+static void language_changed_cb2(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+    if (!obj) return;
+    elm_genlist_realized_items_update(obj);
+}
+
+static Evas_Object *create_language_list(Evas_Object *parent)
+{
+    if (!parent) return NULL;
+
+    Evas_Object *genlist = elm_genlist_add(parent);
+    if (!genlist) return NULL;
+
+    elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
+    elm_genlist_homogeneous_set(genlist, EINA_TRUE);
+#ifdef _CIRCLE
+    Evas_Object *circle_language_genlist = eext_circle_object_genlist_add(genlist, NULL);
+    eext_circle_object_genlist_scroller_policy_set(circle_language_genlist, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
+    evas_object_resize(circle_language_genlist, 360, 360);
+    evas_object_show(circle_language_genlist);
+    eext_rotary_object_event_activated_set(circle_language_genlist, EINA_TRUE);
+#else
+    evas_object_show(genlist);
+#endif
+    int i = 0;
+    int lang_val = 0;
+    Elm_Object_Item * item = NULL;
+
+    evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+    radio_gp = elm_radio_add(genlist);
+    elm_radio_state_value_set(radio_gp, -1);
+
+    lang_val = get_language_value();
+
+    //Title
+    itc_title.item_style = "title";
+    itc_title.func.text_get = __get_genlist_title_label;
+    itc_title.func.content_get = NULL;
+
+    elm_genlist_item_append(genlist, &itc_title, (void *)-1, NULL, ELM_GENLIST_ITEM_GROUP, NULL, genlist);
+
+    // 2 line text
+#ifdef _WEARABLE
+    itc_2text.item_style = "2text.1icon.1/sub1.multiline";
+#else
+    itc_2text.item_style = "type1";
+#endif
+    itc_2text.func.text_get = __get_genlist_item_label;
+    itc_2text.func.content_get = __get_genlist_item_content;
+
+
+    item = item_append(genlist, itc_2text, (void *)0, language_set_genlist_radio_cb, genlist); // AUTO
+
+    if (lang_val == i) {
+        LOGD("%d item is choiced.", i);
+        elm_genlist_item_show(item, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE);
+    }
+
+    if ( item == NULL ) {
+        LOGD("elm_genlist_item_append was failed");
+    }
+
+    // 1 line text
+#ifdef _WEARABLE
+    itc_1text.item_style = "1text.1icon.1";
+#else
+    itc_1text.item_style = "type1";
+#endif
+    itc_1text.func.text_get = __get_genlist_item_label;
+    itc_1text.func.content_get = __get_genlist_item_content;
+
+    for (i = 1; i < 7; i++)
+    {
+        char *s = (char *)disp_lang_array[i];
+
+        if (strchr(s, '(')){
+            item = item_append(genlist, itc_1text, i, language_set_genlist_radio_cb, genlist);
+        } else {
+            item = item_append(genlist, itc_1text, i, language_set_genlist_radio_cb, genlist);
+        }
+
+        if (lang_val == i) {
+            LOGD("%d item is choiced.", i);
+            elm_genlist_item_show(item, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE);
+        }
+
+        if ( item == NULL ) {
+            LOGD("elm_genlist_item_append was failed");
+            break;
+        }
+    }
+    Elm_Object_Item *dummy;
+    Elm_Genlist_Item_Class *itc_dummy = elm_genlist_item_class_new();
+    itc_dummy->item_style = "title";
+    itc_dummy->func.text_get = NULL;
+    itc_dummy->func.content_get = NULL;
+    dummy = elm_genlist_item_append(genlist, itc_dummy, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+    elm_genlist_item_select_mode_set(dummy, ELM_OBJECT_SELECT_MODE_NONE);
+
+    LOGD("before elm_radio_value_set > lang_val = %d", lang_val);
+    radio_gp = elm_radio_add(genlist);
+    elm_radio_state_value_set(radio_gp, lang_val);
+    elm_radio_value_set(radio_gp, lang_val);
+
+    elm_object_signal_callback_add(genlist, "elm,system,language,change", "elm", language_changed_cb2, NULL);
+
+    return genlist;
+}
+
+void create_setting_window()
+{
+    ise_stt_finish();
+
+    Evas_Object *window = NULL;
+    Evas_Object *layout = NULL;
+    Evas_Object *genlist = NULL;
+    Evas_Object *naviframe = NULL;
+
+    window = elm_win_add(NULL, "voice-input-setting", ELM_WIN_BASIC);
+    if (!window) {
+        LOGD("it's fail to create window.");
+        return;
+    }
+
+    elm_win_indicator_mode_set(window, ELM_WIN_INDICATOR_HIDE);
+
+    layout = elm_layout_add(window);
+    if (layout) {
+        elm_layout_theme_set(layout, "layout", "application", "default");
+        evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+        evas_object_show(layout);
+        elm_win_resize_object_add(window, layout);
+    }
+
+    elm_win_activate(window);
+    evas_object_show(window);
+
+    naviframe = elm_naviframe_add(layout);
+    if (naviframe == NULL){
+        LOGD("create navi_frame failed");
+    }
+
+    eext_object_event_callback_add(naviframe, EEXT_CALLBACK_BACK, _naviframe_back_cb, NULL);
+
+    elm_object_part_content_set(layout, "elm.swallow.content", naviframe);
+
+    genlist = create_language_list(naviframe);
+
+    elm_naviframe_item_push(naviframe, NULL, NULL, NULL, genlist, "empty");
+
+    g_setting_naviframe = naviframe;
+    g_setting_window = window;
+}
+
index f824886..16c0060 100644 (file)
 #include "candidate-factory.h"
 #include "ise-emoticon-mode.h"
 #include "cbhm.h"
+#include "ise-stt-engine.h"
+#include "ise-stt-mode.h"
+#include "ise-stt-option.h"
+#include <stt.h>
 
 #define CANDIDATE_WINDOW_HEIGHT 84
 using namespace scl;
@@ -133,13 +137,14 @@ static ISELanguageManager _language_manager;
 #define MVK_Shift_Enable 0x9fe7
 #define MVK_Shift_Disable 0x9fe8
 
-#define CM_KEY_LIST_SIZE         3
+#define CM_KEY_LIST_SIZE         4
 #define USER_KEYSTRING_OPTION    "OPTION"
 #define USER_KEYSTRING_EMOTICON  "EMOTICON_LAYOUT"
 #define USER_KEYSTRING_CLIPBOARD "CLIPBOARD"
+#define USER_VOICE_LANGUAGE     "LANGUAGE"
 
 static sclboolean           _cm_popup_opened = FALSE;
-static const char          *_cm_key_list[CM_KEY_LIST_SIZE] = {USER_KEYSTRING_OPTION, USER_KEYSTRING_EMOTICON, USER_KEYSTRING_CLIPBOARD};
+static const char          *_cm_key_list[CM_KEY_LIST_SIZE] = {USER_KEYSTRING_OPTION, USER_KEYSTRING_EMOTICON, USER_KEYSTRING_CLIPBOARD, USER_VOICE_LANGUAGE};
 static scluint              _current_cm_key_id = 0;
 
 /*
@@ -965,7 +970,9 @@ SCLEventReturnType CUIEventCallback::on_event_key_clicked(SclUIEventDesc event_d
                 break;
            }
         case KEY_TYPE_MODECHANGE:
-            if (strcmp(event_desc.key_value, USER_KEYSTRING_OPTION) == 0) {
+            if (strcmp(event_desc.key_value, USER_VOICE_LANGUAGE) == 0) {
+                create_setting_window();
+            } else if (strcmp(event_desc.key_value, USER_KEYSTRING_OPTION) == 0) {
                 if (!option_window_is_available (OPTION_WINDOW_TYPE_NORMAL))
                     g_core.create_option_window();
                 ret = SCL_EVENT_DONE;
@@ -1304,6 +1311,16 @@ ise_show(int ic)
     }
 
     g_keyboard_state.visible_state = TRUE;
+
+#ifdef _WEARABLE
+    if (g_keyboard_state.layout == ISE_LAYOUT_STYLE_TERMINAL) {
+        ise_stt_start();
+        ise_show_stt_mode(NATIVE_WINDOW_CAST(g_core.get_main_window()));
+    } else {
+        ise_stt_finish();
+        ise_hide_stt_mode();
+    }
+#endif
 }
 
 /**