Add flush event for imengine 56/92756/9
authorLi Zhang <li2012.zhang@samsung.com>
Tue, 18 Oct 2016 11:38:02 +0000 (19:38 +0800)
committerJihoon Kim <jihoon48.kim@samsung.com>
Tue, 18 Oct 2016 14:44:45 +0000 (23:44 +0900)
Change-Id: I1fa7e8a6cf598ccc9bcf5d78f8aa79181770e318

src/sdk/sdk.cpp

index d17c9ce..ecafe12 100644 (file)
@@ -36,6 +36,7 @@ using namespace scl;
 #define MVK_Shift_Lock 0xffe6
 #define MVK_Shift_Enable 0x9fe7
 #define MVK_Shift_Disable 0x9fe8
+#define ISE_DEFAULT_FLUSH_EVENT_CMD 1001
 
 static ISELanguageManager _language_manager;
 extern KEYBOARD_STATE g_keyboard_state;
@@ -106,6 +107,8 @@ extern KEYBOARD_STATE g_keyboard_state;
 #define AUTOMATA_BASE_ENCODING "UCS-2"
 #define SYSTEM_OUTPUT_ENCODING "UTF8"
 
+static inline int get_lang_id(const sclchar* language);
+
 int iconv_string(const char *from, const char *to, const char *src, char *dst, size_t inleftsize, size_t outleftsize)
 {
     size_t dstlen;
@@ -256,12 +259,19 @@ SCLEventReturnType CSDKISE::on_event_key_clicked(SclUIEventDesc event_desc)
 {
     SCLEventReturnType ret = SCL_EVENT_PASS_ON;
     const sclchar * cur_lang = _language_manager.get_current_language();
+    const sclchar * cur_keyboard_ise_uuid = "";
+    int lang_id = get_lang_id(cur_lang);
+    if (lang_id != -1)
+        cur_keyboard_ise_uuid = get_lang_table()[lang_id].keyboard_ise_uuid;
+    if (event_desc.key_modifier == KEY_MODIFIER_LONGKEY)
+        g_core.send_imengine_event(-1, cur_keyboard_ise_uuid, ISE_DEFAULT_FLUSH_EVENT_CMD, 0);
 
     switch (event_desc.key_type) {
         case KEY_TYPE_CHAR:
             ret = process_key_type_char(event_desc);
             break;
         case KEY_TYPE_STRING:
+            g_core.send_imengine_event(-1, cur_keyboard_ise_uuid, ISE_DEFAULT_FLUSH_EVENT_CMD, 0);
             if (strcmp(_language_manager.get_current_language(), "Korean") == 0) {
                 process_korean_automata(false, SIPKEY_ERROR);
             }
@@ -272,6 +282,7 @@ SCLEventReturnType CSDKISE::on_event_key_clicked(SclUIEventDesc event_desc)
             break;
         case KEY_TYPE_MODECHANGE:
             {
+                g_core.send_imengine_event(-1, cur_keyboard_ise_uuid, ISE_DEFAULT_FLUSH_EVENT_CMD, 0);
                 if (strcmp(_language_manager.get_current_language(), "Korean") == 0) {
                     process_korean_automata(false, SIPKEY_ERROR);
                 }
@@ -292,12 +303,14 @@ SCLEventReturnType CSDKISE::on_event_key_clicked(SclUIEventDesc event_desc)
                 if (event_desc.key_event == MVK_space) {
                     if (_language_manager.get_enabled_languages_num() > 1) {
                         if (event_desc.key_modifier == KEY_MODIFIER_DIRECTION_LEFT) {
+                            g_core.send_imengine_event(-1, cur_keyboard_ise_uuid, ISE_DEFAULT_FLUSH_EVENT_CMD, 0);
                             /* If flick event upon space key was detected, perform a language change and don't proceed anymore */
                             _language_manager.select_previous_language();
                             g_keyboard_state.disable_force_latin = TRUE;
                             ret = SCL_EVENT_DONE;
                         }
                         if (event_desc.key_modifier == KEY_MODIFIER_DIRECTION_RIGHT) {
+                            g_core.send_imengine_event(-1, cur_keyboard_ise_uuid, ISE_DEFAULT_FLUSH_EVENT_CMD, 0);
                             /* If flick event upon space key was detected, perform a language change and don't proceed anymore */
                             _language_manager.select_next_language();
                             g_keyboard_state.disable_force_latin = TRUE;
@@ -470,7 +483,8 @@ sclboolean CSDKISE::reset_language(const sclchar *language)
     return ret;
 }
 
-static inline int get_lang_id(const sclchar* language) {
+static inline int get_lang_id(const sclchar* language)
+{
     if (language == NULL) return -1;
 
     for (int loop = 0;loop < get_lang_table_size();loop++) {