Remove duplicated code to create popup 73/181173/1
authorJihoon Kim <jihoon48.kim@samsung.com>
Fri, 8 Jun 2018 10:31:56 +0000 (19:31 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Fri, 8 Jun 2018 10:31:56 +0000 (19:31 +0900)
Change-Id: Ib802f1072e9b000d850ca87aa8ef088613ce49cd
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
src/option.cpp

index 8dd3059..d95dd5e 100644 (file)
@@ -215,7 +215,7 @@ static void reset_settings_popup_response_ok_cb(void *data, Evas_Object *obj, vo
     reset_ise_config_values();
     _language_manager.set_enabled_languages(g_config_values.enabled_languages);
 
-    Evas_Object *genlist = static_cast<Evas_Object*>(evas_object_data_get(obj, "parent_genlist"));
+    Evas_Object *genlist = static_cast<Evas_Object*>(evas_object_data_get(obj, "parent_object"));
     SCLOptionWindowType type = find_option_window_type(genlist);
 
     if (CHECK_ARRAY_INDEX(type, OPTION_WINDOW_TYPE_MAX)) {
@@ -232,7 +232,7 @@ static void reset_settings_popup_response_ok_cb(void *data, Evas_Object *obj, vo
         evas_object_del(popup);
 }
 
-static void reset_settings_popup_response_cancel_cb(void *data, Evas_Object *obj, void *event_info)
+static void popup_response_cancel_cb(void *data, Evas_Object *obj, void *event_info)
 {
     Evas_Object *popup = (Evas_Object *)data;
     if (popup)
@@ -247,13 +247,6 @@ static void clear_data_popup_response_ok_cb(void *data, Evas_Object *obj, void *
         evas_object_del(popup);
 }
 
-static void clear_data_popup_response_cancel_cb(void *data, Evas_Object *obj, void *event_info)
-{
-    Evas_Object *popup = (Evas_Object *)data;
-    if (popup)
-        evas_object_del(popup);
-}
-
 static Evas_Object *create_popup_button(Evas_Object *parent, const char *style, const char *icon_path, const char *string)
 {
     Evas_Object *btn = elm_button_add(parent);
@@ -299,11 +292,11 @@ _screen_reader_information_set(Evas_Object *obj)
 }
 #endif
 
-static void reset_settings_popup(void *data, Evas_Object *obj, void *event_info)
+static Evas_Object *show_popup(Evas_Object *parent, const char *message, const char *cancel_text, Evas_Smart_Cb cancel_cb, const char *ok_text, Evas_Smart_Cb ok_cb)
 {
     const char *icon_path = NULL;
 
-    Evas_Object *popup = elm_popup_add(elm_object_top_widget_get(obj));
+    Evas_Object *popup = elm_popup_add(elm_object_top_widget_get(parent));
     elm_popup_align_set(popup, ELM_NOTIFY_ALIGN_FILL, 1.0);
 #ifdef _TV
     elm_popup_orient_set(popup, ELM_POPUP_ORIENT_CENTER);
@@ -316,13 +309,13 @@ static void reset_settings_popup(void *data, Evas_Object *obj, void *event_info)
 
     Evas_Object *layout = elm_layout_add(popup);
     elm_layout_theme_set(layout, "layout", "popup", "content/circle/buttons2");
-    elm_object_domain_translatable_part_text_set(layout, "elm.text", PACKAGE, RESET_SETTINGS_POPUP_TEXT);
+    elm_object_domain_translatable_part_text_set(layout, "elm.text", PACKAGE, message);
     elm_object_content_set(popup, layout);
 
     /* accessibility */
     _screen_reader_information_set(layout);
 #else
-    elm_object_domain_translatable_text_set(popup, PACKAGE, RESET_SETTINGS_POPUP_TEXT);
+    elm_object_domain_translatable_text_set(popup, PACKAGE, message);
     elm_object_domain_translatable_part_text_set(popup, "title,text", PACKAGE, RESET_SETTINGS_POPUP_TITLE_TEXT);
 #endif
 
@@ -330,9 +323,9 @@ static void reset_settings_popup(void *data, Evas_Object *obj, void *event_info)
 #ifdef _CIRCLE
     icon_path = ICON_DIR"/tw_ic_popup_btn_delete.png";
 #endif
-    Evas_Object *btn_cancel = create_popup_button(popup, "popup/circle/left", icon_path, POPUP_CANCEL_BTN);
+    Evas_Object *btn_cancel = create_popup_button(popup, "popup/circle/left", icon_path, cancel_text);
     elm_object_part_content_set(popup, "button1", btn_cancel);
-    evas_object_smart_callback_add(btn_cancel, "clicked", reset_settings_popup_response_cancel_cb, popup);
+    evas_object_smart_callback_add(btn_cancel, "clicked", cancel_cb, popup);
 #ifdef _TV
     elm_object_focus_set(btn_cancel, EINA_TRUE);
 #endif
@@ -341,60 +334,23 @@ static void reset_settings_popup(void *data, Evas_Object *obj, void *event_info)
 #ifdef _CIRCLE
     icon_path = ICON_DIR"/tw_ic_popup_btn_check.png";
 #endif
-    Evas_Object *btn_ok = create_popup_button(popup, "popup/circle/right", icon_path, POPUP_OK_BTN);
-    evas_object_data_set(btn_ok, "parent_genlist", obj);
+    Evas_Object *btn_ok = create_popup_button(popup, "popup/circle/right", icon_path, ok_text);
+    evas_object_data_set(btn_ok, "parent_object", parent);
     elm_object_part_content_set(popup, "button2", btn_ok);
-    evas_object_smart_callback_add(btn_ok, "clicked", reset_settings_popup_response_ok_cb, popup);
+    evas_object_smart_callback_add(btn_ok, "clicked", ok_cb, popup);
     evas_object_show(popup);
+
+    return popup;
 }
 
-static void clear_personalized_data_popup(void *data, Evas_Object *obj, void *event_info)
+static void reset_settings_popup(void *data, Evas_Object *obj, void *event_info)
 {
-    const char *icon_path = NULL;
-
-    Evas_Object *popup = elm_popup_add(elm_object_top_widget_get(obj));
-    elm_popup_align_set(popup, ELM_NOTIFY_ALIGN_FILL, 1.0);
-#ifdef _TV
-    elm_popup_orient_set(popup, ELM_POPUP_ORIENT_CENTER);
-#endif
-    eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK, eext_popup_back_cb, NULL);
-    evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
-#ifdef _CIRCLE
-    elm_object_style_set(popup, "circle");
-
-    Evas_Object *layout = elm_layout_add(popup);
-    elm_layout_theme_set(layout, "layout", "popup", "content/circle/buttons2");
-    elm_object_domain_translatable_part_text_set(layout, "elm.text", PACKAGE, CLEAR_PERSONLIZED_DATA_POPUP_TEXT);
-    elm_object_content_set(popup, layout);
-
-    /* accessibility */
-    _screen_reader_information_set(layout);
-#else
-    elm_object_domain_translatable_text_set(popup, PACKAGE, RESET_SETTINGS_POPUP_TEXT);
-    elm_object_domain_translatable_part_text_set(popup, "title,text", PACKAGE, RESET_SETTINGS_POPUP_TITLE_TEXT);
-#endif
-
-    /* Cancel button */
-#ifdef _CIRCLE
-    icon_path = ICON_DIR"/tw_ic_popup_btn_delete.png";
-#endif
-    Evas_Object *btn_cancel = create_popup_button(popup, "popup/circle/left", icon_path, POPUP_CANCEL_BTN);
-    elm_object_part_content_set(popup, "button1", btn_cancel);
-    evas_object_smart_callback_add(btn_cancel, "clicked", clear_data_popup_response_cancel_cb, popup);
-#ifdef _TV
-    elm_object_focus_set(btn_cancel, EINA_TRUE);
-#endif
+    show_popup(obj, RESET_SETTINGS_POPUP_TEXT, POPUP_CANCEL_BTN, popup_response_cancel_cb, POPUP_OK_BTN, reset_settings_popup_response_ok_cb);
+}
 
-    /* Ok button */
-#ifdef _CIRCLE
-    icon_path = ICON_DIR"/tw_ic_popup_btn_check.png";
-#endif
-    Evas_Object *btn_ok = create_popup_button(popup, "popup/circle/right", icon_path, POPUP_OK_BTN);
-    evas_object_data_set(btn_ok, "parent_genlist", obj);
-    elm_object_part_content_set(popup, "button2", btn_ok);
-    evas_object_smart_callback_add(btn_ok, "clicked", clear_data_popup_response_ok_cb, popup);
-    evas_object_show(popup);
+static void clear_personalized_data_popup(void *data, Evas_Object *obj, void *event_info)
+{
+    show_popup(obj, CLEAR_PERSONLIZED_DATA_POPUP_TEXT, POPUP_CANCEL_BTN, popup_response_cancel_cb, POPUP_OK_BTN, clear_data_popup_response_ok_cb);
 }
 
 static char *_main_gl_text_get(void *data, Evas_Object *obj, const char *part)
@@ -496,25 +452,28 @@ static void _gl_relesed_cb(void *data, Evas_Object *obj, void *event_info)
 }
 #endif
 
+static Evas_Object *get_check(Elm_Object_Item *item)
+{
+    Evas_Object *ck;
+    ck = elm_object_item_part_content_get(item, "elm.swallow.end");
+    if (ck == NULL)
+        ck = elm_object_item_part_content_get(item, "elm.icon");
+
+    return ck;
+}
+
 static Eina_Bool _update_check_button_state(Elm_Object_Item *item, Evas_Object *obj)
 {
     Eina_Bool state = EINA_FALSE;
     if (item && obj) {
         elm_genlist_item_selected_set(item, EINA_FALSE);
         /* Update check button */
-#ifndef _TV
-        Evas_Object *ck = elm_object_item_part_content_get(item, "elm.swallow.end");
-        if (ck == NULL)
-            ck = elm_object_item_part_content_get(item, "elm.icon");
-        evas_object_data_set(ck, "parent_genlist", obj);
+        Evas_Object *ck = get_check(item);
+        evas_object_data_set(ck, "parent_object", obj);
         state = !elm_check_state_get(ck);
+#ifndef _TV
         elm_check_state_set(ck, state);
 #else
-        Evas_Object *ck = elm_object_item_part_content_get(item, "elm.swallow.end");
-        if (ck == NULL)
-            ck = elm_object_item_part_content_get(item, "elm.icon");
-        evas_object_data_set(ck, "parent_genlist", obj);
-        state = !tv_check_state_get(ck);
         tv_switch_check_state(ck, state);
 #endif
     }
@@ -653,7 +612,7 @@ static Evas_Object *_language_gl_content_get(void *data, Evas_Object *obj, const
                 LANGUAGE_INFO *info = _language_manager.get_language_info(item_data->mode);
                 if (info) {
                     Evas_Object *ck = _create_check_button(obj, info->enabled);
-                    evas_object_data_set(ck, "parent_genlist", obj);
+                    evas_object_data_set(ck, "parent_object", obj);
                     evas_object_smart_callback_add(ck, "changed", language_selected, data);
                     evas_object_show(ck);
                     item = ck;
@@ -677,13 +636,9 @@ static void _language_gl_sel(void *data, Evas_Object *obj, void *event_info)
         elm_genlist_item_selected_set(item, EINA_FALSE);
 
         // Update check button
-        Evas_Object *ck = elm_object_item_part_content_get(item, "elm.swallow.end");
-        if (!ck) {
-            ck = elm_object_item_part_content_get(item, "elm.icon");
-        }
-
+        Evas_Object *ck = get_check(item);
         if (ck) {
-            evas_object_data_set(ck, "parent_genlist", obj);
+            evas_object_data_set(ck, "parent_object", obj);
             Eina_Bool state = elm_check_state_get(ck);
             elm_check_state_set(ck, !state);
             language_selected(item_data, ck, NULL);
@@ -1450,7 +1405,7 @@ static void language_view_popup_show(Evas_Object *obj, SCLOptionWindowType type,
 
 static void language_selected(void *data, Evas_Object *obj, void *event_info)
 {
-    Evas_Object *genlist = static_cast<Evas_Object*>(evas_object_data_get(obj, "parent_genlist"));
+    Evas_Object *genlist = static_cast<Evas_Object*>(evas_object_data_get(obj, "parent_object"));
     SCLOptionWindowType type = find_option_window_type(genlist);
     LOGD("type=%d\n", type);
     ITEMDATA *item_data = (ITEMDATA*)data;