Fix P121018-4544
authorKairong Yin <kairong78.yin@samsung.com>
Mon, 22 Oct 2012 12:07:39 +0000 (20:07 +0800)
committerKairong Yin <kairong78.yin@samsung.com>
Mon, 22 Oct 2012 12:07:39 +0000 (20:07 +0800)
Change-Id: Ie29428992b6962ac78f450340257bf92e35befee

setting-font/src/setting-font-font-size.c

index bb1571d..96b3c79 100644 (file)
@@ -60,6 +60,16 @@ setting_view setting_view_font_font_size = {
 ** basic func
 **
 ** **************************************************/
+static void __process_after_item_realized(void *data, Evas_Object *obj, void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+       SettingFontUG *ad = data;
+       if (ad->popup)
+       {
+               evas_object_del(ad->popup);
+               ad->popup = NULL;
+       }
+}
 
 static int setting_font_font_size_create(void *cb)
 {
@@ -73,6 +83,7 @@ static int setting_font_font_size_create(void *cb)
        retvm_if(ad->win_main_layout == NULL, SETTING_DRAW_ERR_FAIL_LOAD_EDJ,
                 "win_main_layout is NULL");
 
+       // create a navigation bar
        if (ad->view_to_load == &setting_view_font_font_size) {
                ad->ly_main = setting_create_layout_navi_bar_genlist(ad->win_main_layout,
                                                ad->win_get,
@@ -90,13 +101,17 @@ static int setting_font_font_size_create(void *cb)
                                                NULL,
                                                ad, &scroller, ad->navibar);
        }
-       ad->size_rdg = elm_radio_add(scroller);
-       elm_radio_state_value_set(ad->size_rdg, -1);
+
+       // [UI] separator
        Elm_Object_Item *item =
            elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
                                    ELM_GENLIST_ITEM_NONE, NULL, NULL);
        elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
 
+       // [UI] create the font list
+       ad->size_rdg = elm_radio_add(scroller);
+       elm_radio_state_value_set(ad->size_rdg, -1);
+
        int idx = 0;
        Setting_GenGroupItem_Data *item_data;
        while(font_size_table[idx].key_font_name) {
@@ -116,14 +131,16 @@ static int setting_font_font_size_create(void *cb)
                idx++;
        }
 
+       // [UI] help text
        setting_create_Gendial_field_def(scroller, &(ad->itc_bg_1icon), NULL,
                                         ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
                                         NULL, NULL, 0, STR_FONT_SIZE_CHANGING, NULL,
                                         NULL);
 
-       //update check status
+       // update check status - init values
        setting_update_chk_status(ad->size_rdg, INT_SLP_SETTING_ACCESSIBILITY_FONT_SIZE);
        setting_view_font_font_size.is_create = 1;
+       evas_object_smart_callback_add(scroller, "realized", __process_after_item_realized, ad);
        return SETTING_RETURN_SUCCESS;
 }
 
@@ -132,7 +149,6 @@ static int setting_font_font_size_destroy(void *cb)
        SETTING_TRACE_BEGIN;
        //error check
        retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
-
        SettingFontUG *ad = (SettingFontUG *) cb;
 
        if (ad->popup) {
@@ -156,6 +172,7 @@ static int setting_font_font_size_destroy(void *cb)
 static int setting_font_font_size_update(void *cb)
 {
        SETTING_TRACE_BEGIN;
+       // do nothing here
        return SETTING_RETURN_SUCCESS;
 }
 
@@ -210,58 +227,18 @@ static void __setting_font_font_size_click_softkey_back_cb(void *data, Evas_Obje
                setting_view_change(&setting_view_font_font_size, &setting_view_font_main, ad);
        }
 }
-
-/**
- * font-popup
- */
-#if DISABLED_CODE
-static void __font_size_ask_reboot_resp_cb(void *data, Evas_Object * obj,
-                                      void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       ret_if(!data);
-       Setting_GenGroupItem_Data *list_item = data;
-       int response_type = btn_type(obj);
-       ret_if(!list_item->userdata);
-       SettingFontUG *ad = (SettingFontUG *)list_item->userdata;
-
-       int err = -1;
-       int ret = -1;
-       if (POPUP_RESPONSE_OK == response_type) {
-               ret = setting_set_int_slp_key(INT_SLP_SETTING_ACCESSIBILITY_FONT_SIZE, list_item->chk_status, &err);
-               setting_retm_if(ret == -1, "Failed to set vconf");
-
-               font_size_set();
-
-               if (ad->view_to_load == &setting_view_font_font_size) {
-                       // B/S occurs if UG quit without calling redraw handler
-                       // ug_destroy_me(ad->ug);
-               } else {
-                       setting_view_change(&setting_view_font_font_size, &setting_view_font_main, ad);
-               }
-       } else if (POPUP_RESPONSE_CANCEL == response_type) {
-               int old_value = -1;
-               ret = setting_get_int_slp_key(INT_SLP_SETTING_ACCESSIBILITY_FONT_SIZE, &old_value, &err);
-               elm_radio_value_set(list_item->rgd, old_value);
-       }
-
-       if (ad->popup) {
-               evas_object_del(ad->popup);
-               ad->popup = NULL;
-       }
-       SETTING_TRACE_END;
-}
-#endif
 static void setting_font_font_size_list_mouse_up_cb(void *data, Evas_Object *obj, void *event_info)
 {
        /* error check */
+       SETTING_TRACE_BEGIN;
        retm_if(event_info == NULL, "Invalid argument: event info is NULL");
        Elm_Object_Item *item = (Elm_Object_Item *) event_info;
        elm_genlist_item_selected_set(item, 0);
-       Setting_GenGroupItem_Data *list_item =
-           (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
+       Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
 
        setting_retm_if(data == NULL, "Data parameter is NULL");
+
+       SettingFontUG *ad = list_item->userdata;
        Evas_Object *radio = data;
        elm_radio_value_set(radio, list_item->chk_status);
        int err = 0;
@@ -271,20 +248,17 @@ static void setting_font_font_size_list_mouse_up_cb(void *data, Evas_Object *obj
 
        if (old_value == list_item->chk_status) return;
 
-#if DISABLED_CODE
-       SettingFontUG *ad = (SettingFontUG *)list_item->userdata;
+       //Due to long time taken by font Setting, add the block code when font is Setting.
+       if (ad->popup) {
+               evas_object_del(ad->popup);
+               ad->popup = NULL;
+       }
+       ad->popup = setting_create_popup_with_progressbar(ad, ad->win_get,
+                                "pending_list",
+                                NULL, NULL, NULL, 0, TRUE, TRUE);
 
-       Evas_Object *popup = setting_create_popup_with_btn(list_item, (Evas_Object *)ug_get_window(),
-                                                 NULL, SETTING_FONT_SIZE_ASK,
-                                                 __font_size_ask_reboot_resp_cb,
-                                                 0, 2, _("IDS_COM_SK_YES"),_("IDS_COM_SK_NO"));
-       ret_if(!list_item->userdata);
-       ad->popup = popup;
-#else
        ret = setting_set_int_slp_key(INT_SLP_SETTING_ACCESSIBILITY_FONT_SIZE, list_item->chk_status, &err);
        setting_retm_if(ret == -1, "Failed to set vconf");
-
        font_size_set();
-#endif
-}
+ }