From: Jihoon Kim Date: Wed, 14 Oct 2020 09:45:49 +0000 (+0900) Subject: Refactoring to reduce the duplicated code X-Git-Tag: submit/tizen/20201027.005518^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8e0c2aefa6b5b2cf27a3b826e7f742f63bec4c8e;p=platform%2Fcore%2Fuifw%2Finputmethod-setting.git Refactoring to reduce the duplicated code Change-Id: Ia607167d86cdbbb9d64f89c5f42d50af0434c1ce Signed-off-by: Jihoon Kim --- diff --git a/common/input_method_setting_genlist.cpp b/common/input_method_setting_genlist.cpp new file mode 100644 index 0000000..b5ed0ba --- /dev/null +++ b/common/input_method_setting_genlist.cpp @@ -0,0 +1,68 @@ +/* + * 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 "input_method_setting_genlist.h" +#include +#include + +#ifdef _CIRCLE +static Eext_Circle_Surface *surface = NULL; +#endif + +#if !(defined(_WEARABLE) || defined(_MOBILE)) +static void gl_realized_cb(void *data, Evas_Object *obj, void *event_info) +{ + Elm_Object_Item *it = (Elm_Object_Item *)event_info; + Elm_Object_Item *first_item = elm_genlist_first_item_get(obj); + Elm_Object_Item *last_item = elm_genlist_last_item_get(obj); + + if (it == first_item && it == last_item) + elm_object_item_signal_emit(it, "elm,state,group,single", "elm"); + else if (it == first_item) + elm_object_item_signal_emit(it, "elm,state,group,top", "elm"); + else if (it == last_item) + elm_object_item_signal_emit(it, "elm,state,group,bottom", "elm"); + else + elm_object_item_signal_emit(it, "elm,state,group,middle", "elm"); +} +#endif + +Evas_Object *im_setting_genlist_create(Evas_Object* parent, Evas_Object* conform, Evas_Object **cgenlist) +{ + Evas_Object *genlist = elm_genlist_add(parent); + elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); + +#ifdef _CIRCLE + if (!surface) { + /* Circle Surface Creation */ + surface = eext_circle_surface_conformant_add(conform); + } + + Evas_Object *circle_genlist = eext_circle_object_genlist_add(genlist, surface); + eext_rotary_object_event_activated_set(circle_genlist, EINA_TRUE); + + if (cgenlist) + *cgenlist = circle_genlist; +#endif + evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + +#if !(defined(_WEARABLE) || defined(_MOBILE)) + evas_object_smart_callback_add(genlist, "realized", gl_realized_cb, NULL); +#endif + evas_object_show(genlist); + return genlist; +} diff --git a/common/input_method_setting_genlist.h b/common/input_method_setting_genlist.h new file mode 100644 index 0000000..fd0058f --- /dev/null +++ b/common/input_method_setting_genlist.h @@ -0,0 +1,24 @@ +/* + * 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 + +#ifndef __INPUTMETHOD_SETTING_GENLIST_H +#define __INPUTMETHOD_SETTING_GENLIST_H + +Evas_Object *im_setting_genlist_create(Evas_Object* parent, Evas_Object* conform, Evas_Object **cgenlist = NULL); + +#endif \ No newline at end of file diff --git a/im_setting_list/CMakeLists.txt b/im_setting_list/CMakeLists.txt index c803ff5..02bb53c 100644 --- a/im_setting_list/CMakeLists.txt +++ b/im_setting_list/CMakeLists.txt @@ -1,6 +1,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.6) SET(SRC_LIST + ../common/input_method_setting_genlist.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 5fd9922..5813c2c 100644 --- a/im_setting_list/input_method_setting_list_popup_view.cpp +++ b/im_setting_list/input_method_setting_list_popup_view.cpp @@ -17,6 +17,8 @@ #include "input_method_setting_list.h" #include "input_method_setting_list_ui.h" #include "input_method_setting_list_popup_view.h" +#include "../common/input_method_setting_genlist.h" + #include #include #include @@ -195,52 +197,6 @@ static void gl_lang_changed(void *data, Evas_Object *obj, void *event_info) elm_genlist_realized_items_update(obj); } -#if !(defined(_WEARABLE) || defined(_MOBILE)) -static void gl_realized_cb(void *data, Evas_Object *obj, void *event_info) -{ - Elm_Object_Item *it = (Elm_Object_Item *)event_info; - Elm_Object_Item *first_item = elm_genlist_first_item_get(obj); - Elm_Object_Item *last_item = elm_genlist_last_item_get(obj); - - if (it == first_item && it == last_item) { - elm_object_item_signal_emit(it, "elm,state,group,single", "elm"); - } - else if (it == first_item) { - elm_object_item_signal_emit(it, "elm,state,group,top", "elm"); - } - else if (it == last_item) { - elm_object_item_signal_emit(it, "elm,state,group,bottom", "elm"); - } - else { - elm_object_item_signal_emit(it, "elm,state,group,middle", "elm"); - } -} -#endif - -static Evas_Object *im_setting_list_genlist_create(appdata *ad, Evas_Object* parent, Evas_Object* conform) -{ - if (!parent) - return NULL; - Evas_Object *genlist = elm_genlist_add(parent); - elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); -#ifdef _CIRCLE - /* Circle Surface Creation */ - if (ad->circle_surface == NULL) - ad->circle_surface = eext_circle_surface_conformant_add(conform); - Evas_Object *circle_genlist = eext_circle_object_genlist_add(genlist, ad->circle_surface); - eext_rotary_object_event_activated_set(circle_genlist, EINA_TRUE); -#endif - evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_scroller_content_min_limit(genlist, EINA_FALSE, EINA_TRUE); - evas_object_smart_callback_add(genlist, "language,changed", gl_lang_changed, NULL); -#if !(defined(_WEARABLE) || defined(_MOBILE)) - evas_object_smart_callback_add(genlist, "realized", gl_realized_cb, NULL); -#endif - evas_object_show(genlist); - return genlist; -} - static char *im_setting_list_genlist_item_label_get(void *data, Evas_Object *obj, const char *part) { sel_cb_data *cb_data = (sel_cb_data *)data; @@ -323,7 +279,9 @@ static Evas_Object *im_setting_list_list_create(void *data) return NULL; im_setting_list_genlist_item_class_create(); Evas_Object *genlist = NULL; - genlist = im_setting_list_genlist_create(ad, ad->popup, ad->conform); + genlist = im_setting_genlist_create(ad->popup, ad->conform); + elm_scroller_content_min_limit(ad->genlist, EINA_FALSE, EINA_TRUE); + evas_object_smart_callback_add(genlist, "language,changed", gl_lang_changed, NULL); unsigned int i = 0; /* keyboard list */ @@ -440,7 +398,9 @@ static void im_setting_list_screen_create(void *data) ttc->func.text_get = im_setting_list_default_keyboard_title_text_get; im_setting_list_genlist_item_class_create(); - genlist = im_setting_list_genlist_create(ad, ad->win, ad->conform); + genlist = im_setting_genlist_create(ad->win, ad->conform); + elm_scroller_content_min_limit(genlist, EINA_FALSE, EINA_TRUE); + evas_object_smart_callback_add(genlist, "language,changed", gl_lang_changed, NULL); elm_genlist_mode_set(genlist, ELM_LIST_SCROLL); elm_genlist_item_append(genlist, ttc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); diff --git a/im_setting_list/input_method_setting_list_ui.cpp b/im_setting_list/input_method_setting_list_ui.cpp index b33b3bf..6c465f2 100644 --- a/im_setting_list/input_method_setting_list_ui.cpp +++ b/im_setting_list/input_method_setting_list_ui.cpp @@ -17,6 +17,8 @@ #include "input_method_setting_list.h" #include "input_method_setting_list_ui.h" #include "input_method_setting_list_popup_view.h" +#include "../common/input_method_setting_genlist.h" + #include #include #include @@ -25,8 +27,7 @@ #include #include #include - -#include "isf_control.h" +#include #define IM_SETTING_LIST_PACKAGE PACKAGE #define IM_SETTING_LIST_LOCALE_DIR tzplatform_mkpath(TZ_SYS_RO_APP, PACKAGE_NAME"/res/locale") @@ -507,43 +508,6 @@ static void gl_lang_changed(void *data, Evas_Object *obj, void *event_info) elm_genlist_realized_items_update(obj); } -#if !(defined(_WEARABLE) || defined(_MOBILE)) -static void gl_realized_cb(void *data, Evas_Object *obj, void *event_info) -{ - Elm_Object_Item *it = (Elm_Object_Item *)event_info; - Elm_Object_Item *first_item = elm_genlist_first_item_get(obj); - Elm_Object_Item *last_item = elm_genlist_last_item_get(obj); - - if (it == first_item && it == last_item) - elm_object_item_signal_emit(it, "elm,state,group,single", "elm"); - else if (it == first_item) - elm_object_item_signal_emit(it, "elm,state,group,top", "elm"); - else if (it == last_item) - elm_object_item_signal_emit(it, "elm,state,group,bottom", "elm"); - else - elm_object_item_signal_emit(it, "elm,state,group,middle", "elm"); -} -#endif - -static Evas_Object *im_setting_list_genlist_create(appdata *ad) -{ - Evas_Object *genlist = elm_genlist_add(ad->naviframe); - elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); -#ifdef _CIRCLE - /* Circle Surface Creation */ - if (ad->circle_surface == NULL) - ad->circle_surface = eext_circle_surface_conformant_add(ad->conform); - ad->main_circle_genlist = eext_circle_object_genlist_add(genlist, ad->circle_surface); - eext_rotary_object_event_activated_set(ad->main_circle_genlist, EINA_TRUE); -#endif - evas_object_smart_callback_add(genlist, "language,changed", gl_lang_changed, NULL); -#if !(defined(_WEARABLE) || defined(_MOBILE)) - evas_object_smart_callback_add(genlist, "realized", gl_realized_cb, NULL); -#endif - evas_object_show(genlist); - return genlist; -} - static char *im_setting_list_genlist_group_label_get(void *data, Evas_Object *obj, const char *part) { char *text = (char *)data; @@ -912,7 +876,8 @@ Evas_Object *im_setting_list_list_create(void *data) return NULL; ad->conform = im_setting_list_conform_create(ad->win); ad->naviframe = im_setting_list_naviframe_create(ad->conform); - ad->genlist = im_setting_list_genlist_create(ad); + ad->genlist = im_setting_genlist_create(ad->naviframe, ad->conform, &ad->main_circle_genlist); + evas_object_smart_callback_add(ad->genlist, "language,changed", gl_lang_changed, NULL); im_setting_list_add_ime(ad); /* Add genlist to naviframe */ diff --git a/im_setting_selector/CMakeLists.txt b/im_setting_selector/CMakeLists.txt index be48bb5..4553069 100644 --- a/im_setting_selector/CMakeLists.txt +++ b/im_setting_selector/CMakeLists.txt @@ -1,6 +1,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.6) SET(SRC_LIST + ../common/input_method_setting_genlist.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 37b605d..8340d45 100644 --- a/im_setting_selector/input_method_setting_selector_ui.cpp +++ b/im_setting_selector/input_method_setting_selector_ui.cpp @@ -22,6 +22,7 @@ #include #include #include +#include "../common/input_method_setting_genlist.h" #define IM_SETTING_SELECTOR_PACKAGE PACKAGE #define IM_SETTING_SELECTOR_LOCALE_DIR tzplatform_mkpath(TZ_SYS_RO_APP, PACKAGE_NAME"/res/locale") @@ -212,47 +213,6 @@ static void im_setting_selector_ime_sel_cb(void *data, Evas_Object *obj, void *e ecore_idler_add(_ime_select_idler_cb, ad); } -#if !(defined(_WEARABLE) || defined(_MOBILE)) -static void gl_realized_cb(void *data, Evas_Object *obj, void *event_info) -{ - Elm_Object_Item *it = (Elm_Object_Item *)event_info; - Elm_Object_Item *first_item = elm_genlist_first_item_get(obj); - Elm_Object_Item *last_item = elm_genlist_last_item_get(obj); - - if (it == first_item && it == last_item) - elm_object_item_signal_emit(it, "elm,state,group,single", "elm"); - else if (it == first_item) - elm_object_item_signal_emit(it, "elm,state,group,top", "elm"); - else if (it == last_item) - elm_object_item_signal_emit(it, "elm,state,group,bottom", "elm"); - else - elm_object_item_signal_emit(it, "elm,state,group,middle", "elm"); -} -#endif - -static Evas_Object *im_setting_selector_genlist_create(appdata *ad, Evas_Object* parent, Evas_Object* conform) -{ - Evas_Object *genlist = elm_genlist_add(parent); - elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); -#ifdef _CIRCLE - /* Circle Surface Creation */ - if (ad->circle_surface == NULL) - ad->circle_surface = eext_circle_surface_conformant_add(conform); - Evas_Object *circle_genlist = eext_circle_object_genlist_add(genlist, ad->circle_surface); - eext_rotary_object_event_activated_set(circle_genlist, EINA_TRUE); -#endif - evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_scroller_content_min_limit(genlist, EINA_FALSE, EINA_TRUE); - -#if !(defined(_WEARABLE) || defined(_MOBILE)) - evas_object_smart_callback_add(genlist, "realized", gl_realized_cb, NULL); -#endif - - evas_object_show(genlist); - return genlist; -} - static char *im_setting_selector_genlist_item_label_get(void *data, Evas_Object *obj, const char *part) { sel_cb_data *cb_data = (sel_cb_data *)data; @@ -357,7 +317,8 @@ Evas_Object *im_setting_selector_list_create(void *data) appdata *ad = (appdata *)data; if (!ad) return NULL; - ad->genlist = im_setting_selector_genlist_create(ad, ad->popup, ad->conform); + ad->genlist = im_setting_genlist_create(ad->popup, ad->conform); + elm_scroller_content_min_limit(ad->genlist, EINA_FALSE, EINA_TRUE); im_setting_selector_add_ime(ad); return ad->genlist; } @@ -487,7 +448,8 @@ static void im_setting_selector_screen_create(void *data) ad->conform = im_setting_selector_conform_create(ad->win); ad->naviframe = im_setting_selector_naviframe_create(ad->conform); - genlist = im_setting_selector_genlist_create(ad, ad->win, ad->conform); + genlist = im_setting_genlist_create(ad->win, ad->conform); + elm_scroller_content_min_limit(genlist, EINA_FALSE, EINA_TRUE); evas_object_show(ad->win); im_setting_selector_genlist_item_class_create();