Refactoring to reduce the duplicated code 05/245705/2 submit/tizen/20201027.005518
authorJihoon Kim <jihoon48.kim@samsung.com>
Wed, 14 Oct 2020 09:45:49 +0000 (18:45 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Wed, 21 Oct 2020 10:50:48 +0000 (19:50 +0900)
Change-Id: Ia607167d86cdbbb9d64f89c5f42d50af0434c1ce
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
common/input_method_setting_genlist.cpp [new file with mode: 0644]
common/input_method_setting_genlist.h [new file with mode: 0644]
im_setting_list/CMakeLists.txt
im_setting_list/input_method_setting_list_popup_view.cpp
im_setting_list/input_method_setting_list_ui.cpp
im_setting_selector/CMakeLists.txt
im_setting_selector/input_method_setting_selector_ui.cpp

diff --git a/common/input_method_setting_genlist.cpp b/common/input_method_setting_genlist.cpp
new file mode 100644 (file)
index 0000000..b5ed0ba
--- /dev/null
@@ -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 <Elementary.h>
+#include <efl_extension.h>
+
+#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 (file)
index 0000000..fd0058f
--- /dev/null
@@ -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 <Elementary.h>
+
+#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
index c803ff5..02bb53c 100644 (file)
@@ -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
index 5fd9922..5813c2c 100644 (file)
@@ -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 <string>
 #include <efl_extension.h>
 #include <vector>
@@ -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);
index b33b3bf..6c465f2 100644 (file)
@@ -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 <string>
 #include <app.h>
 #include <vector>
@@ -25,8 +27,7 @@
 #include <inputmethod_manager.h>
 #include <package_manager.h>
 #include <vconf.h>
-
-#include "isf_control.h"
+#include <isf_control.h>
 
 #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 */
index be48bb5..4553069 100644 (file)
@@ -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
 )
index 37b605d..8340d45 100644 (file)
@@ -22,6 +22,7 @@
 #include <algorithm>
 #include <tzplatform_config.h>
 #include <inputmethod_manager.h>
+#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();