Evas_Object *getMoreOptionLayout(){return more_option_layout;};
+ static void moreOptionOpened(void *data, Evas_Object * obj, void *event_info);
+ static void moreOptionClosed(void *data, Evas_Object * obj, void *event_info);
+
+ static void moreItemClicked(void *data, Evas_Object * obj, void *event_info);
+ static void moreItemSelected(void *data, Evas_Object * obj, void *event_info);
+ Eina_Bool isMoreOptionOpened(){ return option_opened;};
+ Eina_Bool discard_popup_opened;
+
private :
/**
* Main layout
*
*/
Evas_Object *AddLanguageIcon(Evas_Object *parent);
+
+ /**
+ * Show /Hide Cue button of More Option.
+ *
+ */
+ void hideCue();
+ void showCue();
};
Evas_Object *progressbar; //progressbar
Evas_Object *scroller; //scroller
Evas_Object *main_entry; //entry
- Evas_Object *mic_button; //MIC button
+ Evas_Object *bottom_button; //bottom button
SttStateVal state;
char *kbd_lang;
+ Ecore_Timer *setup_timer;
Ecore_Timer *start_timer;
Ecore_Timer *refresh_timer;
- Ecore_Timer *progressbar_timer;
Ecore_Timer *textblock_timer;
- Ecore_Timer *guide_text_timer;
- Ecore_Timer *btn_disabling_timer;
Ecore_Timer *power_unlock_timer;
std::vector<std::string> stt_results;
void show_voice_input(Evas_Object *parent, const char *lang, void (*get_string)(char *, int));
void pause_voice();
+void resume_voice();
void destroy_voice();
int is_lang_supported_by_voice_input(const char *lang);
void ise_show_stt_popup(void *data);
int is_lang_supported_by_stt(char lang[]);
Evas_Object *show_voice_window(Evas_Object *parent, VoiceData *voicedata);
void on_stt_pause(VoiceData *voicedata);
+void on_stt_resume(VoiceData *voicedata);
void on_destroy(VoiceData *voicedata);
const char* get_lang_label(char lang[]);
void _stt_lang_changed_cb(keynode_t *key, void* data);
void start_by_press(VoiceData *voicedata);
+void restart_listening(double in);
void voice_get_string(const char *keyValue, VoiceData *voicedata);
void create_setting_window(Evas_Object *more_option_layout);
void activate_circle_scroller_for_stt_textbox(void* data, Eina_Bool bActivate);
void stt_feedback_deinitialize();
void show_error_message(VoiceData *voicedata, stt_error_e reason);
void powerUnlock(void);
+Evas_Object *create_text_detiled_view(Evas_Object *parent);
+bool is_textblock_empty(void *data);
+void set_textblock_empty(void *data);
+void show_bottom_button(void* data, bool delayed);
+void hide_bottom_button(void* data);
#endif /* W_INPUT_STT_VOICE_H_ */
msgstr "Quick responses"
msgid "IDS_AMEMO_BUTTON_SEND"
-msgstr "Send"
+msgstr "SEND"
msgid "IDS_IME_BODY_OK_HAND_SIGN_M_EMOTICON_NAME_TTS"
msgstr "OK hand sign"
#include "w-input-stt-button.edc"
#define VOICE_CANDIDATE_AREA_HEIGHT 56
-#define BUTTON_TEXT_SIZE_INC 85
+#define BUTTON_TEXT_SIZE_INC 80
collections
{
* web: http://slp-info.sec.samsung.net/gerrit/plugins/gitiles/magnolia/framework/system/libsvi
*/
}
- plugin {
- name: "haptic_tap";
- source: "feedback";
- param: "FEEDBACK_TYPE_VIBRATION FEEDBACK_PATTERN_TAP";
- }
}
images {
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, "./b_stt_icon_btn.png" COMP;
image, "./b_stt_confirm_icon.png" COMP;
image, "./b_stt_send_icon.png" COMP;
+ image, "./wi_stt_icon_error.png" COMP;
}
color_classes
{
name: "AT0114";
# color: 0 0 0 100;
- color: 128 128 128 100;
+ color: 128 128 128 100;
}
color_class
{
tag, "b" "+ font=Tizen:style=Bold";
tag, "tab" "\t";
}
+ style { name: "button_general_text_normal";
+ base: "font=Tizen:style=Regular font_size="BUTTON_TEXT_SIZE_INC" align=center color=#FFFFFF ellipsis=0.0 wrap=mixed";
+ }
style { name: "button_general_text_dim";
base: "font=Tizen:style=Regular font_size="BUTTON_TEXT_SIZE_INC" align=center color=#FFFFFF ellipsis=0.0 wrap=mixed";
}
style { name: "button_general_text_press";
base: "font=Tizen:style=Regular font_size="BUTTON_TEXT_SIZE_INC" align=center color=#888888 ellipsis=0.0 wrap=mixed";
}
- style { name: "button_general_text_normal";
- base: "font=Tizen:style=Regular font_size="BUTTON_TEXT_SIZE_INC" align=center color=#FFFFFF ellipsis=0.0 wrap=mixed";
+ style { name: "button_send_text_normal";
+ base: "font=Tizen:style=Regular font_size="BUTTON_TEXT_SIZE_INC" align=center color=#FFFFFF color_class=AT0117 ellipsis=0.0 wrap=mixed";
+ }
+ style { name: "button_cue_text_normal";
+ base: "font=Tizen:style=Regular font_size="BUTTON_TEXT_SIZE_INC" align=center color=#FFFFFF color_class=AT032 ellipsis=0.0 wrap=mixed";
+ }
+ style { name: "button_bottom_text_normal";
+ base: "font=Tizen:style=Regular font_size=26 align=center color=#FFFFFF color_class=AT0118";
}
}
}
part
{
+ name, "access_bg";
+ type, SWALLOW;
+ scale, 1;
+ description
+ {
+ state, "default" 0.0;
+ visible, 1;
+ min, 360 360;
+ max, 360 360;
+ rel1.to, "bg";
+ rel2.to, "bg";
+ }
+ }
+ part
+ {
name, "top_block";
type, SPACER;
scale, 1;
to, "bg";
}
}
+ description
+ {
+ state, "hide" 0.0;
+ min, 360 360;
+ align, 0.5 0;
+ rel1
+ {
+ relative, 0.0 0.0;
+ to, "bg";
+ }
+ rel2
+ {
+ relative, 1.0 0.0;
+ to, "bg";
+ }
+ }
+
}
part
{
state, "default" 0.0;
align, 0.5 1;
- min, 282 (360-103);
- max, 282 (360-103);
+ min, 282 360;
+ max, 282 360;
rel1
{
relative, 39/360 1;
- to, "top_block";
- offset, 0 -1;
+ to, "bg";
}
rel2
{
relative, 321/360 1;
- to, "top_block";
- offset, 0 -1;
+ to, "bg";
}
}
}
description
{
state, "default" 0.0;
- min, 360 100;
- max, 360 100;
+ min, 360 78;
+ max, 360 78;
rel1
{
- relative, 0 260/360;
+ relative, 0 (360-78)/360;
to, "bg";
}
rel2
}
description
{
+ state, "hide" 0.0;
+ min, 360 78;
+ max, 360 78;
+ rel1
+ {
+ relative, 0 1;
+ to, "bg";
+ }
+ rel2
+ {
+ relative, 1 (360+78)/360;
+ 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;
}
}
-
part
{
name, "EFFECT_BG";
}
}
-
+ //Part for mic button
part
{
- name, "MIC_ICON";
- type, IMAGE;
+ name, "BOTTOM_BUTTON";
+ type, SWALLOW;
+ scale, 1;
+ description
+ {
+ state, "default" 0.0;
+ visible, 1;
+ min, 290 78;
+ max, 290 78;
+ 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 26/100;
+ relative, 155/360 27/100;
to, "background";
}
rel2
{
- relative, 205/360 76/100;
+ relative, 205/360 77/100;
to, "background";
}
- image.normal, "./input_ic_voice_mic.png";
}
description
{
- state, "recording" 0.0;
+ state, "message" 0.0;
inherit, "default" 0.0;
- visible, 0;
}
description
{
state, "processing" 0.0;
inherit, "default" 0.0;
- visible, 0;
+ visible, 1;
+ }
}
+
+ part
+ {
+ name, "cue_text_block";
+ type, SPACER;
description
{
- state, "message" 0.0;
- inherit, "default" 0.0;
+ state, "default" 0.0;
+ align, 0.5 0;
rel1
{
- relative, 155/360 41/100;
- to, "background";
+ relative, 30/360 158/360;
+ to, "bg";
}
rel2
{
- relative, 205/360 91/100;
- to, "background";
+ relative, (360-30)/360 (158+43)/360;
+ to, "bg";
+ }
+ }
+ }
+
+ part
+ {
+ name, "elm.text.cue";
+ type, TEXTBLOCK;
+ mouse_events, 0;
+ scale, 1;
+ description
+ {
+ state, "default" 0.0;
+ visible, 0;
+ rel1.to, "cue_text_block";
+ rel2.to, "cue_text_block";
+ text
+ {
+ fit: 1 1;
+ style, "button_cue_text_normal";
}
+ }
+ description
+ {
+ state, "show" 0.0;
visible, 1;
+ align, 0.5 0.6;
+ rel1.to, "cue_text_block";
+ rel2.to, "cue_text_block";
+ text
+ {
+ fit: 1 1;
+ style, "button_cue_text_normal";
+ }
+ }
+ }
+
+ part
+ {
+ name, "guide_text_block_left_padding";
+ type, SPACER;
+ description
+ {
+ state, "default" 0.0;
+ min, (80+28+8) 0;
+ max, (80+28+8) -1;
+ fixed, 1 0;
+ align, 0.0 0.0;
+ rel1
+ {
+ relative, 0 (360-70)/360;
+ to, "bg";
+ }
+ rel2
+ {
+ relative, 0 (360-33)/360;
+ to, "bg";
}
}
+ }
+ part
+ {
+ name, "guide_text_block_right_padding";
+ type, SPACER;
+ description
+ {
+ state, "default" 0.0;
+ min, 80 0;
+ max, 80 -1;
+ fixed, 1 0;
+ align, 1.0 0.0;
+ rel1
+ {
+ relative, 1 (360-70)/360;
+ to, "bg";
+ }
+ rel2
+ {
+ relative, 1 (360-33)/360;
+ to, "bg";
+ }
+ }
+ }
- //Part for mic button
part
{
- name, "MIC";
- type, SWALLOW;
- scale, 1;
+ name, "guide_text_block";
+ type, SPACER;
description
{
state, "default" 0.0;
- visible, 1;
- min, 290 100;
- max, 290 100;
+ align, 0.5 0;
rel1
{
- relative, 35/360 0.0;
- to, "background";
+ relative, 1.0 0.0;
+ to, "guide_text_block_left_padding";
}
rel2
{
- relative, 325/360 1.0;
- to, "background";
+ relative, 0.0 1.0;
+ to, "guide_text_block_right_padding";
}
}
+
}
part
{
- name, "PROGRESS_BAR";
- type, SWALLOW;
+ name, "elm.text";
+ type, TEXTBLOCK;
+ mouse_events, 0;
scale, 1;
description
{
state, "default" 0.0;
- min, 50 50;
- max, 50 50;
+ min, 0 37;
+ max, -1 37;
+ fixed, 0 1;
+ align, 0.5 0.5;
+ text {
+ min, 0 1;
+ max, 1 1;
+ ellipsis, -1.0;
+ fade_ellipsis, 1.0;
+ style, "button_bottom_text_normal";
+ }
visible, 0;
rel1
{
- relative, 155/360 27/100;
- to, "background";
+ relative, 0.0 0.0;
+ to, "guide_text_block";
}
rel2
{
- relative, 205/360 77/100;
- to, "background";
+ relative, 1.0 1.0;
+ to, "guide_text_block";
}
}
description
{
- state, "message" 0.0;
- inherit, "default" 0.0;
+ state, "show" 0.0;
+ inherit, "default";
+ visible, 1;
+ }
}
+ part
+ {
+ name, "guide_text_block_icon_padding";
+ type, SPACER;
description
{
- state, "processing" 0.0;
- inherit, "default" 0.0;
- visible, 1;
+ state, "default" 0.0;
+ min, 8 0;
+ max, 8 -1;
+ fixed, 1 0;
+ align, 1.0 0.0;
+ rel1
+ {
+ relative, 0 0;
+ to, "elm.text";
+ }
+ rel2
+ {
+ relative, 0 1;
+ to, "elm.text";
}
}
+ }
part
{
- name, "guide_text_block";
+ name, "error_icon";
+ type, IMAGE;
+ description
+ {
+ state, "default" 0.0;
+ min, 28 37;
+ max, 28 37;
+ align, 1.0 0.5;
+ rel1
+ {
+ relative, 0.0 0.0;
+ to, "guide_text_block_icon_padding";
+ }
+ rel2
+ {
+ relative, 0.0 1.0;
+ to, "guide_text_block_icon_padding";
+ }
+ image.normal, "./wi_stt_icon_error.png";
+ color_class, "AO015";
+ visible, 0;
+ }
+ description
+ {
+ state, "show" 0.0;
+ inherit, "default";
+ visible, 1;
+ }
+ }
+ part
+ {
+ name, "send_text_block";
type, SPACER;
description
{
align, 0.5 0;
rel1
{
- relative, 39/360 140/360;
- to, "bg";
+ relative, 105/360 5/78;
+ to, "background";
}
rel2
{
- relative, (360-39)/360 (140+42)/360;
- to, "bg";
+ relative, (360-105)/360 (78-38)/78;
+ to, "background";
}
}
description
{
- state, "bottom" 0.0;
+ state, "expand" 0.0;
align, 0.5 0;
rel1
{
- relative, 74/360 (360-91)/360;
- to, "bg";
+ relative, 84/360 18/78;
+ to, "background";
}
rel2
{
- relative, (360-74)/360 (360-57)/360;
- to, "bg";
- }
+ relative, (360-82)/360 (78-23)/78;
+ to, "background";
}
}
+ }
part
{
- name, "elm.text";
+ name, "elm.text.send";
type, TEXTBLOCK;
mouse_events, 0;
scale, 1;
{
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;
+ align, 0.5 0.5;
+ rel1.to, "send_text_block";
+ rel2.to, "send_text_block";
text
{
fit: 1 1;
- style, "textblock_style_bottom";
+ style, "button_send_text_normal";
}
- color, 120 120 120 120;
}
}
+
}
programs
program
{
- name, "listening";
- signal, "elm,state,listening";
+ name, "cue_text_show";
+ signal, "idle,state,cue_text,visible";
source, "elm";
- action, STATE_SET "recording" 0.0;
- target, "MIC_ICON";
+ action, STATE_SET "show" 0.0;
+ target, "elm.text.cue";
+ after: "cue_text_hide";
}
program
{
- name, "start_processing";
- signal, "elm,state,processing";
+ name, "cue_text_hide";
+ signal, "idle,state,cue_text,hidden";
source, "elm";
- action, STATE_SET "processing" 0.0;
- target, "PROGRESS_BAR";
- target, "MIC_ICON";
- transition, DECELERATE 0.3;
+ in, 2.0 0.0;
+ action, STATE_SET "default" 0.0;
+ target, "elm.text.cue";
}
program
{
- name, "idle";
- signal, "elm,state,init";
+ name, "text_show";
+ signal, "idle,state,text,visible";
source, "elm";
- action, STATE_SET "default" 0.0;
- target, "PROGRESS_BAR";
- target, "MIC_ICON";
- transition, DECELERATE 0.3;
+ action, STATE_SET "show" 0.0;
+ target, "elm.text";
+ target, "error_icon";
+ after: "text_hide_delayed";
}
+
program
{
- name, "idle_message";
- signal, "elm,state,init_message";
+ name, "text_hide";
+ signal, "idle,state,text,hidden";
source, "elm";
- action, STATE_SET "message" 0.0;
- target, "PROGRESS_BAR";
- target, "MIC_ICON";
+ action, STATE_SET "default" 0.0;
+ target, "elm.text";
+ target, "error_icon";
}
program
{
- name, "text_show";
- signal, "idle,state,text,visible";
+ name, "text_hide_delayed";
+ signal, "idle,state,text,hidden,delayed";
source, "elm";
- action, STATE_SET "expand" 0.0;
+ in, 2.0 0.0;
+ action, STATE_SET "default" 0.0;
target, "elm.text";
+ target, "error_icon";
}
program
{
- name, "text_hide";
- signal, "idle,state,text,hidden";
+ name, "contract_send_text";
+ signal, "idle,state,send,text,contract";
source, "elm";
action, STATE_SET "default" 0.0;
- target, "elm.text";
+ target, "send_text_block";
+
+ }
+ program
+ {
+ name, "expand_send_text";
+ signal, "idle,state,send,text,expand";
+ source, "elm";
+ action, STATE_SET "expand" 0.0;
+ target, "send_text_block";
+
}
program
{
target, "EFFECT_BG";
}
+ // Button
program
{
- name, "guide_text_up";
- signal, "idle,state,guide_text,up";
+ name, "bottom_button_show";
+ signal, "idle,state,show,bottom_button";
source, "elm";
action, STATE_SET "default" 0.0;
- target, "guide_text_block";
+ target, "background";
+ transition, DECELERATE 0.2;
}
program
{
- name, "guide_text_bottom";
- signal, "idle,state,guide_text,bottom";
+ name, "bottom_button_show_delayed";
+ signal, "idle,state,show,bottom_button,delayed";
source, "elm";
- action, STATE_SET "bottom" 0.0;
- target, "guide_text_block";
+ in, 2.0 0.0;
+ action, STATE_SET "default" 0.0;
+ target, "background";
+ transition, DECELERATE 0.2;
}
-
+ program
+ {
+ name, "bottom_button_hide";
+ signal, "idle,state,hide,bottom_button";
+ source, "elm";
+ action, STATE_SET "hide" 0.0;
+ target, "background";
+ transition, DECELERATE 0.2;
+ }
+ // EFFECT Area
+ program
+ {
+ name, "bottom_effect_show";
+ signal, "idle,state,show,effect";
+ source, "elm";
+ action, STATE_SET "default" 0.0;
+ target, "EFFECT_BG_AREA";
+ transition, DECELERATE 0.2;
+ }
+ program
+ {
+ name, "bottom_effect_hide";
+ signal, "idle,state,hide,effect";
+ source, "elm";
+ action, STATE_SET "hide" 0.0;
+ target, "EFFECT_BG_AREA";
+ transition, DECELERATE 0.2;
+ }
}
}
type: SWALLOW;
description { state: "default" 0.0;
min: 282 39;
- color, 120 120 120 120;
+ align: 0.5 1;
+ rel1
+ {
+ relative, 0.0 1.0;
+ }
+ rel2
+ {
+ relative, 1.0 1.0;
+ }
}
}
}
relative, 1.0 1.0;
}
visible: 1;
- color, 120 120 120 120;
+ color: 0 0 0 255;
}
}
part { name: "padding_top";
align: 0.0 0.0;
rel1.relative: 0.0 0.0;
rel2.relative: 1.0 0.0;
- min: 0 20;
+ min: 0 24;
fixed: 1 1;
}
}
-#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
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);
+ //set_state(PART:"bg_image", "pressed", 0.0);
+ set_state(PART:"elm.swallow.content.clip", "pressed", 0.0);
emit("elm,action,press", "");
}
}
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);
+ //set_state(PART:"bg_image", "default", 0.0);
+ set_state(PART:"elm.swallow.content.clip", "default", 0.0);
emit("elm,action,unpress", "");
}
}
program { name: "icon_hide";
signal: "elm,state,icon,hidden";
source: "elm";
- action: STATE_SET "default" 0.0;
+ action: STATE_SET "visible" 0.0;
target: "elm.swallow.content";
target: "icon_rect";
}
}
}
- group { name: "elm/button/base/ime_button_stt_confirm";
- inherit: "elm/button/base/ime_button";
- parts {
- part { name: "bg";
- type: IMAGE;
- scale: 1;
- description { state: "default" 0.0;
- min: 0 0;
- color_class: "AO015L2";
- visible: 0;
- image.normal: "./b_stt_icon_btn.png";
- }
- description { state: "pressed" 0.0;
- inherit: "default" 0.0;
- color_class: "AO015L2P";
- }
- description { state: "disabled" 0.0;
- inherit: "default" 0.0;
- color_class: "AO015L2D";
- }
- }
- part { name: "elm.swallow.content.clip";
- type: RECT;
- scale: 1;
- description { state: "default" 0.0;
- color_class: "AO015L2";
- }
- description { state: "pressed" 0.0;
- inherit: "default" 0.0;
- color_class: "AO015L2P";
- }
- description { state: "disabled" 0.0;
- inherit: "default" 0.0;
- color_class: "AO015L2D";
- }
- }
- }
- }
-
group { name: "elm/button/base/touch_area";
inherit: "elm/button/base/default";
parts {
to: "padding_right_bottom";
}
text {
- min: 1 0;
+ max: 1 0;
style: "button_general_text_normal";
}
}
rel2 {relative: 1.0 1.0; to: "title_bg"; }
}
}
+ part { name: "left_padding_content";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 33 0;
+ max: 33 -1;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.0; to: "base"; }
+ rel2 { relative: 0.0 1.0; to: "base"; }
+ visible: 0;
+ color: 255 0 0 100;
+ }
+ }
+ part { name: "right_padding_content";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 33 0;
+ max: 33 -1;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ rel1 { relative: 1.0 0.0; to: "base"; }
+ rel2 { relative: 1.0 1.0; to: "base"; }
+ visible: 0;
+ color: 0 255 0 100;
+ }
+ }
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"; }
+ rel1 { relative: 1.0 1.0; to_x: "left_padding_content"; to_y: "title_expand"; }
+ rel2 { relative: 0.0 0.0; to_x: "right_padding_content"; to_y: "button_padding"; }
}
}
part { name: "elm.swallow.circle_bg";
image, "./b_ic_press_full_circle_bg.png" COMP;
}
-group { name: "elm/panel/right1/default";
+group { name: "elm/panel/right/default";
script {
public mouse_down = 0;
public mouse_click = 0;
}
}
-group { name: "elm/panel/left1/default";
- inherit: "elm/panel/right1/default";
+group { name: "elm/panel/left/default";
+ inherit: "elm/panel/right/default";
parts {
part { name: "cue.padding";
type: SPACER;
}
}
-group { name: "elm/panel/left_sending/default";
- inherit: "elm/panel/left1/default";
+group { name: "elm/panel/left/sending";
+ inherit: "elm/panel/left/default";
parts {
part { name: "cue.padding";
type: SPACER;
}
}
-group { name: "elm/panel/left_confirm/default";
- inherit: "elm/panel/left_sending/default";
+group { name: "elm/panel/left/confirm";
+ inherit: "elm/panel/left/sending";
parts {
part { name: "cue";
description { state: "default" 0.0;
using namespace std;
extern Evas_Object *g_setting_window;
+static bool voice_input_back_agree = false;
+
+static void
+popup_hide_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ if (!obj) return;
+ elm_popup_dismiss(obj);
+}
+
+static void
+popup_hide_finished_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ if (!obj) return;
+ evas_object_del(obj);
+}
+
+static void voice_input_back_disagree_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ if(!obj) return;
+ if(!data) return;
+
+ VoiceData *voicedata = (VoiceData *)data;
+ Evas_Object *popup = (Evas_Object *)evas_object_data_get(obj, "popup");
+
+ voicedata->mo->discard_popup_opened = EINA_FALSE;
+
+ if (popup)
+ elm_popup_dismiss(popup);
+}
+
+static void voice_input_back_agree_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ if(!obj) return;
+ if(!data) return;
+
+ VoiceData *voicedata = (VoiceData *)data;
+ Evas_Object *popup = (Evas_Object *)evas_object_data_get(obj, "popup");
+
+ voicedata->mo->discard_popup_opened = EINA_FALSE;
+
+ if (popup)
+ elm_popup_dismiss(popup);
+
+ if(voicedata->naviframe){
+ voice_input_back_agree = true;
+
+ if(voicedata->disclaimer == 1){
+ voicedata->disclaimer = 0;
+ elm_naviframe_item_pop_to(elm_naviframe_bottom_item_get(voicedata->naviframe));
+ } else {
+ elm_naviframe_item_pop(voicedata->naviframe);
+ }
+ }
+}
+
+static void show_discard_popup(void *data)
+{
+ if(!data) return;
+
+ VoiceData *voicedata = (VoiceData *)data;
+
+ Evas_Object *popup = NULL;
+ Evas_Object *layout = NULL;
+ Evas_Object *btn_popup = NULL;
+ Evas_Object *icon = NULL;
+
+ std::string path = get_resource_path();
+
+ popup = elm_popup_add(voicedata->naviframe);
+ elm_object_style_set(popup, "circle");
+// uxt_popup_set_rotary_event_enabled(popup, EINA_TRUE);
+ eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK, popup_hide_cb, NULL);
+ evas_object_smart_callback_add(popup, "dismissed", popup_hide_finished_cb, NULL);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ layout = elm_layout_add(popup);
+ elm_layout_theme_set(layout, "layout", "popup", "content/circle/buttons2");
+ elm_object_domain_translatable_part_text_set(layout, "elm.text", PACKAGE, "IDS_ST_SK_OK");
+ elm_object_content_set(popup, layout);
+ evas_object_show(layout);
+
+ btn_popup = elm_button_add(popup);
+ elm_object_style_set(btn_popup, "popup/circle/left");
+ elm_object_part_content_set(popup, "button1", btn_popup);
+ elm_access_info_set(btn_popup, ELM_ACCESS_INFO, dgettext(PACKAGE, "IDS_ST_SK_OK"));
+ evas_object_smart_callback_add(btn_popup, "clicked", voice_input_back_disagree_cb, voicedata);
+ evas_object_data_set(btn_popup, "popup", popup);
+ evas_object_show(btn_popup);
+
+ std::string path_ic_left = path + "/images/tw_ic_popup_btn_delete.png";
+ icon = elm_image_add(btn_popup);
+ elm_image_file_set(icon, path_ic_left.c_str(), NULL);
+ evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_part_content_set(btn_popup, "elm.swallow.content", icon);
+ evas_object_show(icon);
+
+ btn_popup = elm_button_add(popup);
+ elm_object_style_set(btn_popup, "popup/circle/right");
+ elm_access_info_set(btn_popup, ELM_ACCESS_INFO, dgettext(PACKAGE, "IDS_ST_SK_OK"));
+ elm_object_part_content_set(popup, "button2", btn_popup);
+ evas_object_smart_callback_add(btn_popup, "clicked", voice_input_back_agree_cb, voicedata);
+ evas_object_data_set(btn_popup, "popup", popup);
+ evas_object_show(btn_popup);
+
+ std::string path_ic_right = path + "/images/tw_ic_popup_btn_check.png";
+ icon = elm_image_add(btn_popup);
+ elm_image_file_set(icon, path_ic_right.c_str(), NULL);
+ evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_part_content_set(btn_popup, "elm.swallow.content", icon);
+ evas_object_show(icon);
+
+ evas_object_show(popup);
+
+ voicedata->mo->discard_popup_opened = EINA_TRUE;
+}
MoreOption::MoreOption(Evas_Object *naviframe, void* voicedata)
: nf(naviframe)
, more_option_layout(NULL)
, item(NULL)
, option_opened(EINA_FALSE)
+ , discard_popup_opened(EINA_FALSE)
, voicedata(voicedata) {
/** todo. implement constructor */
+ voice_input_back_agree = false;
}
MoreOption::~MoreOption() {
/** todo. implement destructor */
-// if(more_option_layout)
-// evas_object_del(more_option_layout);
+ if(more_option_layout)
+ {
+ PRINTFUNC(DLOG_DEBUG, "del callbacks");
+ evas_object_smart_callback_del(more_option_layout, "item,clicked", moreItemClicked);
+ evas_object_smart_callback_del(more_option_layout, "item,selected", moreItemSelected);
+
+ evas_object_smart_callback_del(more_option_layout, "more,option,opened", moreOptionOpened);
+ evas_object_smart_callback_del(more_option_layout, "more,option,closed", moreOptionClosed);
+ }
}
void MoreOption::Create() {
/** add layout */
more_option_layout = eext_more_option_add(nf);
- if(!more_option_layout)
+ if(!more_option_layout){
PRINTFUNC(DLOG_ERROR, "It's failed to create layout");
+ return;
+ }
- evas_object_smart_callback_add(more_option_layout, "more,option,opened",
- [](void *data, Evas_Object *obj, void *event_info){
- PRINTFUNC(DLOG_DEBUG, "more option is opened!!! \n");
-
- if(!data) return;
-
- /**
- * if more option is completed, stt have to be stopped.
- *
- */
- MoreOption *opt = (MoreOption *)data;
- VoiceData *vd = (VoiceData *) opt->voicedata;
- try {
- if (vd->sttmanager->GetCurrent() == STT_STATE_RECORDING ||
- vd->sttmanager->GetCurrent() == STT_STATE_PROCESSING) {
- vd->sttmanager->Cancel();
- }
- }
- catch(is::stt::SttException &e) {
- PRINTFUNC(DLOG_ERROR, "%s", e.what());
- }
-
- opt->option_opened = EINA_TRUE;
- }, this);
-
- evas_object_smart_callback_add(more_option_layout, "more,option,closed",
- [](void *data, Evas_Object *obj, void *event_info){
- PRINTFUNC(DLOG_DEBUG, "more option is closed!!! \n");
-
- MoreOption *opt = (MoreOption *)data;
- VoiceData *vd = (VoiceData *) opt->voicedata;
-
- activate_circle_scroller_for_stt_textbox(vd, EINA_TRUE);
+ evas_object_smart_callback_add(more_option_layout, "more,option,opened", moreOptionOpened, this);
+ evas_object_smart_callback_add(more_option_layout, "more,option,closed", moreOptionClosed, this);
- opt->option_opened = EINA_FALSE;
- }, this);
+ hideCue();
evas_object_show(more_option_layout);
}
vd->sttmanager->GetCurrent() == STT_STATE_READY) {
PRINTFUNC(DLOG_DEBUG, "STT_STATE_CREATED || STT_STATE_READY\n");
- } else if (vd->sttmanager->GetCurrent() == STT_STATE_RECORDING) {
- PRINTFUNC(DLOG_DEBUG, "STT_STATE_RECORDING\n");
- vd->effector->Stop();
- try{
- vd->sttmanager->Stop();
- }catch(is::stt::SttException &e){
- PRINTFUNC(DLOG_ERROR, "reason : %s", e.what());
- }
-
- } else if (vd->sttmanager->GetCurrent() == STT_STATE_PROCESSING) {
- PRINTFUNC(DLOG_DEBUG, "STT_STATE_RECORDING\n");
+ } else if (vd->sttmanager->GetCurrent() == STT_STATE_RECORDING || vd->sttmanager->GetCurrent() == STT_STATE_PROCESSING) {
+ PRINTFUNC(DLOG_DEBUG, "STT_STATE_RECORDING or STT_STATE_PROCESSING\n");
try{
vd->sttmanager->Cancel();
}catch(is::stt::SttException &e){
}
}
+ if (voice_input_back_agree == false && !is_textblock_empty(vd)){
+ show_discard_popup(vd);
+ return EINA_FALSE;
+ }
elm_naviframe_item_pop_to(elm_naviframe_bottom_item_get(vd->naviframe));
vd->disclaimer = 0;
powerUnlock();
_back_to_genlist_for_selector();
+ destroy_voice();
+
return EINA_TRUE;
}
- if(opt->option_opened == EINA_FALSE){
+ if (opt->option_opened == EINA_FALSE){
PRINTFUNC(DLOG_DEBUG, "pop_cb called in STT view\n");
- if(vd->sttmanager){
+ if (vd->sttmanager){
if (vd->sttmanager->GetCurrent() == STT_STATE_CREATED ||
vd->sttmanager->GetCurrent() == STT_STATE_READY) {
PRINTFUNC(DLOG_DEBUG, "STT_STATE_CREATED || STT_STATE_READY\n");
- } else if (vd->sttmanager->GetCurrent() == STT_STATE_RECORDING) {
- PRINTFUNC(DLOG_DEBUG, "STT_STATE_RECORDING\n");
- vd->effector->Stop();
- try{
- vd->sttmanager->Stop();
- }catch(is::stt::SttException &e){
- PRINTFUNC(DLOG_ERROR, "reason : %s", e.what());
- }
-
- } else if (vd->sttmanager->GetCurrent() == STT_STATE_PROCESSING) {
- PRINTFUNC(DLOG_DEBUG, "STT_STATE_RECORDING\n");
+ } else if (vd->sttmanager->GetCurrent() == STT_STATE_RECORDING || vd->sttmanager->GetCurrent() == STT_STATE_PROCESSING) {
+ PRINTFUNC(DLOG_DEBUG, "STT_STATE_RECORDING or STT_STATE_PROCESSING\n");
try{
vd->sttmanager->Cancel();
}catch(is::stt::SttException &e){
PRINTFUNC(DLOG_ERROR, "reason : %s", e.what());
}
}
+ }
- _back_to_genlist_for_selector();
-
- destroy_voice();
-
- return EINA_TRUE;
- } else {
- PRINTFUNC(DLOG_DEBUG, "naviframe transition, not finished\n");
+ if (voice_input_back_agree == false && !is_textblock_empty(vd)){
+ show_discard_popup(vd);
return EINA_FALSE;
}
+
+ _back_to_genlist_for_selector();
+ destroy_voice();
+ return EINA_TRUE;
}
return EINA_FALSE;
}, this);
const char* display_lang = get_lang_label(lang);
eext_more_option_item_part_text_set(item, "selector,sub_text", display_lang);
+
+ showCue();
}
Evas_Object* MoreOption::AddLanguageIcon(Evas_Object *parent) {
eext_more_option_item_part_content_set(item, "item,icon", img);
- evas_object_smart_callback_add(more_option_layout, "item,clicked",
- [](void *data, Evas_Object *obj, void *event_info)
- {
- PRINTFUNC(DLOG_DEBUG, "item,clicked");
- if(g_setting_window == NULL)
- create_setting_window(obj);
- }, NULL);
+ evas_object_smart_callback_add(more_option_layout, "item,clicked", moreItemClicked, NULL);
+ evas_object_smart_callback_add(more_option_layout, "item,selected", moreItemSelected , NULL);
+}
+
+void MoreOption::moreOptionOpened(void *data, Evas_Object * obj, void *event_info)
+{
+ PRINTFUNC(DLOG_DEBUG, "more option is opened!!! \n");
+
+ if(!data) return;
+
+ /**
+ * if more option is completed, stt have to be stopped.
+ *
+ */
+ MoreOption *opt = (MoreOption *)data;
+ VoiceData *vd = (VoiceData *) opt->voicedata;
+
+ if(vd && vd->setup_timer){
+ ecore_timer_del(vd->setup_timer);
+ vd->setup_timer = NULL;
+ }
- evas_object_smart_callback_add(more_option_layout, "item,selected",
- [](void *data, Evas_Object *obj, void *event_info)
+ try {
+ if (vd && vd->sttmanager && (vd->sttmanager->GetCurrent() == STT_STATE_RECORDING ||
+ vd->sttmanager->GetCurrent() == STT_STATE_PROCESSING)) {
+ vd->sttmanager->Cancel();
+ }
+ }
+ catch(is::stt::SttException &e) {
+ PRINTFUNC(DLOG_ERROR, "%s", e.what());
+ }
+
+ // Clear guide text
+ if(vd && vd->layout_main){
+ elm_object_signal_emit((Evas_Object *)vd->layout_main, "idle,state,text,hidden", "elm");
+ }
+
+ opt->option_opened = EINA_TRUE;
+}
+
+void MoreOption::moreOptionClosed(void *data, Evas_Object * obj, void *event_info)
+{
+ PRINTFUNC(DLOG_DEBUG, "more option is closed!!! \n");
+
+ if (!data) return;
+
+ MoreOption *opt = (MoreOption *)data;
+ VoiceData *vd = (VoiceData *) opt->voicedata;
+
+ if (opt->option_opened == EINA_TRUE && is_textblock_empty(vd)) {
+ restart_listening(2.0);
+ }
+
+ if (vd)
+ activate_circle_scroller_for_stt_textbox(vd, EINA_TRUE);
+
+ opt->option_opened = EINA_FALSE;
+}
+
+void MoreOption::moreItemClicked(void *data, Evas_Object * obj, void *event_info)
+{
+ PRINTFUNC(DLOG_DEBUG, "item,clicked");
+ if(g_setting_window == NULL)
+ create_setting_window(obj);
+}
+
+void MoreOption::moreItemSelected(void *data, Evas_Object * obj, void *event_info)
+{
+ PRINTFUNC(DLOG_DEBUG, "item,selected");
+ if(!obj) return;
+
+ Eext_Object_Item *selected_item = (Eext_Object_Item *)event_info;
+
+ //for custom accessibility
+ if (elm_config_access_get())
{
- PRINTFUNC(DLOG_DEBUG, "item,selected");
- }, NULL);
+ Evas_Object *panel = elm_object_part_content_get(obj, "elm.swallow.right");
+ if (!panel) return;
+
+ Evas_Object *rotary_selector = elm_object_content_get(panel);
+ if (!rotary_selector) return;
+
+ Evas_Object *content = (Evas_Object *)edje_object_part_object_get(elm_layout_edje_get(rotary_selector), "content");
+ if (!content) return;
+
+ Evas_Object *content_access = elm_access_object_get(content);
+ if (!content_access) return;
+
+ if (eext_more_option_item_part_text_get(selected_item, "selector,main_text"))
+ {
+ std::string text;
+ text = text + std::string(gettext("WDS_IME_HEADER_INPUT_LANGUAGES_ABB")) + " ";
+
+ if(eext_more_option_item_part_text_get(selected_item, "selector,sub_text"))
+ text = text + std::string(eext_more_option_item_part_text_get(selected_item, "selector,sub_text"));
+
+ elm_access_info_set(content_access, ELM_ACCESS_INFO, text.c_str());
+ }
+ }
+}
+
+void MoreOption::hideCue()
+{
+ Evas_Object *panel_right = NULL;
+ if (!more_option_layout) {
+ PRINTFUNC(DLOG_ERROR, "more_option_layout == NULL");
+ return;
+ }
+
+ panel_right = elm_object_part_content_get(more_option_layout, "elm.swallow.right");
+ if (!panel_right) {
+ PRINTFUNC(DLOG_ERROR, "panel_right == NULL");
+ return;
+ }
+
+ elm_object_signal_emit(panel_right, "cue,hide", "elm");
+}
+
+void MoreOption::showCue()
+{
+ Evas_Object *panel_right = NULL;
+
+ if (!more_option_layout) {
+ PRINTFUNC(DLOG_ERROR, "more_option_layout == NULL");
+ return;
+ }
+
+ panel_right = elm_object_part_content_get(more_option_layout, "elm.swallow.right");
+ if (!panel_right) {
+ PRINTFUNC(DLOG_ERROR, "panel_right == NULL");
+ return;
+ }
+
+ elm_object_signal_emit(panel_right, "cue,show", "elm");
}
vd.result_type = STT_RESULT_EVENT_PARTIAL_RESULT;
voice_get_string(result.c_str(), &vd);
break;
+ case STT_RESULT_EVENT_ERROR:
+ PRINTFUNC(DLOG_DEBUG, "STT_RESULT_EVENT_ERROR");
+ vd.state = STT_STATE_VAL_NOT_RECOGNISED;
+ set_animation_state(&vd);
+ break;
default:
PRINTFUNC(DLOG_INFO, "");
break;
lazy_loading_timer_for_contents = NULL;
}
- if(emoticon_drawing_pool.used == 0){
+ if (emoticon_drawing_pool.used == 0){
evas_object_del(emoticon_drawing_pool.content);
}
emoticon_drawing_pool.content = NULL;
if (PREFERENCE_ERROR_NONE != ret) {
PRINTFUNC(DLOG_ERROR, "preference_set_string error!(%d)", ret);
}
-
}
static void _drawing_app_control_reply_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *user_data)
char* path = NULL;
app_control_get_extra_data(reply, APP_CONTROL_DATA_PATH, &path);
- if(path){
+ if (path){
PRINTFUNC(DLOG_DEBUG, "path=%s", path);
char *pathes[] = {path, };
reply_to_sender_by_callback(NULL, "image", (const char **)pathes, NULL);
emoticon_drawing_pool.content = btn;
emoticon_drawing_pool.used = 0;
return btn;
- } else if(!strcmp(part, "base")){
+ } else if (!strcmp(part, "base")){
Evas_Object* btn = elm_button_add(obj);
elm_object_style_set(btn, "ime/transparent");
return btn;
if (mime_type)
free(mime_type);
goto ACTIVATE;
- } else if(!strncmp(mime_type, "audio/", strlen("audio/"))) {
+ } else if (!strncmp(mime_type, "audio/", strlen("audio/"))) {
app_data->mime_type = MIME_TYPE_AUDIO;
app_data->app_type = APP_TYPE_STT;
_stt_clicked_cb((void *)app_data, NULL, NULL);
if (mime_type)
free(mime_type);
goto ACTIVATE;
- } else if(!strncmp(mime_type, "text/", strlen("text/"))) {
+ } else if (!strncmp(mime_type, "text/", strlen("text/"))) {
app_data->mime_type = MIME_TYPE_TEXT;
}
}
void _app_resume(void* user_data)
{
PRINTFUNC(DLOG_DEBUG, "");
+ resume_voice();
}
void _app_terminate(void* user_data)
vconf_notify_key_changed(VCONFKEY_ISE_STT_LANGUAGE, _stt_lang_changed_cb, my_voicedata);
}
-void pause_voice(){
+void pause_voice(){
PRINTFUNC(DLOG_DEBUG, "pause_voice");
powerUnlock();
}
}
- void destroy_voice()
- {
+void resume_voice(){
+ if (my_voicedata) {
+ PRINTFUNC(DLOG_DEBUG, "resume_voice");
+ on_stt_resume(my_voicedata);
+ }
+}
+
+void destroy_voice()
+{
PRINTFUNC(DLOG_DEBUG, "destroy voice");
//stt_feedback_deinitialize(); // It disable w-input-selector touch sound. So removed.
"DEFAULT='font=Tizen:style=Regular font_size=32 color=#FFFFFF color_class=AT013 text_class=tizen wrap=mixed align=center' \
newline='br' b='+ font=Tizen:style=Bold'link='+ underline=on underline_color=#FFFFFF'"
+#define TOP_PADDING_AREA 120
+#define BOTTOM_PADDING_AREA 81 // Bottom Button H 78 + margin 3
+
+
extern App_Data* app_data;
extern VoiceData *my_voicedata;
static Elm_Genlist_Item_Class itc_1text;
static Elm_Genlist_Item_Class itc_2text;
-static Eina_Bool change_guide_text(void *data);
+static bool sroll_bar_show = false;
+
+static bool g_send_button_clicked = false;
+
+
static void set_guide_text(VoiceData *vd, const char* text, bool translatable = false);
const char *supported_language[] = {
- "auto",
- "en_US",
- "es_US",
- "fr_FR",
- "zh_CN",
- "ja_JP",
- "ko_KR",
+ "auto",
+ "en_US",
+ "es_US",
+ "fr_FR",
+ "zh_CN",
+ "ja_JP",
+ "ko_KR",
};
-
const char *disp_lang_array[] = {
- "",
- "English (United States)",
- "Español (América Latina)",
- "Français (France)",
- "简体ä¸æ–‡",
- "日本語",
- "í•œêµì–´",
+ "",
+ "English (United States)",
+ "Español (América Latina)",
+ "Français (France)",
+ "简体ä¸æ–‡",
+ "日本語",
+ "í•œêµì–´",
};
typedef enum {
}
-static Eina_Bool
-_bring_in_cb(void *data)
+static void _bring_in_cb(void* data, Evas_Object* obj, const char* s, const char* e)
{
- if(!data)
- return ECORE_CALLBACK_CANCEL;
+ if (!data) return;
+
+ VoiceData *voicedata = (VoiceData *)data;
Evas_Coord x, y, w, h;
- Evas_Object *scroller = (Evas_Object *)data;
+ Evas_Object *scroller = (Evas_Object *)voicedata->scroller;
Evas_Object *inner_layout = NULL;
inner_layout = (Evas_Object *) evas_object_data_get(scroller, "inner_layout");
-
evas_object_geometry_get(inner_layout, &x, &y, &w, &h);
- elm_scroller_region_bring_in(scroller, x, h, w, h);
+ elm_scroller_region_bring_in(scroller, x, h + BOTTOM_PADDING_AREA, w, h); // in case of 3 line textblock, bring in is not working so, bottom padding size will be added
PRINTFUNC(NO_PRINT, "scroller %d %d %d %d", x, y, w, h);
- return ECORE_CALLBACK_CANCEL;
+ return;
}
static inline Evas_Coord get_text_block_size(Evas_Object *obj, std::string text)
static Eina_Bool _update_textblock_timer_cb(void *data)
{
- if(!data)
+ if (!data)
return ECORE_CALLBACK_CANCEL;
VoiceData* voicedata = (VoiceData*)data;
Evas_Object *inner_layout = NULL;
scroller = elm_layout_content_get((Evas_Object *)voicedata->layout_main, "text_area");
- if(!scroller)
+ if (!scroller)
{
PRINTFUNC(DLOG_ERROR, "failed to get scroller");
return ECORE_CALLBACK_CANCEL;
}
box = elm_object_content_get(scroller);
- if(!box)
+ if (!box)
{
PRINTFUNC(DLOG_ERROR, "failed to get box");
return ECORE_CALLBACK_CANCEL;
}
inner_layout = (Evas_Object *) evas_object_data_get(scroller, "inner_layout");
- if(!inner_layout)
+ if (!inner_layout)
{
PRINTFUNC(DLOG_ERROR, "failed to get inner_layout");
return ECORE_CALLBACK_CANCEL;
}
entry = elm_layout_content_get(inner_layout, "elm.swallow.content");
- if(!entry)
+ if (!entry)
{
PRINTFUNC(DLOG_ERROR, "failed to get entry");
return ECORE_CALLBACK_CANCEL;
}
+ if (!strcmp(result_text.c_str(), elm_entry_entry_get(entry))){
+ PRINTFUNC(DLOG_ERROR, "Nothing to update");
+ return ECORE_CALLBACK_CANCEL;
+ }
+
Evas_Object *top = (Evas_Object *) evas_object_data_get(box, "top_padding");
Evas_Object *bottom = (Evas_Object *) evas_object_data_get(box, "bottom_padding");
// if(height < 173) {
{
- int text_area_height = 360-102; // screen H - bottom button H
- int top_height = ((text_area_height - height) / 2);
- if(top_height < 120) top_height = 120; // Top fade area H
+ int text_area_height = 360; // screen H
+ int top_height = ((text_area_height - height - BOTTOM_PADDING_AREA) / 2); // 78 + 3 : bottom button H ++ margin
+ if (top_height < TOP_PADDING_AREA) top_height = TOP_PADDING_AREA; // Top fade area H
int bottom_height = (text_area_height - top_height - height);
- if(bottom_height < 1) bottom_height = 0;
+ if (bottom_height < BOTTOM_PADDING_AREA) bottom_height = BOTTOM_PADDING_AREA;
PRINTFUNC(SECURE_DEBUG, "str : %s", result_text.c_str());
PRINTFUNC(DLOG_DEBUG, "height : %d", height);
Evas_Object *panel_left = elm_layout_content_get((Evas_Object *)panel_layout, "elm.swallow.right");
if (result_text.size() > 0) {
+ show_bottom_button(voicedata, false);
elm_object_signal_emit(panel_left, "elm,state,enabled", "elm");
} else {
elm_object_signal_emit(panel_left, "elm,state,disabled", "elm");
}
- elm_object_signal_emit((Evas_Object *)voicedata->layout_main, "idle,state,guide_text,bottom", "elm");
+ elm_object_signal_emit(inner_layout, "scrolling", "entry");
- if(voicedata->state == STT_STATE_VAL_LISTENING){
- if(voicedata->guide_text_timer != NULL){
- ecore_timer_del(voicedata->guide_text_timer);
- voicedata->guide_text_timer = NULL;
+ Evas_Coord x, y, w, h;
+ evas_object_geometry_get(inner_layout , &x, &y, &w, &h);
+ PRINTFUNC(DLOG_DEBUG, "inner_layout x=%d, y=%d, w=%d, h=%d", x, y, w, h);
+
+ if (h > 3900){ // to avoid Textblock size overflow (limit : 4000x4000)
+ PRINTFUNC(DLOG_ERROR, "Stop STT to avoid text block overflow");
+ if(voicedata->sttmanager->GetCurrent() == STT_STATE_RECORDING || voicedata->sttmanager->GetCurrent() == STT_STATE_PROCESSING) {
+ PRINTFUNC(DLOG_DEBUG, "STT_STATE_RECORDING or STT_STATE_PROCESSING\n");
+ try{
+ voicedata->sttmanager->Cancel();
+ }catch(is::stt::SttException &e){
+ PRINTFUNC(DLOG_ERROR, "reason : %s", e.what());
+ }
}
- set_guide_text(voicedata, SK_TAP_TO_PAUSE, true);
}
- elm_object_signal_emit(inner_layout, "scrolling", "entry");
-
return ECORE_CALLBACK_CANCEL;
}
void _update_textblock(void *data)
{
- if(!data)
+ if (!data)
return;
VoiceData *voicedata = (VoiceData *) data;
void voice_get_string(const char *keyValue, _VoiceData *voicedata)
{
- if(!voicedata)
+ if (!voicedata)
return;
char* strbuf = NULL;
VoiceData *voicedata = (VoiceData *)data;
if (!voicedata) return;
- if (voicedata->sttmanager != NULL &&
- (voicedata->sttmanager->GetCurrent() == STT_STATE_RECORDING
- || voicedata->sttmanager->GetCurrent() == STT_STATE_PROCESSING)) {
- try {
- voicedata->state = STT_STATE_VAL_INIT;
- voicedata->sttmanager->Stop();
- }
- catch (is::stt::SttException &e) {
- }
-
- if (voicedata->effector)
- voicedata->effector->Stop(true);
+ edje_object_signal_emit(_EDJ(voicedata->layout_main), "mouse,clicked,1", "background");
- if (NULL != voicedata->start_timer) {
- ecore_timer_del(voicedata->start_timer);
- voicedata->start_timer = NULL;
- }
- if (NULL != voicedata->guide_text_timer) {
- ecore_timer_del(voicedata->guide_text_timer);
- voicedata->guide_text_timer = NULL;
- }
- if (NULL != voicedata->refresh_timer) {
- ecore_timer_del(voicedata->refresh_timer);
- voicedata->refresh_timer = NULL;
- }
- } else {
- if (NULL != voicedata->guide_text_timer) {
- ecore_timer_del(voicedata->guide_text_timer);
- voicedata->guide_text_timer = NULL;
- }
- edje_object_signal_emit(_EDJ(voicedata->layout_main), "mouse,clicked,1", "background");
- }
+ return;
}
-
-static Eina_Bool _mic_button_enable_cb(void *data)
+static void on_confirm_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
{
- PRINTFUNC(DLOG_DEBUG, "");
-
- if(!data)
- return ECORE_CALLBACK_CANCEL;
+ if (!data)
+ return;
VoiceData* voicedata = (VoiceData*)data;
- voicedata->btn_disabling_timer = NULL;
-
- Evas_Object *button = (Evas_Object *)voicedata->mic_button;
-
- elm_object_disabled_set(button, EINA_FALSE);
-
- return ECORE_CALLBACK_CANCEL;
-}
-
+ if (g_send_button_clicked == true){
+ PRINTFUNC(DLOG_ERROR, "skipped seding STT result");
+ return;
+ }
-static void on_confirm_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
-{
- if(!data)
+ if (is_textblock_empty(voicedata) == true){
return;
+ }
- VoiceData* voicedata = (VoiceData*)data;
+ if (voicedata->sttmanager){
+ if (voicedata->sttmanager->GetCurrent() == STT_STATE_RECORDING ||
+ voicedata->sttmanager->GetCurrent() == STT_STATE_PROCESSING) {
+ PRINTFUNC(DLOG_DEBUG, "STT_STATE_RECORDING or STT_STATE_PROCESSING\n");
+ try{
+ voicedata->sttmanager->Cancel();
+ }catch(is::stt::SttException &e){
+ PRINTFUNC(DLOG_ERROR, "reason : %s", e.what());
+ }
+ }
+ }
+
+ g_send_button_clicked = true;
std::string result_text;
for(unsigned int i = 0; i < voicedata->stt_results.size(); i++){
result_text += voicedata->stt_results.at(i);
- if(i != voicedata->stt_results.size()-1)
+ if (i != voicedata->stt_results.size()-1)
result_text += " ";
}
_panel_cue_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
{
PRINTFUNC(DLOG_DEBUG, "left cue clicked!!");
-
on_confirm_button_clicked_cb(data, NULL, NULL);
}
-
-
void stt_feedback_initialize()
{
int ret = 0;
ret = feedback_initialize();
- if(ret != 0)
+ if (ret != 0)
{
PRINTFUNC(DLOG_ERROR, "feedback_initialize failed!");
return;
int ret;
ret = feedback_initialize();
- if(ret != 0)
+ if (ret != 0)
{
PRINTFUNC(DLOG_ERROR, "feedback_initialize failed!");
return;
}
ret = feedback_deinitialize();
- if(ret != 0)
+ if (ret != 0)
{
PRINTFUNC(DLOG_ERROR, "feedback_initialize failed!");
return;
int ret = 0;
ret = feedback_deinitialize();
- if(ret != 0)
+ if (ret != 0)
{
PRINTFUNC(DLOG_ERROR, "feedback_initialize failed!");
return;
static Eina_Bool _idler_cb(void *data)
{
- if(!data) return ECORE_CALLBACK_CANCEL;
+ if (!data) return ECORE_CALLBACK_CANCEL;
VoiceData *voicedata = (VoiceData *)data;
PRINTFUNC(DLOG_DEBUG, "");
- if(true == _app_stt_initialize(voicedata)) {
+ if (true == _app_stt_initialize(voicedata)) {
LOGD("_app_stt_initialize None Error");
voicedata->voicefw_state = 1;
voicedata->state = STT_STATE_VAL_INIT;
voicedata->mo->Update();
- elm_access_highlight_set(voicedata->mic_button);
+ voicedata->setup_timer = NULL;
return ECORE_CALLBACK_CANCEL;
}
-
static Eina_Bool _power_delayed_unlock(void *data){
PRINTFUNC(DLOG_DEBUG, "POWER Unlock");
VoiceData *voicedata = (VoiceData *) data;
- if(enable) {
+ if (enable) {
ret = device_power_wakeup(false);
PRINTFUNC(DLOG_DEBUG, "LCD Wakeup");
- if(ret != DEVICE_ERROR_NONE)
+ if (ret != DEVICE_ERROR_NONE)
PRINTFUNC(DLOG_ERROR, "LCD Wakeup ERROR = %d", ret);
ret = device_power_request_lock(POWER_LOCK_DISPLAY, 0);
PRINTFUNC(DLOG_DEBUG, "POWER LOCK");
power_state = enable;
- if(ret != DEVICE_ERROR_NONE)
+ if (ret != DEVICE_ERROR_NONE)
PRINTFUNC(DLOG_ERROR, "ERROR = %d", ret);
- if(voicedata->power_unlock_timer != NULL){
+ if (voicedata->power_unlock_timer != NULL){
ecore_timer_del(voicedata->power_unlock_timer);
voicedata->power_unlock_timer = NULL;
}
} else {
PRINTFUNC(DLOG_DEBUG, "POWER Unlock Delayed(5 sec)");
- if(voicedata->power_unlock_timer != NULL){
+ if (voicedata->power_unlock_timer != NULL){
ecore_timer_del(voicedata->power_unlock_timer);
voicedata->power_unlock_timer = NULL;
}
}
}
-static Eina_Bool change_guide_text(void *data){
- VoiceData *voicedata = (VoiceData *) data;
- if (!voicedata) return ECORE_CALLBACK_CANCEL;
+static void expand_send_text(void *data)
+{
+ PRINTFUNC(DLOG_DEBUG, "");
- stt_state_e state = voicedata->sttmanager->GetCurrent();
- if (state == STT_STATE_RECORDING || state == STT_STATE_PROCESSING)
- elm_object_domain_translatable_part_text_set(voicedata->layout_main, "elm.text", PACKAGE, SK_TAP_TO_PAUSE);
+ if(data) {
+ VoiceData *voicedata = (VoiceData *) data;
+ elm_object_signal_emit((Evas_Object *)voicedata->layout_main, "idle,state,send,text,expand", "elm");
+ }
+}
- return ECORE_CALLBACK_CANCEL;
+static void contract_send_text(void *data)
+{
+ PRINTFUNC(DLOG_DEBUG, "");
+
+ if(data) {
+ VoiceData *voicedata = (VoiceData *) data;
+ elm_object_signal_emit((Evas_Object *)voicedata->layout_main, "idle,state,send,text,contract", "elm");
+ }
}
+static void set_cue_text(void *data)
+{
+ PRINTFUNC(DLOG_DEBUG, "");
+
+ if(data) {
+ VoiceData *voicedata = (VoiceData *) data;
+ elm_object_domain_translatable_part_text_set(voicedata->layout_main, "elm.text.cue", PACKAGE, SK_SPEAK_NOW);
+ elm_object_signal_emit((Evas_Object *)voicedata->layout_main, "idle,state,cue_text,visible", "elm");
+ }
+}
static void set_guide_text(VoiceData *vd, const char* text, bool translatable)
{
- elm_object_signal_emit(vd->layout_main, "idle,state,guide_text,bottom", "elm");
+ PRINTFUNC(DLOG_DEBUG, "text = %s", text);
+
+ if (!vd) return;
- if(translatable)
+ if (vd->mo){
+ PRINTFUNC(DLOG_DEBUG, "isMoreOptionOpend() = %d, discard_popup_opend == %d, g_send_button_clicked = %d", vd->mo->isMoreOptionOpened(), vd->mo->discard_popup_opened, g_send_button_clicked);
+ if (vd->mo->isMoreOptionOpened() == EINA_TRUE || vd->mo->discard_popup_opened == EINA_TRUE
+ || g_send_button_clicked == true){
+ elm_object_signal_emit((Evas_Object *)vd->layout_main, "idle,state,text,hidden", "elm");
+ PRINTFUNC(DLOG_DEBUG, "MoreOption or DiscardPopup is opened, So skipped");
+ return;
+ }
+ }
+
+ if (translatable)
elm_object_domain_translatable_part_text_set(vd->layout_main, "elm.text", PACKAGE, text);
else
elm_object_part_text_set(vd->layout_main, "elm.text", text);
- if(!strcmp(text, SK_SPEAK_NOW)){
- if(vd->guide_text_timer == NULL)
- vd->guide_text_timer = ecore_timer_add(2.0, change_guide_text, vd);
- }
+ elm_object_signal_emit((Evas_Object *)vd->layout_main, "idle,state,text,visible", "elm");
+ hide_bottom_button(vd);
+
+ // check whether any result exists
+ if (is_textblock_empty(vd))
+ return;
+
+ show_bottom_button(vd, true);
}
/**
void set_animation_state(VoiceData *voicedata)
{
if (voicedata->state == STT_STATE_VAL_INIT) {
-#if 0
- if (voicedata->sttmanager->GetCurrent() == STT_STATE_READY) {
- set_guide_text(voicedata, "", false);
- //_elm_access_say(voicedata->layout_main, _(SK_INIT));
- } else {
- PRINTFUNC(DLOG_DEBUG, "SK_NETWORK_ERROR [%d]", voicedata->sttmanager->GetCurrent());
- set_guide_text(voicedata, _(SK_NETWORK_ERROR));
- //_elm_access_say(voicedata->layout_main, _(SK_NETWORK_CONNECTION_ERROR));
- }
-#endif
-
if(voicedata->effector)
voicedata->effector->Stop(true);
- set_guide_text(voicedata, "Tap mic to speak");
+ expand_send_text(voicedata);
powerLock((void*)voicedata, false);
} else if (voicedata->state == STT_STATE_VAL_LISTENING) {
- set_guide_text(voicedata, SK_SPEAK_NOW, true);
+ set_cue_text(voicedata);
+ contract_send_text(voicedata);
if(voicedata->effector)
voicedata->effector->Start();
powerLock((void*)voicedata, true);
} else if (voicedata->state == STT_STATE_VAL_PROCESSING) {
- set_guide_text(voicedata, "");
+ expand_send_text(voicedata);
if(voicedata->effector)
voicedata->effector->Stop();
} else {
set_guide_text(voicedata, _(SK_RECOGNITION_FAILED));
//_elm_access_say(voicedata->layout_main, _(SK_RECOGNITION_FAILED));
-
+ expand_send_text(voicedata);
voicedata->state = STT_STATE_VAL_NOT_RECOGNISED;
if(voicedata->refresh_timer) {
ecore_timer_del(voicedata->refresh_timer);
+ voicedata->refresh_timer = NULL;
}
if(voicedata->effector)
voicedata->sttmanager->Start();
}
catch (is::stt::SttException &e) {
+ PRINTFUNC(DLOG_ERROR, "%s", e.what());
+
if (e.GetEcode() == STT_ERROR_OUT_OF_NETWORK)
{
+ PRINTFUNC(DLOG_DEBUG, "SK_NETWORK_ERROR");
set_guide_text(voicedata, _(SK_NETWORK_ERROR));
voicedata->state = STT_STATE_VAL_INIT;
} else if (e.GetEcode() == STT_ERROR_RECORDER_BUSY) {
- set_guide_text(voicedata, _(SK_STT_BUSY));
+ PRINTFUNC(DLOG_WARN, "STT is used by another application");
+ show_popup_toast(_(SK_STT_BUSY), false);
voicedata->state = STT_STATE_VAL_INIT;
} else {
- set_guide_text(voicedata, _(SK_STT_BUSY));
+ PRINTFUNC(DLOG_WARN, "Check error code");
+ show_popup_toast(_(SK_STT_BUSY), false);
voicedata->state = STT_STATE_VAL_INIT;
}
}
return ECORE_CALLBACK_CANCEL;
}
+void restart_listening(double in)
+{
+ PRINTFUNC(DLOG_DEBUG, "");
+
+ if(my_voicedata){
+ // reset STT Objects
+ if(my_voicedata->ieffect) {
+ delete my_voicedata->ieffect;
+ my_voicedata->ieffect = NULL;
+ }
+
+ if(my_voicedata->effector) {
+ delete my_voicedata->effector;
+ my_voicedata->effector = NULL;
+ }
+
+ if(my_voicedata->sttmanager) {
+ delete my_voicedata->sttmanager;
+ my_voicedata->sttmanager = NULL;
+ }
+
+ if(my_voicedata->sttfeedback) {
+ delete my_voicedata->sttfeedback;
+ my_voicedata->sttfeedback = NULL;
+ }
+
+ if(my_voicedata->setup_timer){
+ ecore_timer_del(my_voicedata->setup_timer);
+ my_voicedata->setup_timer = NULL;
+ }
+
+ my_voicedata->setup_timer = ecore_timer_add(0.5, _idler_cb, my_voicedata);
+
+ // clear resut
+ my_voicedata->stt_results.clear();
+
+ if(my_voicedata->textblock_timer){
+ ecore_timer_del(my_voicedata->textblock_timer);
+ my_voicedata->textblock_timer = NULL;
+ }
+
+ if(my_voicedata->refresh_timer){
+ ecore_timer_del(my_voicedata->refresh_timer);
+ my_voicedata->refresh_timer = NULL;
+ }
+
+ hide_bottom_button(my_voicedata);
+ _update_textblock_timer_cb(my_voicedata);
+ }
+}
+
/**
* @brief - cancel button press callback for cross button
* @param -
* Cuased touch reponse time, it can be called to stop animator.
*
*/
- set_guide_text(vd, "");
-
if(vd->effector)
vd->effector->Stop();
}
catch (is::stt::SttException &e) {
PRINTFUNC(DLOG_ERROR, "%s", e.what());
}
- if (vd->effector)
- vd->effector->Stop(true);
break;
static inline void ea_naviframe_back(void *data, Evas_Object *obj, void *event_info)
{
- if(!data) return;
+ if (!data) return;
evas_object_del((Evas_Object *) data);
const int BUF_LEN = 128;
char text[BUF_LEN] = {'\0', };
- if(!strcmp(part, "elm.text"))
+ if (!strcmp(part, "elm.text"))
{
- if((uintptr_t)data == 0) {
+ if ((uintptr_t)data == 0) {
return strdup(_("IDS_VC_BODY_AUTOMATIC"));
} else {
char *s = NULL;
static void get_stt_default_language(VoiceData *my_voicedata)
{
- if(!my_voicedata) {
+ if (!my_voicedata) {
PRINTFUNC(DLOG_ERROR, "my_voicedata NULL");
return;
}
static void language_set_genlist_radio_cb(void *data, Evas_Object *obj, void *event_info)
{
PRINTFUNC(DLOG_DEBUG, "");
- if(!data) return;
+ if (!data) return;
int index = 0;
set_language_value(index);
elm_radio_value_set(radio_gp, index);
+
+ if(my_voicedata)
+ set_textblock_empty(my_voicedata);
+
ecore_timer_add(0.3, close_setting_window_idler_cb, NULL);
}
static void language_changed_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
{
- if(!obj) return;
+ if (!obj) return;
elm_genlist_realized_items_update(obj);
}
PRINTFUNC(DLOG_DEBUG, "%s", __func__);
}
-static Evas_Object *create_language_list(Evas_Object *parent)
+static Evas_Object *create_language_list(Evas_Object *parent, Eext_Circle_Surface* circle_surface)
{
- if(!parent) return NULL;
+ 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);
+ Evas_Object *circle_language_genlist = eext_circle_object_genlist_add(genlist, circle_surface);
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);
*
*/
window = elm_win_add(NULL, "voice-input-setting", ELM_WIN_BASIC);
- if(!window) {
+ if (!window) {
PRINTFUNC(DLOG_DEBUG, "it's fail to create window.");
return;
}
* Push language list
*
*/
- genlist = create_language_list(naviframe);
+ genlist = create_language_list(naviframe, NULL);
const char *item_style = NULL;
if (_WEARABLE)
void _stt_lang_changed_cb(keynode_t *key, void* data)
{
PRINTFUNC(DLOG_DEBUG, "");
- if(!data) return;
+ if (!data) return;
VoiceData *vd = (VoiceData *) data;
get_stt_default_language(vd);
{
PRINTFUNC(DLOG_DEBUG, "");
- if(!obj) return;
- if(!data) return;
+ if (!obj) return;
+ if (!data) return;
VoiceData *voicedata = (VoiceData *)data;
static void __stt_detailed_entry_input_panel_event_cb(void *data, Ecore_IMF_Context *imf_context, int value)
{
- if(!data) return;
+ if (!data) return;
VoiceData *voicedata = (VoiceData *)data;
}
}
-static Evas_Object *create_text_detiled_view(Evas_Object *parent)
+Evas_Object *create_text_detiled_view(Evas_Object *parent)
{
string edj_path = get_resource_path();
if(_WEARABLE)
Evas_Object *entry = elm_entry_add(parent);
evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
-// ea_entry_selection_back_event_allow_set(entry, EINA_TRUE);
elm_entry_context_menu_disabled_set(entry, EINA_TRUE);
elm_entry_select_allow_set(entry, EINA_FALSE);
-// elm_entry_cursor_handler_disabled_set(entry, EINA_TRUE);
elm_entry_single_line_set(entry, EINA_TRUE);
elm_entry_scrollable_set(entry, EINA_TRUE);
elm_entry_input_panel_return_key_type_set(entry, ELM_INPUT_PANEL_RETURN_KEY_TYPE_DONE);
return layout;
}
+static Eina_Bool _idler_cb2(void *data)
+{
+ if (!data) return ECORE_CALLBACK_CANCEL;
+
+ return ECORE_CALLBACK_CANCEL;
+}
static Eina_Bool __stt_entry_detailed_view_pop_cb(void *data, Elm_Object_Item *it)
{
PRINTFUNC(DLOG_DEBUG, "");
- if(!data) return EINA_FALSE;
+ if (!data) return EINA_FALSE;
VoiceData *voicedata = (VoiceData *)data;
Evas_Object *detailed_layout = elm_object_item_part_content_get(it, "elm.swallow.content");
Evas_Object *detailed_entry = elm_object_part_content_get(detailed_layout, "contents");
- const char *str = NULL;
+ if (elm_entry_is_empty(detailed_entry) == EINA_TRUE){
+ PRINTFUNC(DLOG_DEBUG, "detailed_entry is empty");
+ voicedata->stt_results.clear();
+ elm_entry_entry_set(main_entry, "");
- int pos = 0;
- pos = elm_entry_cursor_pos_get(detailed_entry);
- PRINTFUNC(DLOG_DEBUG, "pos = %d", pos);
+ hide_bottom_button(voicedata);
+ } else {
+ const char *str = NULL;
+ int pos = 0;
+ pos = elm_entry_cursor_pos_get(detailed_entry);
+ PRINTFUNC(DLOG_DEBUG, "pos = %d", pos);
- str = elm_entry_entry_get(detailed_entry);
+ str = elm_entry_entry_get(detailed_entry);
+ PRINTFUNC(DLOG_DEBUG, "str = %s", str);
- voicedata->stt_results.clear();
- voicedata->stt_results.push_back(str);
+ if (str) {
+ voicedata->stt_results.clear();
+ voicedata->stt_results.push_back(str);
+ }
+
+ elm_entry_entry_set(main_entry, str);
+ elm_entry_cursor_pos_set(main_entry, pos);
-// uxt_scroller_set_auto_scroll_enabled(voicedata->scroller, EINA_TRUE);
- elm_entry_entry_set(main_entry, str);
- elm_entry_cursor_pos_set(main_entry, pos);
+ int x, y, w, h;
+ elm_entry_cursor_geometry_get(main_entry, &x, &y, &w, &h);
+ PRINTFUNC(DLOG_DEBUG, "%d %d %d %d", x, y, w, h);
- int x, y, w, h;
- elm_entry_cursor_geometry_get(main_entry, &x, &y, &w, &h);
- PRINTFUNC(DLOG_DEBUG, "%d %d %d %d", x, y, w, h);
+ elm_scroller_region_bring_in(voicedata->scroller, 0, y+h, 300, 168);
- elm_scroller_region_bring_in(voicedata->scroller, 0, y+h, 300, 168);
+ ecore_idler_add(_idler_cb2, voicedata);
+ }
return EINA_TRUE;
}
{
PRINTFUNC(DLOG_DEBUG, "");
- if(!obj) return;
- if(!data) return;
+ if (!obj) return;
+ if (!data) return;
VoiceData *voicedata = (VoiceData *)data;
char *str = NULL;
+ char *utf8 = NULL;
int pos = 0;
pos = elm_entry_cursor_pos_get(obj);
PRINTFUNC(DLOG_DEBUG, "pos = %d", pos);
- str = elm_entry_markup_to_utf8(elm_entry_entry_get(obj));
+ utf8 = elm_entry_markup_to_utf8(elm_entry_entry_get(obj)); // to remove the tag for fade-in effect
+ if (utf8) {
+ str = elm_entry_utf8_to_markup(utf8);
+ free(utf8);
+ utf8 = NULL;
+ }
if (str && strlen(str) > 0) {
try {
return;
}
-
void activate_circle_scroller_for_stt_textbox(void* data, Eina_Bool bActivate)
{
PRINTFUNC(DLOG_DEBUG, "");
- if(!data) return;
+ if (!data) return;
VoiceData *voicedata = (VoiceData *)data;
Evas_Object *scroller = NULL;
static Evas_Object *create_textblock(void* data)
{
- if(!data) return NULL;
+ if (!data) return NULL;
VoiceData *voicedata = (VoiceData *)data;
edj_path = edj_path + STT_EDJ_FILE_MOBILE;
scroller = elm_scroller_add(voicedata->layout_main);
-
elm_scroller_loop_set(scroller, EINA_FALSE, EINA_FALSE);
-
evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
- elm_scroller_page_size_set(scroller, 0, 50);
- elm_scroller_page_scroll_limit_set(scroller, 0, 1);
-
elm_object_scroll_lock_x_set(scroller, EINA_TRUE);
+
if (_WEARABLE) {
circle_scroller = eext_circle_object_scroller_add(scroller, app_data->circle_surface);
eext_circle_object_scroller_policy_set(circle_scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
elm_layout_file_set(inner_layout, edj_path.c_str(), "layout_textblock");
evas_object_size_hint_weight_set(inner_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_object_signal_callback_add(inner_layout, "do_scroll", "entry",
- [](void *data, Evas_Object *obj, const char* signal, const char* e)
- {
- _bring_in_cb((void *) data);
- }, (void *) scroller);
+ elm_object_signal_callback_add(inner_layout, "do_scroll", "entry", _bring_in_cb, (void *) voicedata);
entry = elm_entry_add(inner_layout);
voicedata->main_entry = entry;
return scroller;
}
-static Evas_Object *create_progressbar(Evas_Object *parent)
+bool is_textblock_empty(void *data)
+{
+ if (!data) return false;
+
+ VoiceData *voicedata = (VoiceData *)data;
+
+ Evas_Object *scroller = (Evas_Object *)voicedata->scroller;
+ Evas_Object *inner_layout = NULL;
+
+ inner_layout = (Evas_Object *) evas_object_data_get(scroller, "inner_layout");
+
+ Evas_Object *entry = elm_layout_content_get(inner_layout, "elm.swallow.content");
+ if (!entry)
+ {
+ PRINTFUNC(DLOG_ERROR, "failed to get entry");
+ return false;
+ }
+
+ if (elm_entry_is_empty(entry)) {
+ PRINTFUNC(DLOG_ERROR, "entry empty");
+ return true;
+ }
+
+ return false;
+}
+
+void set_textblock_empty(void *data)
+{
+ if (!data) return;
+
+ VoiceData *voicedata = (VoiceData *)data;
+
+ Evas_Object *scroller = (Evas_Object *)voicedata->scroller;
+ Evas_Object *inner_layout = NULL;
+
+ inner_layout = (Evas_Object *) evas_object_data_get(scroller, "inner_layout");
+
+ Evas_Object *entry = elm_layout_content_get(inner_layout, "elm.swallow.content");
+ if (!entry) {
+ PRINTFUNC(DLOG_ERROR, "failed to get entry");
+ return;
+ }
+
+ PRINTFUNC(DLOG_DEBUG, "set entry empty");
+ elm_entry_entry_set(entry, NULL);
+
+ return;
+}
+
+static Evas_Object *create_bottom_button(void* data)
+{
+ PRINTFUNC(DLOG_DEBUG, "create_bottom_button");
+ if (!data) return NULL;
+
+ VoiceData *voicedata = (VoiceData *)data;
+
+ Evas_Object *bottom_button = elm_button_add(voicedata->layout_main);
+ elm_object_style_set(bottom_button, "vic/micbutton");
+
+ evas_object_smart_callback_add(bottom_button, "clicked", on_confirm_button_clicked_cb, voicedata);
+ evas_object_show(bottom_button);
+
+ return bottom_button;
+}
+
+void show_bottom_button(void* data, bool delayed)
{
- Evas_Object *progressbar = NULL;
+ PRINTFUNC(DLOG_DEBUG, "show_bottom_button");
+ if (!data) return;
- progressbar = elm_progressbar_add(parent);
- elm_object_style_set(progressbar, "voice_input/process/small");
- elm_progressbar_pulse(progressbar, EINA_TRUE);
+ VoiceData *voicedata = (VoiceData *)data;
- evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ if (delayed) {
+ elm_object_signal_emit((Evas_Object *)voicedata->layout_main, "idle,state,show,bottom_button,delayed", "elm");
+ PRINTFUNC(DLOG_DEBUG, "Emit idle,state,show,bottom_button,delayed");
+ } else {
+ elm_object_signal_emit((Evas_Object *)voicedata->layout_main, "idle,state,show,bottom_button", "elm");
+ PRINTFUNC(DLOG_DEBUG, "Emit idle,state,show,bottom_button");
+ }
+}
-// ea_theme_object_color_replace(progressbar, "B065L6", "AO012");
+void hide_bottom_button(void* data)
+{
+ PRINTFUNC(DLOG_DEBUG, "hide_bottom_button");
+ if (!data) return;
- evas_object_show(progressbar);
+ VoiceData *voicedata = (VoiceData *)data;
- return progressbar;
+ elm_object_signal_emit((Evas_Object *)voicedata->layout_main, "idle,state,hide,bottom_button", "elm");
+ PRINTFUNC(DLOG_DEBUG, "Emit idle,state,hide,bottom_button");
+}
+
+static void scroll_effect_start(void* data, Evas_Object* obj, const char* s, const char* e)
+{
+ PRINTFUNC(DLOG_DEBUG, "scroll_effect_start");
+ if (!data) return;
+
+ VoiceData *voicedata = (VoiceData *)data;
+
+ if (voicedata->state == STT_STATE_VAL_LISTENING)
+ return;
+
+ if (is_textblock_empty(voicedata) == true)
+ return;
+
+ hide_bottom_button(voicedata);
+}
+
+static void scroll_effect_stop(void* data, Evas_Object* obj, const char* s, const char* e)
+{
+ PRINTFUNC(DLOG_DEBUG, "scroll_effect_stop");
+ if (!data) return;
+
+ VoiceData *voicedata = (VoiceData *)data;
+
+ if (voicedata->state == STT_STATE_VAL_LISTENING)
+ return;
+
+ Evas_Coord x, y, w, h;
+ Evas_Object *scroller = (Evas_Object *)voicedata->scroller;
+ Evas_Object *inner_layout = NULL;
+
+ inner_layout = (Evas_Object *) evas_object_data_get(scroller, "inner_layout");
+
+ evas_object_geometry_get(inner_layout , &x, &y, &w, &h);
+ PRINTFUNC(DLOG_DEBUG, "scroll x=%d, y=%d, w=%d, h=%d", x, y, w, h);
+
+ if (is_textblock_empty(voicedata) == true)
+ return;
+
+ if (h+y != (360 - BOTTOM_PADDING_AREA)) {
+ show_bottom_button(voicedata, true);
+ } else {
+ show_bottom_button(voicedata, false);
+ }
}
static Eina_Bool _custom_back_cb(void *data, Elm_Object_Item *it)
voicedata->mo = mo;
-
layout_main = elm_layout_add(mo->getMoreOptionLayout());
if (!layout_main)
elm_layout_file_set(layout_main, edj_path.c_str(), "mic_control");
- elm_object_content_set(parent, layout_main);
-
//Canvas for Cairo effect
Evas_Object *canvas = evas_object_image_filled_add(evas_object_evas_get(layout_main));
+ evas_object_propagate_events_set(canvas, EINA_TRUE);
evas_object_image_alpha_set(canvas, EINA_TRUE);
evas_object_size_hint_align_set(canvas, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(canvas, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
Evas_Coord CanvasW, CanvasH;
CanvasW = 360;
- CanvasH = 74;
+ CanvasH = 64;
evas_object_image_size_set(canvas, CanvasW, CanvasH);
evas_object_resize(canvas, CanvasW, CanvasH);
evas_object_size_hint_min_set(canvas, CanvasW, CanvasH);
elm_object_part_content_set(layout_main, "EFFECT_BG", canvas);
- // MIC Button
- Evas_Object *m_mic_button = elm_button_add(layout_main);
- elm_object_style_set(m_mic_button, "vic/micbutton");
- elm_object_part_content_set(layout_main, "MIC", m_mic_button);
-
- elm_object_disabled_set(m_mic_button, EINA_TRUE);
- evas_object_smart_callback_add(m_mic_button, "clicked", on_mic_button_press_cb, (void *) voicedata);
-
- voicedata->mic_button = m_mic_button;
+ // Bottom Button
+ Evas_Object *bottom_button = create_bottom_button(voicedata);
+ elm_object_part_content_set(voicedata->layout_main, "BOTTOM_BUTTON", bottom_button);
+ voicedata->bottom_button = bottom_button;
- if(voicedata->btn_disabling_timer == NULL){
- voicedata->btn_disabling_timer = ecore_timer_add(2.0, _mic_button_enable_cb, voicedata);
+ // STT Setup timer
+ if (voicedata->setup_timer == NULL) {
+ voicedata->setup_timer = ecore_timer_add(0.3, _idler_cb, voicedata);
}
-// ecore_idler_add(_idler_cb, voicedata);
- ecore_timer_add(0.6, _idler_cb, voicedata);
-
- // Confirm panel layout
- Evas_Object *panel_layout;
- panel_layout = elm_layout_add(layout_main);
- elm_layout_theme_set(panel_layout, "layout", "drawer", "panel");
- evas_object_show(panel_layout);
-
- // Confirm panel
- Evas_Object *panel;
- panel = elm_panel_add(panel_layout);
- elm_panel_orient_set(panel, ELM_PANEL_ORIENT_LEFT);
- elm_layout_theme_set(panel, "panel", "left_confirm", "default");
- elm_layout_theme_set(panel, "panel", "left_sending", "default");
-
- elm_layout_signal_callback_add(panel, "cue,clicked", "elm", _panel_cue_clicked_cb, (void *) voicedata);
- evas_object_show(panel);
-
- elm_object_part_content_set(panel_layout, "elm.swallow.right", panel);
- elm_object_part_content_set(layout_main, "left_panel_area", panel_layout);
-
- elm_object_signal_emit(panel, "elm,state,disabled", "elm");
- elm_panel_toggle(panel);
-
-
// Textblock
Evas_Object *scroller = create_textblock(voicedata);
elm_object_part_content_set(layout_main, "text_area", scroller);
voicedata->scroller = scroller;
- // Progress Bar
- Evas_Object *progress_bar = create_progressbar(layout_main);
- elm_object_part_content_set(layout_main, "PROGRESS_BAR", progress_bar);
- voicedata->progressbar = progress_bar;
+ elm_object_signal_callback_add(scroller, "do-show-vbar", "", scroll_effect_start, voicedata);
+ elm_object_signal_callback_add(scroller, "do-hide-vbar", "", scroll_effect_stop, voicedata);
+
+ // Send Text
+ elm_object_part_text_set(layout_main, "elm.text.send", dgettext(PACKAGE, "IDS_AMEMO_BUTTON_SEND"));
// add callback
elm_object_signal_callback_add(layout_main, "idle,state,pulse,visible", "", on_initial_anim_press_cb, voicedata);
voicedata->progressbar = NULL;
voicedata->scroller = NULL;
voicedata->main_entry = NULL;
- voicedata->mic_button = NULL;
voicedata->state = STT_STATE_VAL_INIT;
voicedata->kbd_lang = NULL;
voicedata->start_timer = NULL;
voicedata->refresh_timer = NULL;
- voicedata->progressbar_timer = NULL;
voicedata->textblock_timer = NULL;
- voicedata->guide_text_timer = NULL;
- voicedata->btn_disabling_timer = NULL;
voicedata->power_unlock_timer = NULL;
voicedata->stt_results.clear();
voicedata->partial_result = NULL;
return FALSE;
}
- if (NULL != voicedata->textblock_timer) {
- PRINTFUNC(DLOG_DEBUG, "delete previous textblock");
- ecore_timer_del(voicedata->textblock_timer);
- voicedata->textblock_timer = NULL;
- }
-
init_voice_recorder(NULL);
return TRUE;
voicedata->layout_main = create_fullview(voicedata->naviframe, voicedata);
if (voicedata->layout_main) {
+ hide_bottom_button(voicedata);
evas_object_show(voicedata->layout_main);
}
VoiceData *voicedata = (VoiceData *)r_voicedata;
- if(voicedata){
- try{
- //voicedata->state = STT_STATE_VAL_PREPARE_CANCEL;
- voicedata->sttmanager->Cancel();
- }catch(is::stt::SttException &e){
+ if (voicedata) {
+ try {
+ if (voicedata->sttmanager)
+ voicedata->sttmanager->Cancel();
+ else
+ PRINTFUNC(DLOG_ERROR, "sttmanager is null");
+ } catch(is::stt::SttException &e) {
PRINTFUNC(DLOG_ERROR, "reason : %s", e.what());
}
close_setting_window_idler_cb(NULL);
Evas_Object *mo_layout = voicedata->mo->getMoreOptionLayout();
if (_WEARABLE) {
- if(mo_layout){
- if(eext_more_option_opened_get(mo_layout) == EINA_TRUE) {
+ if (mo_layout){
+ if (eext_more_option_opened_get(mo_layout) == EINA_TRUE) {
eext_more_option_opened_set(mo_layout, EINA_FALSE);
}
}
}
}
+void on_stt_resume(VoiceData *r_voicedata)
+{
+ PRINTFUNC(NO_PRINT, "");
+
+ VoiceData *voicedata = (VoiceData *)r_voicedata;
+ if (voicedata){
+ if (voicedata->mo) {
+ if (voicedata->mo->isMoreOptionOpened() == EINA_FALSE && is_textblock_empty(voicedata)) {
+ restart_listening(2.0);
+ return;
+ }
+ }
+ }
+}
+
void on_destroy(VoiceData *r_voicedata)
{
PRINTFUNC(NO_PRINT, "");
powerUnlock();
if (NULL != voicedata) {
+ if (NULL != voicedata->main_entry) {
+ evas_object_smart_callback_del(voicedata->main_entry, "clicked", _stt_entry_clicked_cb);
+ voicedata->main_entry = NULL;
+ }
+
+ if (NULL != voicedata->scroller) {
+ Evas_Object *inner_layout = NULL;
+ inner_layout = (Evas_Object *) evas_object_data_get(voicedata->scroller, "inner_layout");
+
+ if (NULL != inner_layout)
+ elm_object_signal_callback_del(inner_layout, "do_scroll", "entry", _bring_in_cb);
+
+
+ elm_object_signal_callback_del(voicedata->scroller, "do-show-vbar", "", scroll_effect_start);
+ elm_object_signal_callback_del(voicedata->scroller, "do-hide-vbar", "", scroll_effect_stop);
+
+ voicedata->scroller = NULL;
+ }
+
if (NULL != voicedata->layout_main) {
+ elm_object_signal_callback_del(voicedata->layout_main, "idle,state,pulse,visible", "", on_initial_anim_press_cb);
voicedata->layout_main = NULL;
}
voicedata->naviframe = NULL;
}
+ if (NULL != voicedata->setup_timer) {
+ ecore_timer_del(voicedata->setup_timer);
+ voicedata->setup_timer = NULL;
+ }
+
if (NULL != voicedata->start_timer) {
ecore_timer_del(voicedata->start_timer);
voicedata->start_timer = NULL;
voicedata->refresh_timer = NULL;
}
- if (NULL != voicedata->progressbar_timer) {
- ecore_timer_del(voicedata->progressbar_timer);
- voicedata->progressbar_timer = NULL;
- elm_progressbar_pulse(voicedata->progressbar, EINA_FALSE);
- }
-
if (NULL != voicedata->textblock_timer) {
ecore_timer_del(voicedata->textblock_timer);
voicedata->textblock_timer = NULL;
}
- if (NULL != voicedata->guide_text_timer) {
- ecore_timer_del(voicedata->guide_text_timer);
- voicedata->guide_text_timer = NULL;
- }
-
- if (NULL != voicedata->btn_disabling_timer) {
- ecore_timer_del(voicedata->btn_disabling_timer);
- voicedata->btn_disabling_timer = NULL;
- }
-
if (NULL != voicedata->power_unlock_timer) {
ecore_timer_del(voicedata->power_unlock_timer);
voicedata->power_unlock_timer = NULL;
delete voicedata;
}
}
-
-
-