Add prediction and voice language item into keypad setting 66/144266/4
authorliuxd <xd123.liu@samsung.com>
Wed, 16 Aug 2017 05:54:07 +0000 (01:54 -0400)
committerliuxd <xd123.liu@samsung.com>
Wed, 16 Aug 2017 07:11:19 +0000 (03:11 -0400)
Signed-off-by: liuxd <xd123.liu@samsung.com>
Change-Id: If1750783b7d1a75f9e0d885a089bfbdf8e9ad8c2
Signed-off-by: liuxd <xd123.liu@samsung.com>
CMakeLists.txt
src/include/ise-stt-common.h [new file with mode: 0755]
src/include/ise-stt-option.h
src/include/option.h
src/ise-stt-common.cpp [new file with mode: 0755]
src/ise-stt-mode.cpp
src/ise-stt-option.cpp
src/ise.cpp
src/option.cpp

index 141462b..accfa4e 100644 (file)
@@ -9,6 +9,7 @@ SET(ISE_SRCS
     src/imdata.cpp
     src/ise-stt-mode.cpp
     src/ise-stt-option.cpp
+    src/ise-stt-common.cpp
     src/MicEffector.cpp
     src/SttFeedback.cpp
     src/SttManager.cpp
@@ -31,6 +32,7 @@ SET(ISE_SRCS
 
 SET(ISE_SETTING_SRCS
     src/config.cpp
+    src/ise-stt-option.cpp
     src/option.cpp
     src/sdk/sdk_option.cpp
     src/eflutil.cpp
@@ -96,7 +98,7 @@ SET(SETTING_PKGS_CHECK_MODULES
 
 pkg_check_modules(ISE_SETTING_PKGS REQUIRED ${SETTING_PKGS_CHECK_MODULES})
 
-SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -fPIE -Wall")
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -fPIE -Wall -fpermissive")
 #SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -finstrument-functions")
 SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
 SET(CMAKE_CXX_FLAGS_RELEASE "-O2 -g")
diff --git a/src/include/ise-stt-common.h b/src/include/ise-stt-common.h
new file mode 100755 (executable)
index 0000000..91403d6
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2017 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_COMMON_H_
+#define ISE_STT_COMMON_H_
+
+/*
+ * This file will be included from ISE
+ */
+
+
+#include <Elementary.h>
+#include "ise-stt-mode.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 get_stt_default_language(VoiceData *my_voicedata);
+void _stt_lang_changed_cb(keynode_t *key, void* data);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ISE_STT_COMMON_H_ */
index e9e4f9d..16721ee 100644 (file)
@@ -24,7 +24,6 @@
 
 
 #include <Elementary.h>
-#include "ise-stt-mode.h"
 
 #ifdef EAPI
 # undef EAPI
@@ -49,10 +48,18 @@ extern "C"
 #define VCONFKEY_ISE_STT_LANGUAGE   "db/private/ise/stt/language"
 #define PREFERENCE_ISE_STT_LANGUAGE "ise/stt/language"
 
+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;
 
 void create_setting_window();
-void get_stt_default_language(VoiceData *my_voicedata);
-void _stt_lang_changed_cb(keynode_t *key, void* data);
+int get_language_value();
 int is_lang_supported_by_stt(char lang[]);
 
 
index 5b3a0c2..359ba48 100644 (file)
@@ -28,6 +28,7 @@
 #endif
 #define INPUT_LANGUAGE      dgettext(PACKAGE, "IDS_IME_HEADER_INPUT_LANGUAGES")
 #define PREDICTION          dgettext(PACKAGE, "IDS_IME_BODY_PREDICTIVE_TEXT")
+#define VOICE_LANGUAGE      dgettext(PACKAGE, "IDS_VOICE_OPT_LANGUAGE_ABB")
 #define KEYPAD              dgettext(PACKAGE, "IDS_IME_BODY_KEYBOARD_TYPE")
 #define KEYPAD_3X4          dgettext(PACKAGE, "IDS_IME_OPT_3_X_4_KEYBOARD")
 #define KEYPAD_QTY          dgettext(PACKAGE, "IDS_IME_OPT_QWERTY_KEYBOARD_ABB")
diff --git a/src/ise-stt-common.cpp b/src/ise-stt-common.cpp
new file mode 100755 (executable)
index 0000000..1b6a795
--- /dev/null
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2017 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 <app_preference.h>
+#include <stt.h>
+#include <unistd.h>
+#include <efl_extension.h>
+
+#include "ise.h"
+#include "ise-stt-mode.h"
+#include "ise-stt-option.h"
+#include "ise-stt-common.h"
+#include "eflutil.h"
+
+extern char *supported_language;
+void _stt_lang_changed_cb(keynode_t *key, void* data)
+{
+    if (!data) return;
+
+    VoiceData *vd = (VoiceData *) data;
+    get_stt_default_language(vd);
+    vd->sttmanager->SetLanguage(std::string(vd->kbd_lang));
+
+    return;
+}
+
+void get_stt_default_language(VoiceData *my_voicedata)
+{
+    if (!my_voicedata) {
+        return;
+    }
+
+    if (my_voicedata->kbd_lang) {
+        free(my_voicedata->kbd_lang);
+        my_voicedata->kbd_lang = NULL;
+    }
+
+    STT_VOICE_LANGUAGE_N66_I stt_lang;
+    stt_lang = (STT_VOICE_LANGUAGE_N66_I)get_language_value();
+
+    LOGW("language type (%d)", stt_lang);
+
+    switch (stt_lang) {
+        case STT_VOICE_N66_AUTO :
+            {
+                stt_get_default_language(my_voicedata->voicefw_handle, &my_voicedata->kbd_lang);
+
+                // get system display language
+                char* value = NULL;
+                value = vconf_get_str(VCONFKEY_LANGSET);
+                if (NULL == value) {
+                    LOGW("Fail to get display language");
+                    return;
+                }
+                LOGW("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) {
+                    my_voicedata->kbd_lang = strdup(system_lang);
+                    LOGW("Set auto language (%s)", system_lang);
+                } else {
+                    my_voicedata->kbd_lang = strdup("en_US");
+                    LOGW("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 :
+            {
+                my_voicedata->kbd_lang = strdup(supported_language[stt_lang]);
+            }
+            break;
+        default :
+            my_voicedata->kbd_lang = strdup("en_US");
+            break;
+    }
+
+    LOGW("stt language (%s)", my_voicedata->kbd_lang);
+}
index 3b2ebd0..863a54d 100644 (file)
@@ -29,6 +29,7 @@
 #include "candidate-factory.h"
 #include "ise-stt-mode.h"
 #include "ise-stt-option.h"
+#include "ise-stt-common.h"
 
 #define _EDJ(x)  elm_layout_edje_get(x)
 
index 23ea4b7..86c2e59 100644 (file)
 #include <string.h>
 #include <app.h>
 #include <app_preference.h>
-#include <stt.h>
 #include <unistd.h>
 #include <efl_extension.h>
 
-#include "ise.h"
 #include "ise-stt-option.h"
-#include "ise-stt-mode.h"
 #include "eflutil.h"
 
 #define item_append(obj, style, index, cb, udata) \
                elm_genlist_item_append(obj, &(style), (void *)index, NULL, ELM_GENLIST_ITEM_NONE, cb, udata)
 
-sclboolean g_setting_window_open_status = FALSE;
+Eina_Bool g_setting_window_open_status = EINA_FALSE;
 
-extern stt_h g_stt;
 static Evas_Object *radio_gp = NULL;
 static Evas_Object *g_setting_naviframe = NULL;
 static Evas_Object *g_setting_window = NULL;
@@ -44,7 +40,6 @@ static Elm_Genlist_Item_Class itc_1text;
 static Elm_Genlist_Item_Class itc_2text;
 
 static const char* get_lang_label(char lang[]);
-static int get_language_value();
 static void set_language_value(int type);
 
 static char *__get_genlist_item_label(void *data, Evas_Object *obj, const char *part);
@@ -73,15 +68,6 @@ const char *disp_lang_array[] = {
     "한국어",
 };
 
-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;
 
 static const char* get_lang_label(char lang[])
 {
@@ -105,7 +91,7 @@ static const char* get_lang_label(char lang[])
     return str;
 }
 
-static int get_language_value()
+int get_language_value()
 {
     int lang = 0, ret = 0;
 
@@ -140,17 +126,6 @@ static void set_language_value(int type)
     // Update string
 }
 
-void _stt_lang_changed_cb(keynode_t *key, void* data)
-{
-    if (!data) return;
-
-    VoiceData *vd = (VoiceData *) data;
-    get_stt_default_language(vd);
-    vd->sttmanager->SetLanguage(std::string(vd->kbd_lang));
-
-    return;
-}
-
 int is_lang_supported_by_stt(char lang[])
 {
     /* to check if the language is supported by stt */
@@ -159,77 +134,13 @@ int is_lang_supported_by_stt(char lang[])
     {
         if (!strcmp(lang, supported_language[index])) {
             LOGD("current lang supported (%s)", supported_language[index]);
-            return TRUE;
+            return EINA_TRUE;
         }
     }
 
     LOGD("current lang not supported (%s)", lang);
 
-    return FALSE;
-}
-
-void get_stt_default_language(VoiceData *my_voicedata)
-{
-    if (!my_voicedata) {
-        return;
-    }
-
-    if (my_voicedata->kbd_lang) {
-        free(my_voicedata->kbd_lang);
-        my_voicedata->kbd_lang = NULL;
-    }
-
-    STT_VOICE_LANGUAGE_N66_I stt_lang;
-    stt_lang = (STT_VOICE_LANGUAGE_N66_I)get_language_value();
-
-    LOGD("language type (%d)", stt_lang);
-
-    switch (stt_lang) {
-        case STT_VOICE_N66_AUTO :
-            {
-                stt_get_default_language(my_voicedata->voicefw_handle, &my_voicedata->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;
-                }
-                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) {
-                    my_voicedata->kbd_lang = strdup(system_lang);
-                    LOGD("Set auto language (%s)", system_lang);
-                } else {
-                    my_voicedata->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 :
-            {
-                my_voicedata->kbd_lang = strdup(supported_language[stt_lang]);
-            }
-            break;
-        default :
-            my_voicedata->kbd_lang = strdup("en_US");
-            break;
-    }
-
-    LOGD("stt language (%s)", my_voicedata->kbd_lang);
+    return EINA_FALSE;
 }
 
 static char *__get_genlist_item_label(void *data, Evas_Object *obj, const char *part)
@@ -456,8 +367,7 @@ static Evas_Object *create_language_list(Evas_Object *parent)
 
 void create_setting_window()
 {
-    g_setting_window_open_status = TRUE;
-    ise_hide_stt_mode();
+    g_setting_window_open_status = EINA_TRUE;
 
     Evas_Object *window = NULL;
     Evas_Object *genlist = NULL;
index 73d42eb..f481109 100644 (file)
@@ -989,6 +989,7 @@ SCLEventReturnType CUIEventCallback::on_event_key_clicked(SclUIEventDesc event_d
 #endif
             if (strcmp(event_desc.key_value, USER_VOICE_LANGUAGE) == 0) {
                 if (!g_setting_window_open_status) {
+                    ise_hide_stt_mode();
                     create_setting_window();
                 }
             } else if (strcmp(event_desc.key_value, USER_KEYSTRING_VOICE) == 0) {
index f41b1a2..f1843cb 100644 (file)
@@ -27,6 +27,7 @@
 #include "languages.h"
 #include "eflutil.h"
 #include "sdk/ise_lang_table.h"
+#include "ise-stt-option.h"
 
 #undef LOG_TAG
 #define LOG_TAG "ISE_DEFAULT"
@@ -60,6 +61,8 @@ enum SETTING_ITEM_ID {
     SETTING_ITEM_ID_MORE_SETTINGS_TITLE,
     SETTING_ITEM_ID_RESET,
     SETTING_ITEM_ID_FLOATING,
+    SETTING_ITEM_ID_PREDICTION,
+    SETTING_ITEM_ID_VOICE_LANGUAGE,
 
     SETTING_ITEM_ID_MAX,
 };
@@ -150,6 +153,8 @@ static void navi_back_cb(void *data, Evas_Object *obj, void *event_info);
 static void check_autocapitalise_change_callback(void *data, Evas_Object *obj, void *event_info);
 static void check_autopunctuate_change_callback(void *data, Evas_Object *obj, void *event_info);
 static void check_sound_change_callback(void *data, Evas_Object *obj, void *event_info);
+static void check_prediction_change_callback(void *data, Evas_Object *obj, void *event_info);
+static void check_voice_language_callback(void *data, Evas_Object *obj, void *event_info);
 static void check_vibration_change_callback(void *data, Evas_Object *obj, void *event_info);
 static void check_character_pre_change_callback(void *data, Evas_Object *obj, void *event_info);
 static void check_floating_mode_change_callback(void *data, Evas_Object *obj, void *event_info);
@@ -406,6 +411,19 @@ static void _main_gl_sel(void *data, Evas_Object *obj, void *event_info)
                 }
             break;
             }
+            case SETTING_ITEM_ID_PREDICTION: {
+                if (item) {
+                    state = _update_check_button_state(item, obj);
+                    check_prediction_change_callback((void *)(intptr_t)(state), NULL, NULL);
+                }
+            break;
+            }
+            case SETTING_ITEM_ID_VOICE_LANGUAGE: {
+                if (item) {
+                    check_voice_language_callback((void *)(intptr_t)(state), NULL, NULL);
+                }
+            break;
+            }
             case SETTING_ITEM_ID_VIBRATION: {
                 if (item) {
                     state = _update_check_button_state(item, obj);
@@ -548,6 +566,22 @@ static void check_sound_change_callback(void *data, Evas_Object *obj, void *even
     write_ise_config_values();
 }
 
+static void check_prediction_change_callback(void *data, Evas_Object *obj, void *event_info)
+{
+    Eina_Bool state = EINA_FALSE;
+    if (obj) {
+        state = elm_check_state_get(obj);
+    } else {
+        state = (int)reinterpret_cast<long>(data);
+    }
+    g_config_values.prediction_on = state;
+    write_ise_config_values();
+}
+
+static void check_voice_language_callback(void *data, Evas_Object *obj, void *event_info)
+{
+   create_setting_window();
+}
 static void check_vibration_change_callback(void *data, Evas_Object *obj, void *event_info)
 {
     Eina_Bool state = EINA_FALSE;
@@ -623,6 +657,15 @@ static Evas_Object *_main_radio_gl_content_get(void *data, Evas_Object *obj, con
                     evas_object_smart_callback_add(ck, "changed", check_sound_change_callback,
                         reinterpret_cast<void*>(item_data->mode));
                     break;
+                case SETTING_ITEM_ID_PREDICTION:
+                    ck = _create_check_button(obj, g_config_values.prediction_on);
+                    evas_object_smart_callback_add(ck, "changed", check_prediction_change_callback,
+                        reinterpret_cast<void*>(item_data->mode));
+                break;
+                case SETTING_ITEM_ID_VOICE_LANGUAGE:
+                    evas_object_smart_callback_add(ck, "changed", check_voice_language_callback,
+                        reinterpret_cast<void*>(item_data->mode));
+                break;
                 case SETTING_ITEM_ID_VIBRATION:
                     ck = _create_check_button(obj, g_config_values.vibration_on);
                     evas_object_smart_callback_add(ck, "changed", check_vibration_change_callback,
@@ -948,6 +991,12 @@ Evas_Object* create_option_main_view(Evas_Object *parent, Evas_Object *naviframe
         /* Sound */
         append_item(genlist, SETTING_ITEM_ID_SOUND, SOUND, NULL, (void *)SETTING_ITEM_ID_SOUND, option_elements[type].itc_main_item, ELM_GENLIST_ITEM_NONE, EINA_FALSE);
 
+#ifdef _TV
+        /* Prediction */
+        append_item(genlist, SETTING_ITEM_ID_PREDICTION, PREDICTION, NULL, (void *)SETTING_ITEM_ID_PREDICTION, option_elements[type].itc_main_item, ELM_GENLIST_ITEM_NONE, EINA_FALSE);
+        /* voice language */
+        append_item(genlist, SETTING_ITEM_ID_VOICE_LANGUAGE, VOICE_LANGUAGE, NULL, (void *)SETTING_ITEM_ID_VOICE_LANGUAGE, option_elements[type].itc_main_item, ELM_GENLIST_ITEM_NONE, EINA_FALSE);
+#endif
 #ifndef _TV
         /* Character preview */
         append_item(genlist, SETTING_ITEM_ID_CHARACTER_PRE, CHARACTER_PREVIEW, PREVIEW_DESC, (void *)SETTING_ITEM_ID_CHARACTER_PRE, option_elements[type].itc_multi_item, ELM_GENLIST_ITEM_NONE, EINA_FALSE);