Coding rule check
[platform/core/uifw/inputdelegator.git] / src / w-input-stt-ise.cpp
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #include <vconf.h>
18
19 #include "Debug.h"
20 #include "w-input-selector.h"
21 #include "w-input-stt-ise.h"
22 #include "w-input-stt-voice.h"
23 #include "w-input-stt-engine.h"
24
25
26 VoiceData *my_voicedata = NULL;
27
28 #define FREE(ptr)       \
29          do { \
30                  if (ptr != NULL) { \
31                          free(ptr); \
32                          ptr = NULL; \
33                  } \
34          } while (0);
35
36 void show_voice_input(Evas_Object *parent, const char *lang, void (*get_string)(char *, int))
37 {
38         PRINTFUNC(DLOG_ERROR, "show voice");
39         int init = 0;
40
41         destroy_voice();
42
43         //stt_feedback_initialize();
44
45         if (!my_voicedata) {
46                 my_voicedata = (VoiceData*)malloc(sizeof(VoiceData));
47                 if (my_voicedata == NULL) {
48                         PRINTFUNC(DLOG_ERROR, "%d::::Heap Overflow, Voice Input cannot be shown!", __LINE__);
49                 return;
50                 }
51                 memset(my_voicedata, 0, sizeof(VoiceData));
52         }
53
54         init = init_voice(parent, lang, my_voicedata);
55         if (init) {
56                 if (my_voicedata->naviframe) {
57                         show_voice_window(my_voicedata->naviframe, my_voicedata);
58                 }
59         } else {
60                 destroy_voice();
61                 PRINTFUNC(DLOG_ERROR, "%d::::Fail to create Voice window!", __LINE__);
62                 return;
63         }
64
65         vconf_notify_key_changed(VCONFKEY_ISE_STT_LANGUAGE, _stt_lang_changed_cb, my_voicedata);
66 }
67
68 void  pause_voice(){
69         PRINTFUNC(DLOG_DEBUG, "pause_voice");
70
71         powerUnlock();
72         if (my_voicedata) {
73                 on_stt_pause(my_voicedata);
74         }
75 }
76
77  void destroy_voice()
78  {
79          PRINTFUNC(DLOG_DEBUG, "destroy voice");
80
81          //stt_feedback_deinitialize();  // It disable w-input-selector touch sound. So removed.
82
83          vconf_ignore_key_changed(VCONFKEY_ISE_STT_LANGUAGE, _stt_lang_changed_cb);
84
85          if (my_voicedata) {
86                  on_destroy(my_voicedata);
87                  my_voicedata = NULL;
88          }
89  }
90
91  int is_lang_supported_by_voice_input(const char *lang)
92  {
93          PRINTFUNC(DLOG_DEBUG, "Is lang %s supported by voice input", lang);
94          char kbd_lang[6];
95
96          if (NULL == lang)
97                  return FALSE;
98
99          strncpy(kbd_lang, lang, sizeof(kbd_lang));
100          kbd_lang[5] = '\0';
101
102          return (is_lang_supported_by_stt(kbd_lang));
103  }
104
105 void ise_show_stt_popup(void *data)
106  {
107          App_Data* ad = (App_Data*)data;
108
109          if (!ad)
110                  return;
111
112          show_voice_input((Evas_Object*)ad->naviframe, NULL, NULL);
113  }
114
115  void set_disclaimer_flag()
116  {
117          PRINTFUNC(DLOG_DEBUG, "set_disclaimer_flag");
118
119          if (my_voicedata) {
120                  my_voicedata->disclaimer = 1;
121          }
122  }
123
124