From a846ade15729ca3782c7f0f381f45903f2797624 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Fri, 8 Jun 2018 19:31:56 +0900 Subject: [PATCH] Remove duplicated code to create popup Change-Id: Ib802f1072e9b000d850ca87aa8ef088613ce49cd Signed-off-by: Jihoon Kim --- src/option.cpp | 117 ++++++++++++++++++--------------------------------------- 1 file changed, 36 insertions(+), 81 deletions(-) diff --git a/src/option.cpp b/src/option.cpp index 8dd3059..d95dd5e 100644 --- a/src/option.cpp +++ b/src/option.cpp @@ -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_data_get(obj, "parent_genlist")); + Evas_Object *genlist = static_cast(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_data_get(obj, "parent_genlist")); + Evas_Object *genlist = static_cast(evas_object_data_get(obj, "parent_object")); SCLOptionWindowType type = find_option_window_type(genlist); LOGD("type=%d\n", type); ITEMDATA *item_data = (ITEMDATA*)data; -- 2.7.4