Reduce the duplicated code to get IME list 72/249072/1
authorJihoon Kim <jihoon48.kim@samsung.com>
Sat, 5 Dec 2020 13:36:01 +0000 (22:36 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Mon, 7 Dec 2020 01:25:17 +0000 (10:25 +0900)
Change-Id: I6a55d712a2a5a3f87460407e4a2f0e902da5374b
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
common/ime_info.cpp
common/ime_info.h
im_setting_list/input_method_setting_list_popup_view.cpp
im_setting_list/input_method_setting_list_ui.cpp
im_setting_selector/input_method_setting_selector_ui.cpp

index d8956a8..f8629c0 100644 (file)
@@ -19,6 +19,8 @@
 #include <iostream>
 #include <algorithm>
 #include <strings.h>
+#include <inputmethod_manager.h>
+#include <dlog.h>
 
 class ime_info_compare
 {
@@ -42,3 +44,52 @@ void im_setting_sort_ime_info(std::vector<ime_info_s> &preinstall, std::vector<i
         ime_info_list.push_back(user[i]);
     }
 }
+
+bool im_setting_load_ime_info(std::vector<ime_info_s> &active_ime_info_list, int &active_ime_id)
+{
+    bool result = true;
+    std::vector<ime_info_s>      active_ime_info_list_preinstall;
+    std::vector<ime_info_s>      active_ime_info_list_user;
+    active_ime_info_list.clear();
+    char *active_ime_appid = NULL;
+
+    int ret = ime_manager_get_active_ime(&active_ime_appid);
+    if (ret == IME_MANAGER_ERROR_NONE)
+        LOGD("get active ime : %s\n", active_ime_appid);
+    else {
+        LOGW("Failed to get active ime. error : %d\n", ret);
+        result = false;
+    }
+
+    ime_info_s *info = NULL;
+    int cnt = isf_control_get_all_ime_info(&info);
+    if (info)
+    {
+        for (int i = 0; i < cnt; ++i)
+        {
+            SECURE_LOGD("%s %s %d %d %d\n", info[i].appid, info[i].label, info[i].is_enabled, info[i].is_preinstalled, info[i].has_option);
+            if (info[i].is_enabled && info[i].is_preinstalled) {
+                active_ime_info_list_preinstall.push_back(info[i]);
+            } else if (info[i].is_enabled) {
+                active_ime_info_list_user.push_back(info[i]);
+            }
+        }
+        free(info);
+    }
+
+    im_setting_sort_ime_info(active_ime_info_list_preinstall, active_ime_info_list_user, active_ime_info_list);
+    for (unsigned int i = 0; i < active_ime_info_list.size(); ++i)
+    {
+        if (active_ime_appid && (!strcmp(active_ime_appid, active_ime_info_list[i].appid)))
+        {
+            active_ime_id = i;
+        }
+    }
+
+    if (active_ime_appid)
+    {
+        free(active_ime_appid);
+    }
+
+    return result;
+}
index 16876f5..456ac97 100644 (file)
@@ -22,4 +22,6 @@
 
 void im_setting_sort_ime_info(std::vector<ime_info_s> &preinstall, std::vector<ime_info_s> &user, std::vector<ime_info_s> &ime_info_list);
 
+bool im_setting_load_ime_info(std::vector<ime_info_s> &active_ime_info_list, int &active_ime_id);
+
 #endif
index b708319..20f3c51 100644 (file)
@@ -36,50 +36,6 @@ static int                          g_active_ime_id = -1;
 
 static int selected_index = 0;
 
-static void im_setting_list_load_active_ime_info(void)
-{
-    std::vector<ime_info_s>      active_ime_info_list_preinstall;
-    std::vector<ime_info_s>      active_ime_info_list_user;
-    g_active_ime_info_list.clear();
-    char *active_ime_appid = NULL;
-
-    int ret = ime_manager_get_active_ime(&active_ime_appid);
-    if (ret == IME_MANAGER_ERROR_NONE)
-        LOGD("get active ime : %s\n", active_ime_appid);
-    else
-        LOGW("Failed to get active ime. error : %d\n", ret);
-
-    ime_info_s *info = NULL;
-    int cnt = isf_control_get_all_ime_info(&info);
-    if (info)
-    {
-        for (int i = 0; i < cnt; ++i)
-        {
-            SECURE_LOGD("%s %s %d %d %d\n", info[i].appid, info[i].label, info[i].is_enabled, info[i].is_preinstalled, info[i].has_option);
-            if (info[i].is_enabled && info[i].is_preinstalled) {
-                active_ime_info_list_preinstall.push_back(info[i]);
-            } else if (info[i].is_enabled) {
-                active_ime_info_list_user.push_back(info[i]);
-            }
-        }
-        free(info);
-    }
-
-    im_setting_sort_ime_info(active_ime_info_list_preinstall, active_ime_info_list_user, g_active_ime_info_list);
-    for (unsigned int i = 0; i < g_active_ime_info_list.size(); ++i)
-    {
-        if (active_ime_appid && (!strcmp(active_ime_appid, g_active_ime_info_list[i].appid)))
-        {
-            g_active_ime_id = i;
-        }
-    }
-
-    if (active_ime_appid)
-    {
-        free(active_ime_appid);
-    }
-}
-
 static void im_setting_list_update_radio_state(Elm_Object_Item *item, Evas_Object *obj, int index)
 {
     if (index < 0 || index >= (int)g_active_ime_info_list.size()) {
@@ -104,7 +60,8 @@ void im_setting_list_update_window_selector(void *data)
     appdata *ad = (appdata *)data;
     if (!ad)
         return;
-    im_setting_list_load_active_ime_info();
+
+    im_setting_load_ime_info(g_active_ime_info_list, g_active_ime_id);
     im_setting_list_update_window(ad);
 }
 
@@ -164,7 +121,7 @@ static void im_setting_list_ime_sel_cb(void *data, Evas_Object *obj, void *event
 
 static void gl_lang_changed(void *data, Evas_Object *obj, void *event_info)
 {
-    im_setting_list_load_active_ime_info();
+    im_setting_load_ime_info(g_active_ime_info_list, g_active_ime_id);
 
     elm_genlist_realized_items_update(obj);
 }
@@ -299,7 +256,7 @@ static Evas_Object *im_setting_list_popup_create(void *data)
 #ifdef _WEARABLE
 static void _active_keyboard_changed_cb(keynode_t* node, void* data)
 {
-    im_setting_list_load_active_ime_info();
+    im_setting_load_ime_info(g_active_ime_info_list, g_active_ime_id);
     if (group_radio != NULL) {
         elm_radio_value_set(group_radio, g_active_ime_id);
     }
@@ -407,7 +364,8 @@ im_setting_list_popup_view_create(void *data)
     if (!ad || !ad->win)
         return;
 
-    im_setting_list_load_active_ime_info();
+    im_setting_load_ime_info(g_active_ime_info_list, g_active_ime_id);
+
 #ifdef _WEARABLE
     im_setting_list_screen_create(data);
 #else
index 00dd2d5..32ad7cb 100644 (file)
@@ -127,30 +127,6 @@ static Evas_Object* im_setting_list_bg_create(Evas_Object *parent)
     return bg;
 }
 
-static void im_setting_list_load_ime_info(void)
-{
-    std::vector<ime_info_s>      ime_info_list_preinstall;
-    std::vector<ime_info_s>      ime_info_list_user;
-    ime_info_s *info = NULL;
-    g_ime_info_list.clear();
-    int cnt = isf_control_get_all_ime_info(&info);
-    if (info) {
-        for (int i = 0; i < cnt; ++i)
-        {
-            SECURE_LOGD("%s %s %d %d %d\n", info[i].appid, info[i].label, info[i].is_enabled, info[i].is_preinstalled, info[i].has_option);
-            if (info[i].is_preinstalled) {
-                ime_info_list_preinstall.push_back(info[i]);
-            } else {
-                ime_info_list_user.push_back(info[i]);
-            }
-        }
-        free(info);
-    } else {
-        LOGW("isf_control_get_all_ime_info failed\n");
-    }
-    im_setting_sort_ime_info(ime_info_list_preinstall, ime_info_list_user, g_ime_info_list);
-}
-
 static int im_setting_list_get_active_ime_index(void)
 {
     char *active_ime_appid = NULL;
@@ -478,7 +454,7 @@ static Evas_Object *im_setting_list_naviframe_create(Evas_Object* parent)
 static void gl_lang_changed(void *data, Evas_Object *obj, void *event_info)
 {
     /* Reload ime list for getting translated IME name */
-    im_setting_list_load_ime_info();
+    im_setting_load_ime_info(g_ime_info_list, g_active_ime_index);
 
     /* Set translated active IME name */
     snprintf(item_text[0].sub_text, sizeof(item_text[0].sub_text), "%s", g_ime_info_list[g_active_ime_index].label);
@@ -548,8 +524,9 @@ static Evas_Object *im_setting_list_genlist_keyboard_list_item_icon_get(void *da
         Evas_Object *ck = elm_check_add(obj);
         elm_object_style_set(ck, "on&off");
         elm_check_state_set(ck, g_gen_item_data[index].chk_status);
+#ifdef _MOBILE
         elm_object_disabled_set(ck, g_ime_info_list[index].is_preinstalled || (index == g_active_ime_index));
-#ifndef _MOBILE
+#else
         elm_object_disabled_set(ck, EINA_TRUE);
 #endif
         evas_object_propagate_events_set(ck, EINA_FALSE);
@@ -938,7 +915,8 @@ void im_setting_list_update_window(void *data)
     appdata *ad = (appdata *)data;
     if (!ad)
         return;
-    im_setting_list_load_ime_info();
+
+    im_setting_load_ime_info(g_ime_info_list, g_active_ime_index);
     im_setting_list_add_ime(ad);
 }
 
@@ -972,7 +950,7 @@ im_setting_list_app_create(void *data)
     im_setting_list_text_domain_set();
     ad->win = im_setting_list_main_window_create(PACKAGE, ad->app_type);
     im_setting_list_bg_create(ad->win);
-    im_setting_list_load_ime_info();
+    im_setting_load_ime_info(g_ime_info_list, g_active_ime_index);
 
     if (!pkgmgr) {
         int ret = package_manager_create(&pkgmgr);
index cb09e51..a96c81e 100644 (file)
@@ -79,50 +79,6 @@ im_setting_selector_main_window_create(const char *name)
     return eo;
 }
 
-static void im_setting_selector_load_ime_info(void)
-{
-    std::vector<ime_info_s>      ime_info_list_preinstall;
-    std::vector<ime_info_s>      ime_info_list_user;
-    g_ime_info_list.clear();
-    char *active_ime_appid = NULL;
-
-    int ret = ime_manager_get_active_ime(&active_ime_appid);
-    if (ret == IME_MANAGER_ERROR_NONE)
-        LOGD("get active ime : %s\n", active_ime_appid);
-    else
-        LOGW("Failed to get active ime. error : %d\n", ret);
-
-    ime_info_s *info = NULL;
-    int cnt = isf_control_get_all_ime_info(&info);
-    if (info)
-    {
-        for (int i = 0; i < cnt; ++i)
-        {
-            SECURE_LOGD("%s %s %d %d %d\n", info[i].appid, info[i].label, info[i].is_enabled, info[i].is_preinstalled, info[i].has_option);
-            if (info[i].is_enabled && info[i].is_preinstalled) {
-                ime_info_list_preinstall.push_back(info[i]);
-            } else if (info[i].is_enabled) {
-                ime_info_list_user.push_back(info[i]);
-            }
-        }
-        free(info);
-    }
-
-    im_setting_sort_ime_info(ime_info_list_preinstall, ime_info_list_user, g_ime_info_list);
-    for (unsigned int i = 0; i < g_ime_info_list.size(); ++i)
-    {
-        if (active_ime_appid && (!strcmp(active_ime_appid, g_ime_info_list[i].appid)))
-        {
-            g_active_ime_id = i;
-        }
-    }
-
-    if (active_ime_appid)
-    {
-        free(active_ime_appid);
-    }
-}
-
 #ifndef _WEARABLE
 static void im_setting_selector_select_keyboard_cb(void *data, Evas_Object *obj, void *event_info)
 {
@@ -440,7 +396,7 @@ im_setting_selector_app_create(void *data)
         return;
     im_setting_selector_text_domain_set();
     ad->win = im_setting_selector_main_window_create(PACKAGE);
-    im_setting_selector_load_ime_info();
+    im_setting_load_ime_info(g_ime_info_list, g_active_ime_id);
 #ifdef _WEARABLE
     im_setting_selector_screen_create(ad);
 #else