+ 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)
+{
+ PRINTFUNC(DLOG_DEBUG, "show_bottom_button");
+ if (!data) return;
+
+ VoiceData *voicedata = (VoiceData *)data;
+
+ 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");
+ }
+}
+
+void hide_bottom_button(void* data)
+{
+ PRINTFUNC(DLOG_DEBUG, "hide_bottom_button");
+ if (!data) return;
+
+ VoiceData *voicedata = (VoiceData *)data;
+
+ 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;