From: Jihoon Kim Date: Wed, 18 Nov 2020 03:05:46 +0000 (+0900) Subject: Reduce duplicated code X-Git-Tag: submit/tizen/20201118.075702~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=131cb704d8203080d347ac6020519dce63702de8;p=platform%2Fcore%2Fuifw%2Finputmethod-setting.git Reduce duplicated code Change-Id: I8f17d95d9711719105ba7da22a87cfbcbc8dce63 Signed-off-by: Jihoon Kim --- diff --git a/common/ime_info.cpp b/common/ime_info.cpp new file mode 100644 index 0000000..d8956a8 --- /dev/null +++ b/common/ime_info.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2020 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 "ime_info.h" +#include +#include +#include +#include + +class ime_info_compare +{ + public: + bool operator()(const ime_info_s &first, const ime_info_s &sec) + { + return (strcasecmp(first.label, sec.label) < 0); + } +}; + +void im_setting_sort_ime_info(std::vector &preinstall, std::vector &user, std::vector &ime_info_list) +{ + std::sort(preinstall.begin(), preinstall.end(), ime_info_compare()); + std::sort(user.begin(), user.end(), ime_info_compare()); + for (unsigned int i = 0; i < preinstall.size(); ++i) + { + ime_info_list.push_back(preinstall[i]); + } + for (unsigned int i = 0; i < user.size(); ++i) + { + ime_info_list.push_back(user[i]); + } +} diff --git a/common/ime_info.h b/common/ime_info.h new file mode 100644 index 0000000..16876f5 --- /dev/null +++ b/common/ime_info.h @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2020 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 +#include + +#ifndef __IME_INFO_H +#define __IME_INFO_H + +void im_setting_sort_ime_info(std::vector &preinstall, std::vector &user, std::vector &ime_info_list); + +#endif diff --git a/common/input_method_setting_genlist.cpp b/common/input_method_setting_genlist.cpp index b5ed0ba..58d093f 100644 --- a/common/input_method_setting_genlist.cpp +++ b/common/input_method_setting_genlist.cpp @@ -40,6 +40,32 @@ static void gl_realized_cb(void *data, Evas_Object *obj, void *event_info) } #endif +Evas_Object *im_setting_genlist_item_icon_get(void *data, Evas_Object *obj, const char *part) +{ + sel_cb_data *cb_data = (sel_cb_data *)data; + if (!cb_data) + return NULL; + + int index = cb_data->index; + Elm_Object_Item *it = elm_genlist_nth_item_get(obj, index); + + if (!strcmp(part, "elm.swallow.end") || + !strcmp(part, "elm.icon")) { + Evas_Object *radio = elm_radio_add(obj); + elm_object_style_set(radio, "list"); + elm_radio_state_value_set(radio, index); + evas_object_propagate_events_set(radio, EINA_TRUE); + elm_radio_group_add(radio, cb_data->group_radio); + evas_object_show(radio); + + elm_atspi_accessible_relationship_append(it, ELM_ATSPI_RELATION_DESCRIBED_BY, radio); + elm_atspi_accessible_relationship_append(radio, ELM_ATSPI_RELATION_CONTROLLED_BY, it); + + return radio; + } + return NULL; +} + Evas_Object *im_setting_genlist_create(Evas_Object* parent, Evas_Object* conform, Evas_Object **cgenlist) { Evas_Object *genlist = elm_genlist_add(parent); diff --git a/common/input_method_setting_genlist.h b/common/input_method_setting_genlist.h index fd0058f..eb803bf 100644 --- a/common/input_method_setting_genlist.h +++ b/common/input_method_setting_genlist.h @@ -19,6 +19,24 @@ #ifndef __INPUTMETHOD_SETTING_GENLIST_H #define __INPUTMETHOD_SETTING_GENLIST_H +#ifdef _WEARABLE +#define IME_SETTING_LIST_1LINE_STYLE "1text.1icon.1" +#define IME_SETTING_LIST_2LINE_STYLE "1text.1icon.1" +#elif _MOBILE +#define IME_SETTING_LIST_1LINE_STYLE "type1" +#define IME_SETTING_LIST_2LINE_STYLE "type1" +#else +#define IME_SETTING_LIST_1LINE_STYLE "1line" +#define IME_SETTING_LIST_2LINE_STYLE "2line" +#endif + +typedef struct { + void *data; + int index; + Evas_Object *group_radio; +} sel_cb_data; + Evas_Object *im_setting_genlist_create(Evas_Object* parent, Evas_Object* conform, Evas_Object **cgenlist = NULL); +Evas_Object *im_setting_genlist_item_icon_get(void *data, Evas_Object *obj, const char *part); -#endif \ No newline at end of file +#endif diff --git a/im_setting_list/CMakeLists.txt b/im_setting_list/CMakeLists.txt index 02bb53c..a995ae9 100644 --- a/im_setting_list/CMakeLists.txt +++ b/im_setting_list/CMakeLists.txt @@ -2,6 +2,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.6) SET(SRC_LIST ../common/input_method_setting_genlist.cpp + ../common/ime_info.cpp input_method_setting_list_ui.cpp input_method_setting_list.cpp input_method_setting_list_popup_view.cpp 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 5813c2c..b708319 100644 --- a/im_setting_list/input_method_setting_list_popup_view.cpp +++ b/im_setting_list/input_method_setting_list_popup_view.cpp @@ -18,12 +18,12 @@ #include "input_method_setting_list_ui.h" #include "input_method_setting_list_popup_view.h" #include "../common/input_method_setting_genlist.h" +#include "../common/ime_info.h" #include #include #include #include -#include #include #include @@ -34,36 +34,8 @@ static Elm_Genlist_Item_Class *itc_im_list = NULL; static Evas_Object *group_radio = NULL; static int g_active_ime_id = -1; -typedef struct { - void *data; - int index; -} sel_cb_data; - -class ime_info_compare -{ - public: - bool operator()(const ime_info_s &first, const ime_info_s &sec) - { - return (strcasecmp(first.label, sec.label) < 0); - } -}; - static int selected_index = 0; -static void im_setting_list_sort_ime_info(std::vector &preinstall, std::vector &user) -{ - std::sort(preinstall.begin(), preinstall.end(), ime_info_compare()); - std::sort(user.begin(), user.end(), ime_info_compare()); - for (unsigned int i = 0; i < preinstall.size(); ++i) - { - g_active_ime_info_list.push_back(preinstall[i]); - } - for (unsigned int i = 0; i < user.size(); ++i) - { - g_active_ime_info_list.push_back(user[i]); - } -} - static void im_setting_list_load_active_ime_info(void) { std::vector active_ime_info_list_preinstall; @@ -93,7 +65,7 @@ static void im_setting_list_load_active_ime_info(void) free(info); } - im_setting_list_sort_ime_info(active_ime_info_list_preinstall, active_ime_info_list_user); + 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))) @@ -218,32 +190,6 @@ static char *im_setting_list_genlist_item_label_get(void *data, Evas_Object *obj return NULL; } -static Evas_Object *im_setting_list_genlist_item_icon_get(void *data, Evas_Object *obj, const char *part) -{ - sel_cb_data *cb_data = (sel_cb_data *)data; - if (!cb_data) - return NULL; - - int index = cb_data->index; - Elm_Object_Item *it = elm_genlist_nth_item_get(obj, index); - - if (!strcmp(part, "elm.swallow.end") || - !strcmp(part, "elm.icon")) { - Evas_Object *radio = elm_radio_add(obj); - elm_object_style_set(radio, "list"); - elm_radio_state_value_set(radio, index); - evas_object_propagate_events_set(radio, EINA_TRUE); - elm_radio_group_add(radio, group_radio); - evas_object_show(radio); - - elm_atspi_accessible_relationship_append(it, ELM_ATSPI_RELATION_DESCRIBED_BY, radio); - elm_atspi_accessible_relationship_append(radio, ELM_ATSPI_RELATION_CONTROLLED_BY, it); - - return radio; - } - return NULL; -} - static void im_setting_list_genlist_item_del_cb(void *data, Evas_Object *obj) { sel_cb_data *cb_data = (sel_cb_data *)data; @@ -257,15 +203,9 @@ static void im_setting_list_genlist_item_class_create(void) { itc_im_list = elm_genlist_item_class_new(); if (itc_im_list) { -#ifdef _WEARABLE - itc_im_list->item_style = "1text.1icon.1"; -#elif _MOBILE - itc_im_list->item_style = "type1"; -#else - itc_im_list->item_style = "1line"; -#endif + itc_im_list->item_style = IME_SETTING_LIST_1LINE_STYLE; itc_im_list->func.text_get = im_setting_list_genlist_item_label_get; - itc_im_list->func.content_get = im_setting_list_genlist_item_icon_get; + itc_im_list->func.content_get = im_setting_genlist_item_icon_get; itc_im_list->func.state_get = NULL; itc_im_list->func.del = im_setting_list_genlist_item_del_cb; } @@ -289,6 +229,7 @@ static Evas_Object *im_setting_list_list_create(void *data) sel_cb_data *cb_data = new sel_cb_data; cb_data->data = data; cb_data->index = i; + cb_data->group_radio = group_radio; elm_genlist_item_append(genlist, itc_im_list, (void *)(cb_data), @@ -415,6 +356,7 @@ static void im_setting_list_screen_create(void *data) sel_cb_data *cb_data = new sel_cb_data; cb_data->data = data; cb_data->index = i; + cb_data->group_radio = group_radio; elm_genlist_item_append(genlist, itc_im_list, (void *)(cb_data), diff --git a/im_setting_list/input_method_setting_list_ui.cpp b/im_setting_list/input_method_setting_list_ui.cpp index 39e3ad3..00dd2d5 100644 --- a/im_setting_list/input_method_setting_list_ui.cpp +++ b/im_setting_list/input_method_setting_list_ui.cpp @@ -18,11 +18,11 @@ #include "input_method_setting_list_ui.h" #include "input_method_setting_list_popup_view.h" #include "../common/input_method_setting_genlist.h" +#include "../common/ime_info.h" #include #include #include -#include #include #include #include @@ -72,19 +72,10 @@ typedef struct _Item_Data Elm_Object_Item *item; } Item_Data; -class ime_info_compare -{ - public: - bool operator()(const ime_info_s &first, const ime_info_s &sec) - { - return (strcasecmp(first.label, sec.label) < 0); - } -}; - typedef void (*popup_ok_cb)(void *data, Evas_Object *obj, void *event_info); typedef void (*popup_cancel_cb)(void *data, Evas_Object *obj, void *event_info); -static std::vector g_ime_info_list; +std::vector g_ime_info_list; static Elm_Genlist_Item_Class *itc_im_list_keyboard_list = NULL; static Elm_Genlist_Item_Class *itc_im_list_group = NULL; static Elm_Genlist_Item_Class *itc_im_list_item = NULL; @@ -136,20 +127,6 @@ static Evas_Object* im_setting_list_bg_create(Evas_Object *parent) return bg; } -static void im_setting_list_sort_ime_info(std::vector &preinstall, std::vector &user) -{ - std::sort(preinstall.begin(), preinstall.end(), ime_info_compare()); - std::sort(user.begin(), user.end(), ime_info_compare()); - for (unsigned int i = 0; i < preinstall.size(); ++i) - { - g_ime_info_list.push_back(preinstall[i]); - } - for (unsigned int i = 0; i < user.size(); ++i) - { - g_ime_info_list.push_back(user[i]); - } -} - static void im_setting_list_load_ime_info(void) { std::vector ime_info_list_preinstall; @@ -171,7 +148,7 @@ static void im_setting_list_load_ime_info(void) } else { LOGW("isf_control_get_all_ime_info failed\n"); } - im_setting_list_sort_ime_info(ime_info_list_preinstall, ime_info_list_user); + 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) @@ -653,13 +630,7 @@ static void im_setting_list_genlist_item_class_create(int app_type) itc_im_list_keyboard_list = elm_genlist_item_class_new(); if (itc_im_list_keyboard_list) { -#ifdef _WEARABLE - itc_im_list_keyboard_list->item_style = "1text.1icon.1"; -#elif _MOBILE - itc_im_list_keyboard_list->item_style = "type1"; -#else - itc_im_list_keyboard_list->item_style = "2line"; -#endif + itc_im_list_keyboard_list->item_style = IME_SETTING_LIST_2LINE_STYLE; itc_im_list_keyboard_list->func.text_get = im_setting_list_genlist_keyboard_list_item_label_get; itc_im_list_keyboard_list->func.content_get = im_setting_list_genlist_keyboard_list_item_icon_get; itc_im_list_keyboard_list->func.state_get = NULL; diff --git a/im_setting_selector/CMakeLists.txt b/im_setting_selector/CMakeLists.txt index 4553069..b5cee92 100644 --- a/im_setting_selector/CMakeLists.txt +++ b/im_setting_selector/CMakeLists.txt @@ -2,6 +2,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.6) SET(SRC_LIST ../common/input_method_setting_genlist.cpp + ../common/ime_info.cpp input_method_setting_selector_ui.cpp input_method_setting_selector.cpp ) diff --git a/im_setting_selector/input_method_setting_selector_ui.cpp b/im_setting_selector/input_method_setting_selector_ui.cpp index 8d86fe3..cb09e51 100644 --- a/im_setting_selector/input_method_setting_selector_ui.cpp +++ b/im_setting_selector/input_method_setting_selector_ui.cpp @@ -19,10 +19,10 @@ #include #include #include -#include #include #include #include "../common/input_method_setting_genlist.h" +#include "../common/ime_info.h" #define IM_SETTING_SELECTOR_PACKAGE PACKAGE #define IM_SETTING_SELECTOR_LOCALE_DIR tzplatform_mkpath(TZ_SYS_RO_APP, PACKAGE_NAME"/res/locale") @@ -34,20 +34,6 @@ static Elm_Genlist_Item_Class *itc_im_selector = NULL; static Evas_Object *group_radio = NULL; static int g_active_ime_id = -1; -typedef struct { - void *data; - int index; -} sel_cb_data; - -class ime_info_compare -{ - public: - bool operator()(const ime_info_s &first, const ime_info_s &sec) - { - return (strcasecmp(first.label, sec.label) < 0); - } -}; - static int selected_index = 0; static void im_setting_selector_text_domain_set(void) @@ -93,20 +79,6 @@ im_setting_selector_main_window_create(const char *name) return eo; } -static void im_setting_selector_sort_ime_info(std::vector &preinstall, std::vector &user) -{ - std::sort(preinstall.begin(), preinstall.end(), ime_info_compare()); - std::sort(user.begin(), user.end(), ime_info_compare()); - for (unsigned int i = 0; i < preinstall.size(); ++i) - { - g_ime_info_list.push_back(preinstall[i]); - } - for (unsigned int i = 0; i < user.size(); ++i) - { - g_ime_info_list.push_back(user[i]); - } -} - static void im_setting_selector_load_ime_info(void) { std::vector ime_info_list_preinstall; @@ -136,7 +108,7 @@ static void im_setting_selector_load_ime_info(void) free(info); } - im_setting_selector_sort_ime_info(ime_info_list_preinstall, ime_info_list_user); + 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))) @@ -237,32 +209,6 @@ static char *im_setting_selector_genlist_item_label_get(void *data, Evas_Object return NULL; } -static Evas_Object *im_setting_selector_genlist_item_icon_get(void *data, Evas_Object *obj, const char *part) -{ - sel_cb_data *cb_data = (sel_cb_data *)data; - if (!cb_data) - return NULL; - - int index = cb_data->index; - Elm_Object_Item *it = elm_genlist_nth_item_get(obj, index); - - if (!strcmp(part, "elm.swallow.end") || - !strcmp(part, "elm.icon")) { - Evas_Object *radio = elm_radio_add(obj); - elm_object_style_set(radio, "list"); - elm_radio_state_value_set(radio, index); - evas_object_propagate_events_set(radio, EINA_TRUE); - elm_radio_group_add(radio, group_radio); - evas_object_show(radio); - - elm_atspi_accessible_relationship_append(it, ELM_ATSPI_RELATION_DESCRIBED_BY, radio); - elm_atspi_accessible_relationship_append(radio, ELM_ATSPI_RELATION_CONTROLLED_BY, it); - - return radio; - } - return NULL; -} - static void im_setting_selector_genlist_item_del_cb(void *data, Evas_Object *obj) { @@ -277,15 +223,9 @@ static void im_setting_selector_genlist_item_class_create(void) { itc_im_selector = elm_genlist_item_class_new(); if (itc_im_selector) { -#ifdef _WEARABLE - itc_im_selector->item_style = "1text.1icon.1"; -#elif _MOBILE - itc_im_selector->item_style = "type1"; -#else - itc_im_selector->item_style = "1line"; -#endif + itc_im_selector->item_style = IME_SETTING_LIST_1LINE_STYLE; itc_im_selector->func.text_get = im_setting_selector_genlist_item_label_get; - itc_im_selector->func.content_get = im_setting_selector_genlist_item_icon_get; + itc_im_selector->func.content_get = im_setting_genlist_item_icon_get; itc_im_selector->func.state_get = NULL; itc_im_selector->func.del = im_setting_selector_genlist_item_del_cb; } @@ -303,6 +243,7 @@ static void im_setting_selector_add_ime(void *data) { sel_cb_data *cb_data = new sel_cb_data; cb_data->data = data; cb_data->index = i; + cb_data->group_radio = group_radio; elm_genlist_item_append(ad->genlist, itc_im_selector, @@ -468,6 +409,8 @@ static void im_setting_selector_screen_create(void *data) sel_cb_data *cb_data = new sel_cb_data; cb_data->data = data; cb_data->index = i; + cb_data->group_radio = group_radio; + elm_genlist_item_append(genlist, itc_im_selector, (void *)(cb_data),