From bbc33a8f022460ef83f17c8bcbdadea1cdf4c707 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Sat, 5 Dec 2020 22:36:01 +0900 Subject: [PATCH] Reduce the duplicated code to get IME list Change-Id: I6a55d712a2a5a3f87460407e4a2f0e902da5374b Signed-off-by: Jihoon Kim --- common/ime_info.cpp | 51 ++++++++++++++++++++ common/ime_info.h | 2 + .../input_method_setting_list_popup_view.cpp | 54 +++------------------- im_setting_list/input_method_setting_list_ui.cpp | 34 +++----------- .../input_method_setting_selector_ui.cpp | 46 +----------------- 5 files changed, 66 insertions(+), 121 deletions(-) diff --git a/common/ime_info.cpp b/common/ime_info.cpp index d8956a8..f8629c0 100644 --- a/common/ime_info.cpp +++ b/common/ime_info.cpp @@ -19,6 +19,8 @@ #include #include #include +#include +#include class ime_info_compare { @@ -42,3 +44,52 @@ void im_setting_sort_ime_info(std::vector &preinstall, std::vector &active_ime_info_list, int &active_ime_id) +{ + bool result = true; + std::vector active_ime_info_list_preinstall; + std::vector 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; +} diff --git a/common/ime_info.h b/common/ime_info.h index 16876f5..456ac97 100644 --- a/common/ime_info.h +++ b/common/ime_info.h @@ -22,4 +22,6 @@ void im_setting_sort_ime_info(std::vector &preinstall, std::vector &user, std::vector &ime_info_list); +bool im_setting_load_ime_info(std::vector &active_ime_info_list, int &active_ime_id); + #endif diff --git a/im_setting_list/input_method_setting_list_popup_view.cpp b/im_setting_list/input_method_setting_list_popup_view.cpp index b708319..20f3c51 100644 --- a/im_setting_list/input_method_setting_list_popup_view.cpp +++ b/im_setting_list/input_method_setting_list_popup_view.cpp @@ -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 active_ime_info_list_preinstall; - std::vector 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 diff --git a/im_setting_list/input_method_setting_list_ui.cpp b/im_setting_list/input_method_setting_list_ui.cpp index 00dd2d5..32ad7cb 100644 --- a/im_setting_list/input_method_setting_list_ui.cpp +++ b/im_setting_list/input_method_setting_list_ui.cpp @@ -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_list_preinstall; - std::vector 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); diff --git a/im_setting_selector/input_method_setting_selector_ui.cpp b/im_setting_selector/input_method_setting_selector_ui.cpp index cb09e51..a96c81e 100644 --- a/im_setting_selector/input_method_setting_selector_ui.cpp +++ b/im_setting_selector/input_method_setting_selector_ui.cpp @@ -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_list_preinstall; - std::vector 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 -- 2.7.4