Fix issue detected by static analysis tool
[platform/core/uifw/inputdelegator.git] / src / w-input-stt-voice.cpp
index 0aa4b21..3f8e754 100755 (executable)
@@ -32,6 +32,7 @@
 #include "w-input-stt-voice.h"
 #include "w-input-stt-engine.h"
 #include "w-input-stt-ise.h"
+#include "voice-recorder.h"
 
 using namespace std;
 
@@ -473,7 +474,12 @@ static void on_confirm_button_clicked_cb(void *data, Evas_Object *obj, void *eve
 
        PRINTFUNC(DLOG_DEBUG, "result_text = %s", result_text.c_str());
 
-       reply_to_sender_by_callback(result_text.c_str(), "voice");
+       char *filePath = NULL;
+       voice_recorder *vr = _voice_recorder_get_data();
+       if (!vr)
+               filePath = vr->file_path;
+       char *path[] = {filePath, };
+       reply_to_sender_by_callback(result_text.c_str(), "voice", (const char **)path);
        destroy_voice();
        powerUnlock();
        ui_app_exit();
@@ -563,14 +569,13 @@ static Eina_Bool _idler_cb(void *data)
        Evas_Object *canvas = elm_object_part_content_get(voicedata->layout_main, "EFFECT_BG");
 
        is::ui::WInputSttMicEffect *ieffect = new is::ui::WInputSttMicEffect();
-       if (ieffect)
+       if (ieffect) {
                ieffect->SetSttHandle(voicedata->sttmanager->GetSttHandle());
 
-       is::ui::MicEffector *effector = new is::ui::MicEffector(canvas, voicedata->layout_main, *ieffect);
-       voicedata->ieffect = ieffect;
-       voicedata->effector = effector;
+               is::ui::MicEffector *effector = new is::ui::MicEffector(canvas, voicedata->layout_main, *ieffect);
+               voicedata->ieffect = ieffect;
+               voicedata->effector = effector;
 
-       if (ieffect) {
                ieffect->SetProgressBar(voicedata->progressbar);
                ieffect->SetSttHandle(voicedata->sttmanager->GetSttHandle());
        }
@@ -779,6 +784,9 @@ static Eina_Bool _start_timer_cb(void* data)
                }
                voicedata->start_timer = NULL;
        }
+
+       start_voice_recorder();
+
        return ECORE_CALLBACK_CANCEL;
 }
 
@@ -904,7 +912,8 @@ static char *__get_genlist_title_label(void *data, Evas_Object *obj, const char
 
 char *__get_genlist_item_label(void *data, Evas_Object *obj, const char *part)
 {
-       char text[128] = {0, };
+       const int BUF_LEN = 128;
+       char text[BUF_LEN] = {'\0', };
 
        if(!strcmp(part, "elm.text"))
        {
@@ -919,10 +928,10 @@ char *__get_genlist_item_label(void *data, Evas_Object *obj, const char *part)
                                if(p) {
                                        strncpy(text, s, p-s);
                                } else {
-                                       strncpy(text, s, strlen(s));
+                                       snprintf(text, BUF_LEN, "%s", s);
                                }
                        } else {
-                               strncpy(text, "", strlen(""));
+                               snprintf(text, BUF_LEN, "%s", "");
                        }
                }
                return strdup(text);
@@ -954,11 +963,10 @@ char *__get_genlist_item_label(void *data, Evas_Object *obj, const char *part)
                                if(p) {
                                        strncpy(text, p+1, strlen(s)-(p-s)-2);
                                } else {
-                                       strncpy(text, s, strlen(s));
-                                       text[strlen(s)] = '\0';
+                                       snprintf(text, BUF_LEN, "%s", s);
                                }
                        } else {
-                               strncpy(text, "", strlen(""));
+                               snprintf(text, BUF_LEN, "%s", "");
                        }
                        return strdup(text);
                }
@@ -1808,6 +1816,8 @@ int init_voice(Evas_Object *parent, const char *lang, VoiceData *r_voicedata)
                voicedata->textblock_timer = NULL;
        }
 
+       init_voice_recorder(NULL);
+
        return TRUE;
 }