tizen 2.4 release
[apps/home/settings.git] / setting-phone / src / setting-phone-region-format.c
index 5ea10e9..89403bf 100644 (file)
@@ -20,6 +20,9 @@
  */
 #include <setting-phone-region-format.h>
 #include <setting-common-draw-widget.h>
+#include <eventsystem.h>
+
+#include <system_settings.h>
 
 #define MAX_REGION_STRLEN 256
 
@@ -35,8 +38,6 @@ setting_view setting_view_phone_region_format = {
        .cleanup = setting_phone_region_format_cleanup,
 };
 
-
-
 /**
  * @brief Function of add color to display string by html charactor
  *
@@ -140,20 +141,21 @@ static int setting_phone_region_format_compare_cb(const void *d1, const void *d2
 
        UErrorCode status = U_ZERO_ERROR;
        UCollator *coll = ucol_open(getenv("LANG"), &status);
-       UCollationResult ret = ucol_strcoll(coll, region1, -1, region2, -1);
+       if (coll) {
+               UCollationResult ret = ucol_strcoll(coll, region1, -1, region2, -1);
 
-       ucol_close(coll);
+               ucol_close(coll);
 
-       switch (ret) {
+               switch (ret) {
                case UCOL_EQUAL:
                        return 0;
                case UCOL_GREATER:
                        return 1;
                case UCOL_LESS:
                        return -1;
-               default:
-                       return 0;
+               }
        }
+       return SETTING_RETURN_FAIL;
 }
 
 
@@ -168,9 +170,9 @@ static int setting_phone_region_format_compare_cb(const void *d1, const void *d2
  * @return #0 is correct
  */
 static int setting_phone_region_format_get_region_fmt(char *list[],
-                                                      int item_idx[],
-                                                      /*[OUT]*/ char *region_keyStr[],
-                                                      int *region_num)
+                                                                                                         int item_idx[],
+                                                                                                         /*[OUT]*/ char *region_keyStr[],
+                                                                                                         int *region_num)
 {
        const char *loc_list = NULL;
        int loc_count = 0;
@@ -200,13 +202,37 @@ static int setting_phone_region_format_get_region_fmt(char *list[],
        SETTING_TRACE("localeID = %s", localeID);
 
        for (; i < loc_count; i++) {
+
+
                if (tmp_region_num >= REGION_ITEM_MAX) {
                        break;
                }
 
                loc_list = uloc_getAvailable(i);
+               setting_retvm_if(NULL == loc_list, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER, "loc_list is NULL");
+
+               char* e = strchr(loc_list, '_');
+               char* result;
+               if (e) {
+                       int index = (int)(e-loc_list);
+                       result = substring(loc_list, 0, index);
+                       //SETTING_TRACE("lang code : %s", result);
+               } else {
+                       //SETTING_TRACE("lang code itself : %s", loc_list);
+                       result = loc_list;
+               }
+
+               //****************************************************************************
+               //****************************************************************************
+               //****************************************************************************
+               // current font doesn't support the font
+               // filter out if result == 'bo'
+               if (0 == safeStrCmp(result, "bo")
+                       || 0 == safeStrCmp(result, "dz") ) continue;
+               //****************************************************************************
+               //****************************************************************************
+               //****************************************************************************
 
-               /* SETTING_TRACE("loc_list = %s", loc_list); */
                uloc_getDisplayLanguage(loc_list, localeID, lang, LANGUAGE_STR_LEN, &language_status);
                if (U_FAILURE(language_status)) {
                        SETTING_TRACE_ERROR("language_status got an error %s:%d ", language_status, language_status);
@@ -237,9 +263,37 @@ static int setting_phone_region_format_get_region_fmt(char *list[],
                str_variant = setting_phone_lang_str_to_utf8(variant);
                str_displayname = setting_phone_lang_str_to_utf8(displayname);
 
+               //SETTING_TRACE(" lang : %s, country : %s ---> str_displayname : %s ", str_lang, str_country, str_displayname);
+
+               if (0 == safeStrCmp(str_lang, result)) {
+                       //SETTING_TRACE(" str_lang is equal to result %s %s ", str_lang, result);
+                       FREE(str_lang);
+                       FREE(str_country);
+                       FREE(str_variant);
+                       FREE(str_displayname);
+                       continue;
+
+               }
+
+               if (str_lang == NULL) {
+                       //SETTING_TRACE(" str_lang is NULL. ");
+                       FREE(str_lang);
+                       FREE(str_country);
+                       FREE(str_variant);
+                       FREE(str_displayname);
+                       continue;
+               } else if (0 == safeStrCmp(str_lang, "")) {
+                       //SETTING_TRACE(" str_lang is Empty string. ");
+                       FREE(str_lang);
+                       FREE(str_country);
+                       FREE(str_variant);
+                       FREE(str_displayname);
+                       continue;
+               }
+
                /*  filter which has variant */
                if (str_lang != NULL && str_country != NULL
-                   && safeStrLen(str_country) > 1 && safeStrLen(str_variant) == 0) {
+                       && safeStrLen(str_country) > 1 && safeStrLen(str_variant) == 0) {
                        Setting_Region_Table *item_data = (Setting_Region_Table *) calloc(1, sizeof(Setting_Region_Table));
                        /*setting_retvm_if(item_data == NULL, -1, "calloc failed") */
 
@@ -265,7 +319,7 @@ static int setting_phone_region_format_get_region_fmt(char *list[],
        }
 
        region_list = eina_list_sort(region_list, eina_list_count(region_list),
-                                    setting_phone_region_format_compare_cb);
+                                                                setting_phone_region_format_compare_cb);
 
        Eina_List *iter = NULL;
        Setting_Region_Table *item_data = NULL;
@@ -296,7 +350,7 @@ static int setting_phone_region_format_get_region_fmt(char *list[],
  * @param data The view data passed between all callbacks
  */
 EXPORT_PUBLIC int setting_phone_region_format_set_dateformat(const char *region,
-                                                             void *data)
+                                                                                                                        void *data)
 {
        SETTING_TRACE_BEGIN;
        setting_retvm_if(!region, SETTING_RETURN_FAIL, "region parameter is NULL");
@@ -317,7 +371,7 @@ EXPORT_PUBLIC int setting_phone_region_format_set_dateformat(const char *region,
        setting_retvm_if(!uret, SETTING_RETURN_FAIL, "u_uastrncpy is fail");
 
        if (ad->pattern_generator == NULL
-           || safeStrCmp(region, ad->prev_locale) != 0) {
+               || safeStrCmp(region, ad->prev_locale) != 0) {
                if (ad->pattern_generator != NULL) {
                        udatpg_close(ad->pattern_generator);
                        ad->pattern_generator = NULL;
@@ -326,10 +380,10 @@ EXPORT_PUBLIC int setting_phone_region_format_set_dateformat(const char *region,
        }
 
        int32_t bestPatternCapacity =
-           (int32_t)(sizeof(bestPattern) / sizeof((bestPattern)[0]));
+               (int32_t)(sizeof(bestPattern) / sizeof((bestPattern)[0]));
        (void)udatpg_getBestPattern(ad->pattern_generator, customSkeleton,
-                                   u_strlen(customSkeleton), bestPattern,
-                                   bestPatternCapacity, &status);
+                                                               u_strlen(customSkeleton), bestPattern,
+                                                               bestPatternCapacity, &status);
 
        ret_str = u_austrcpy(bestPatternString, bestPattern);
        setting_retvm_if(!ret_str, SETTING_RETURN_FAIL, "u_uastrncpy is fail");
@@ -371,8 +425,8 @@ EXPORT_PUBLIC int setting_phone_region_format_set_dateformat(const char *region,
        }
 
        SETTING_TRACE("bestPatternString : %s, format: %s, index: %d",
-                     bestPatternString, region_format,
-                     date_format_vconf_value);
+                                 bestPatternString, region_format,
+                                 date_format_vconf_value);
 
        int err = SETTING_RETURN_SUCCESS;
        setting_set_int_slp_key(INT_SLP_SETTING_DATE_FORMAT, date_format_vconf_value, &err);
@@ -438,97 +492,107 @@ static Eina_Bool __region_genlist_update(void *data)
        ad->selected_region_idx = -1;
 
        int search_count = 0;
-       if (isEmptyStr(ad->search_text) || is_substr_ncase(_("IDS_COM_BODY_AUTOMATIC"), ad->search_text)) {
+       if (isEmptyStr(ad->search_text) || is_substr_ncase(_("IDS_ST_BODY_ANSWERINGMODE_AUTOMATIC"), ad->search_text)) {
 
-               char *buf = __setting_phone_region_format_get_str_colr(ad, _("IDS_COM_BODY_AUTOMATIC"));
+               char *buf = __setting_phone_region_format_get_str_colr(ad, _("IDS_ST_BODY_ANSWERINGMODE_AUTOMATIC"));
                /*SETTING_TRACE_DEBUG("buf: %s", buf); */
 
                item_data = setting_create_Gendial_field_def(ad->gl_region,
-                                                            &(ad->itc_1text_tb),
-                                                            setting_phone_region_format_mouse_up_Gendial_list_radio_cb,
-                                                            ad->chk_region,
-                                                            SWALLOW_Type_INVALID, NULL, NULL,
-                                                            -1,
-                                                            buf, NULL, NULL);
+                                                                                                        &(ad->itc_1text_tb),
+                                                                                                        setting_phone_region_format_mouse_up_Gendial_list_radio_cb,
+                                                                                                        ad->chk_region,
+                                                                                                        SWALLOW_Type_INVALID, NULL, NULL,
+                                                                                                        -1,
+                                                                                                        buf, NULL, NULL);
                if (item_data) {
                        item_data->userdata = ad;
-                       item_data->keyStr2 = _("IDS_COM_BODY_AUTOMATIC");
-                       item_data->group_style = SETTING_GROUP_STYLE_TOP;
+                       item_data->keyStr2 = _("IDS_ST_BODY_ANSWERINGMODE_AUTOMATIC");
                } else {
                        SETTING_TRACE_ERROR("item_data is NULL");
                }
 
                search_count++;
+               FREE(buf);
        }
 
        int i = 0;
        for (; i < ad->region_num; i++) {
                if (isEmptyStr(ad->search_text) ||
-                   is_substr_ncase(ad->region_desc[i], ad->search_text)) {
+                       is_substr_ncase(ad->region_desc[i], ad->search_text)) {
 
                        char *buf = __setting_phone_region_format_get_str_colr(ad, ad->region_desc[i]);
                        /*SETTING_TRACE_DEBUG("buf: %s", buf); */
 
                        item_data =
-                           setting_create_Gendial_field_def(ad->gl_region,
-                                                            &(ad->itc_1text_tb),
-                                                            setting_phone_region_format_mouse_up_Gendial_list_radio_cb,
-                                                            ad->chk_region,
-                                                            SWALLOW_Type_INVALID, NULL, NULL,
-                                                            ad->region_index[i],
-                                                            buf, NULL, NULL);
+                               setting_create_Gendial_field_def(ad->gl_region,
+                                                                                                &(ad->itc_1text_tb),
+                                                                                                setting_phone_region_format_mouse_up_Gendial_list_radio_cb,
+                                                                                                ad->chk_region,
+                                                                                                SWALLOW_Type_INVALID, NULL, NULL,
+                                                                                                ad->region_index[i],
+                                                                                                buf, NULL, NULL);
                        if (item_data) {
                                item_data->userdata = ad;
                                item_data->keyStr2 = ad->region_desc[i];
-                               if (search_count == 0) {
-                                       item_data->group_style = SETTING_GROUP_STYLE_TOP;
-                               } else {
-                                       item_data->group_style = SETTING_GROUP_STYLE_CENTER;
-                               }
                        } else {
                                SETTING_TRACE_ERROR("item_data is NULL");
                        }
 
-                       if (ad->region_vconf_str) {
-                               if (!safeStrCmp(ad->region_vconf_str, ad->region_keyStr[i])) {
-                                       ad->selected_region_idx = i;
-                               }
+                       FREE(buf);
+                       setting_retvm_if(NULL == ad->region_vconf_str, FALSE, "ad->region_vconf_str is NULL");
+                       if (!safeStrCmp(ad->region_vconf_str, ad->region_keyStr[i])) {
+                               ad->selected_region_idx = i;
                        }
                        search_count++;
-                       FREE(buf);
                }
        }
 
-       if (search_count == 1) {
-               if (item_data) {
-                       item_data->group_style = SETTING_GROUP_STYLE_NONE;
-               }
-       } else if (search_count > 1) {
+       if (search_count > 1) {
                Setting_GenGroupItem_Data *last_item =
-                   (Setting_GenGroupItem_Data *)elm_object_item_data_get(elm_genlist_last_item_get(ad->gl_region));
-               if (last_item) {
-                       last_item->group_style = SETTING_GROUP_STYLE_BOTTOM;
+                       (Setting_GenGroupItem_Data *)elm_object_item_data_get(elm_genlist_last_item_get(ad->gl_region));
+       }
+
+       if (search_count == 0) {
+               if(!ad->nocontents)
+               {
+                       ad->nocontents = elm_layout_add(ad->win_get);
+                       elm_layout_theme_set(ad->nocontents, "layout", "nocontents", "search");
+                       elm_object_part_text_set(ad->nocontents, "elm.text", _("IDS_ST_BODY_NO_RESULTS_FOUND"));
+               }
+               if (ad->nocontents != elm_object_part_content_get(ad->ly_sub_region, "elm.swallow.content"))
+               {
+                       ad->gl_region = elm_object_part_content_unset(ad->ly_sub_region, "elm.swallow.content");
+                       evas_object_hide(ad->gl_region);
+                       elm_object_part_content_set(ad->ly_sub_region, "elm.swallow.content", ad->nocontents);
+               }
+       }
+       else
+       {
+               if (ad->gl_region != elm_object_part_content_get(ad->ly_sub_region, "elm.swallow.content"))
+               {
+                       ad->nocontents = elm_object_part_content_unset(ad->ly_sub_region, "elm.swallow.content");
+                       evas_object_hide(ad->nocontents);
+                       elm_object_part_content_set(ad->ly_sub_region, "elm.swallow.content", ad->gl_region);
                }
        }
 
-       if (ad->selected_region_idx > -1) {
-               elm_radio_value_set(ad->chk_region, ad->selected_region_idx);
+#if 0
+       int automatic_select = 0;
+       vconf_get_bool(VCONFKEY_SETAPPL_REGION_AUTOMATIC_BOOL, &automatic_select);
+       if(automatic_select){
+               ad->selected_region_idx = 0;
        }
 
-       if (search_count == 0) {
-               setting_create_Gendial_field_def(ad->gl_region,
-                                                &(ad->itc_1icon_with_no_line), NULL, NULL,
-                                                SWALLOW_Type_INVALID, NULL, NULL, 0,
-                                                _("IDS_ST_BODY_NO_RESULTS_FOUND"), NULL, NULL);
+       if (ad->selected_region_idx > -1) {
+               elm_radio_value_set(ad->chk_region, ad->selected_region_idx);
        }
+#endif
 
        ad->search_idler = NULL;
        ad->searchlist_update_timer = NULL;
        return ECORE_CALLBACK_CANCEL;
 }
 
-
-
 /**
  * @brief Callback of entry change
  *
@@ -609,8 +673,6 @@ static void __searchbar_prediction_changed_cb(void *data, Evas_Object *obj, void
        ad->searchlist_update_timer = ecore_timer_add(0.01, __region_genlist_update, ad);
 }
 
-
-
 /**
  * @brief Callback of genlist item click event
  *
@@ -618,8 +680,8 @@ static void __searchbar_prediction_changed_cb(void *data, Evas_Object *obj, void
  * @param event_info The select item
  */
 static void setting_phone_region_format_mouse_up_Gendial_list_radio_cb(void *data,
-                                                                       Evas_Object *obj,
-                                                                       void *event_info)
+                                                                                                                                          Evas_Object *obj,
+                                                                                                                                          void *event_info)
 {
        SETTING_TRACE_BEGIN;
        setting_retm_if(data == NULL, "Data parameter is NULL");
@@ -629,23 +691,28 @@ static void setting_phone_region_format_mouse_up_Gendial_list_radio_cb(void *dat
        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_retm_if(NULL == list_item, "list_item is NULL");
+
        SettingPhoneUG *ad = (SettingPhoneUG *) list_item->userdata;
 
        int ret;
        char region[MAX_REGION_STRLEN] = {0,};
        SETTING_TRACE_DEBUG("item keystr: %s", list_item->keyStr2);
-       if (!safeStrCmp(_("IDS_COM_BODY_AUTOMATIC"), list_item->keyStr2)) {
+       if (!safeStrCmp(_("IDS_ST_BODY_ANSWERINGMODE_AUTOMATIC"), list_item->keyStr2)) {
                vconf_set_bool(VCONFKEY_SETAPPL_REGION_AUTOMATIC_BOOL, TRUE);
 
                /*set region same to language */
                char *lang = NULL;
                lang = vconf_get_str(VCONFKEY_LANGSET);
-               if (strlen(region) < 256 && strlen(lang) < 256) {
-                       strcpy(region, lang);
-               } else {
-                       return;
+               if (lang) {
+                       if (strlen(region) < 256) {
+                               strncpy(region, lang, 255);
+                       } else {
+                               FREE(lang);
+                               return;
+                       }
+                       FREE(lang);
                }
-               FREE(lang);
                SETTING_TRACE_DEBUG("auto region: %s", region);
        } else {
                vconf_set_bool(VCONFKEY_SETAPPL_REGION_AUTOMATIC_BOOL, FALSE);
@@ -659,7 +726,7 @@ static void setting_phone_region_format_mouse_up_Gendial_list_radio_cb(void *dat
                ret = setting_phone_region_format_set_dateformat(ad->region_keyStr[ad->prev_region], ad);
                setting_retm_if(ret == SETTING_RETURN_FAIL, "[Error] set date format fail");
        }
-       ret = vconf_set_str(VCONFKEY_REGIONFORMAT, region);
+       ret = set_regionformat_helper(region);
        setting_retm_if(ret != 0, "[Error] set value of VCONFKEY_REGIONFORMAT fail");
 
        if (!safeStrCmp(ad->region_search_id, "region")) {
@@ -687,10 +754,7 @@ static Eina_Bool __region_animator_cb(void *data)
        Setting_GenGroupItem_Data *item_data = NULL;
        if (ad->gl_region_cur_index >=  ad->region_num) {
                Setting_GenGroupItem_Data *last_item =
-                   (Setting_GenGroupItem_Data *)elm_object_item_data_get(elm_genlist_last_item_get(ad->gl_region));
-               if (last_item) {
-                       last_item->group_style = SETTING_GROUP_STYLE_BOTTOM;
-               }
+                       (Setting_GenGroupItem_Data *)elm_object_item_data_get(elm_genlist_last_item_get(ad->gl_region));
 
                if (ad->animator) {
                        ecore_animator_del(ad->animator);
@@ -701,7 +765,7 @@ static Eina_Bool __region_animator_cb(void *data)
 
                Elm_Object_Item *item = NULL;
                item = elm_genlist_item_append(ad->gl_region, &itc_bottom_seperator, NULL, NULL,
-                                              ELM_GENLIST_ITEM_NONE, NULL, NULL);
+                                                                          ELM_GENLIST_ITEM_NONE, NULL, NULL);
                elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
                return ECORE_CALLBACK_CANCEL;
        }
@@ -709,17 +773,16 @@ static Eina_Bool __region_animator_cb(void *data)
        int i = ad->gl_region_cur_index++;
        if (isEmptyStr(ad->search_text) || is_substr_ncase(ad->region_desc[i], ad->search_text)) {
                item_data =
-                   setting_create_Gendial_field_def(ad->gl_region,
-                                                    &(ad->itc_1text_tb),
-                                                    setting_phone_region_format_mouse_up_Gendial_list_radio_cb,
-                                                    ad->chk_region,
-                                                    SWALLOW_Type_INVALID, NULL, NULL,
-                                                    ad->region_index[i],
-                                                    ad->region_desc[i]/* HERE */, NULL, NULL);
+                       setting_create_Gendial_field_def(ad->gl_region,
+                                                                                        &(ad->itc_1text_tb),
+                                                                                        setting_phone_region_format_mouse_up_Gendial_list_radio_cb,
+                                                                                        ad->chk_region,
+                                                                                        SWALLOW_Type_INVALID, NULL, NULL,
+                                                                                        ad->region_index[i],
+                                                                                        ad->region_desc[i]/* HERE */, NULL, NULL);
 
                if (item_data) {
                        item_data->userdata = ad;
-                       item_data->group_style = SETTING_GROUP_STYLE_CENTER;
                } else {
                        SETTING_TRACE_ERROR("item_data is NULL");
                }
@@ -785,8 +848,8 @@ static void __region_genlist_create(void *data)
                ad->pop_progress = NULL;
        }
        ad->pop_progress = setting_create_popup_with_progressbar(ad, ad->win_get,
-                                                                PROGRESSBAR_STYLE,
-                                                                NULL, KeyStr_Loading, NULL, 0, TRUE, TRUE);
+                                                                                                                        PROGRESSBAR_STYLE,
+                                                                                                                        NULL, KeyStr_Loading, NULL, 0, TRUE, TRUE, 0);
 
        if (ad->popup_timer) {
                ecore_timer_del(ad->popup_timer);
@@ -805,17 +868,16 @@ static void __region_genlist_create(void *data)
        ad->selected_region_idx = -1;
 
        item_data =
-           setting_create_Gendial_field_def(ad->gl_region,
-                                            &(ad->itc_1text_tb),
-                                            setting_phone_region_format_mouse_up_Gendial_list_radio_cb,
-                                            ad->chk_region,
-                                            SWALLOW_Type_INVALID, NULL, NULL,
-                                            -1,
-                                            _("IDS_COM_BODY_AUTOMATIC"), NULL, NULL);
+               setting_create_Gendial_field_def(ad->gl_region,
+                                                                                &(ad->itc_1text_tb),
+                                                                                setting_phone_region_format_mouse_up_Gendial_list_radio_cb,
+                                                                                ad->chk_region,
+                                                                                SWALLOW_Type_INVALID, NULL, NULL,
+                                                                                -1,
+                                                                                _("IDS_ST_BODY_ANSWERINGMODE_AUTOMATIC"), NULL, NULL);
        if (item_data) {
                item_data->userdata = ad;
-               item_data->keyStr2 = _("IDS_COM_BODY_AUTOMATIC");
-               item_data->group_style = SETTING_GROUP_STYLE_TOP;
+               item_data->keyStr2 = _("IDS_ST_BODY_ANSWERINGMODE_AUTOMATIC");
        } else {
                SETTING_TRACE_ERROR("item_data is NULL");
        }
@@ -823,19 +885,18 @@ static void __region_genlist_create(void *data)
        int i = 0;
        for (; i < ad->region_num; i++) {
                if (isEmptyStr(ad->search_text) ||
-                   is_substr_ncase(ad->region_desc[i], ad->search_text)) {
+                       is_substr_ncase(ad->region_desc[i], ad->search_text)) {
                        item_data =
-                           setting_create_Gendial_field_def(ad->gl_region,
-                                                            &(ad->itc_1text_tb),
-                                                            setting_phone_region_format_mouse_up_Gendial_list_radio_cb,
-                                                            ad->chk_region,
-                                                            SWALLOW_Type_INVALID, NULL, NULL,
-                                                            ad->region_index[i],
-                                                            ad->region_desc[i], NULL, NULL);
+                               setting_create_Gendial_field_def(ad->gl_region,
+                                                                                                &(ad->itc_1text_tb),
+                                                                                                setting_phone_region_format_mouse_up_Gendial_list_radio_cb,
+                                                                                                ad->chk_region,
+                                                                                                SWALLOW_Type_INVALID, NULL, NULL,
+                                                                                                ad->region_index[i],
+                                                                                                ad->region_desc[i], NULL, NULL);
                        if (item_data) {
                                item_data->userdata = ad;
                                item_data->keyStr2 = ad->region_desc[i];
-                               item_data->group_style = SETTING_GROUP_STYLE_CENTER;
                        } else {
                                SETTING_TRACE_ERROR("item_data is NULL");
                        }
@@ -856,7 +917,7 @@ static void __region_genlist_create(void *data)
                ad->prev_region = ad->selected_region_idx;
        }
        if (ad->gl_region_cur_index < ad->region_num &&
-           ad->gl_region_index > SETTING_PHONE_REGION_FORMAT_ANIMATOR_START_INDEX) {
+               ad->gl_region_index > SETTING_PHONE_REGION_FORMAT_ANIMATOR_START_INDEX) {
                /*to continue adding items using animator */
                SETTING_TRACE("to continue adding items using animator");
                if (ad->animator) {
@@ -869,10 +930,7 @@ static void __region_genlist_create(void *data)
                SETTING_TRACE("had finished adding items");
 
                Setting_GenGroupItem_Data *last_item =
-                   (Setting_GenGroupItem_Data *)elm_object_item_data_get(elm_genlist_last_item_get(ad->gl_region));
-               if (last_item) {
-                       last_item->group_style = SETTING_GROUP_STYLE_BOTTOM;
-               }
+                       (Setting_GenGroupItem_Data *)elm_object_item_data_get(elm_genlist_last_item_get(ad->gl_region));
        }
 }
 
@@ -969,7 +1027,7 @@ static int setting_phone_region_format_create(void *cb)
        app_control_h service = ad->bundle_data;
        app_control_get_extra_data(service, "viewtype", &ad->region_search_id);
        if (!safeStrCmp(ad->region_search_id, "region")) {
-               Evas_Object *layout_main = setting_create_win_layout(ad->win_main_layout, ad->win_get);
+               Evas_Object *layout_main = setting_create_win_layout(ad->win_get);
                retvm_if(layout_main == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER, "layout_main create fail");
                ad->ly_region = layout_main;
 
@@ -992,34 +1050,35 @@ static int setting_phone_region_format_create(void *cb)
        }
 
        /* */
-       setting_create_Gendial_itc("1icon/with_no_line", &(ad->itc_1icon_with_no_line));
+       setting_create_Gendial_itc("1icon", &(ad->itc_1icon_with_no_line));
        ad->itc_1icon_with_no_line.func.content_get = _item_content_get;
 
        Elm_Object_Item *navi_it = setting_push_layout_navi_bar(REGION_FORMAT_LOWER,
-                                                               "IDS_COM_BODY_BACK",
-                                                               NULL,
-                                                               NULL,
-                                                               NULL,
-                                                               NULL,
-                                                               NULL, ad, sub_layout, ad->navi_bar, NULL);
+                                                                                                                       "IDS_ST_BUTTON_BACK",
+                                                                                                                       NULL,
+                                                                                                                       NULL,
+                                                                                                                       setting_phone_region_format_click_softkey_cancel_cb,
+                                                                                                                       NULL,
+                                                                                                                       NULL, ad, sub_layout, ad->navi_bar, NULL);
        elm_naviframe_item_pop_cb_set(navi_it, gl_sel_cb, ad);
        evas_object_data_set(ad->navi_bar, "sip.naviframe.title_obj", "SEARCH");
        ad->gl_region = elm_genlist_add(ad->navi_bar);
+       elm_genlist_mode_set(ad->gl_region, ELM_LIST_COMPRESS); /* resolve abnormal height issue */
+       elm_genlist_homogeneous_set(ad->gl_region, EINA_TRUE);
+       //elm_genlist_realization_mode_set(ad->gl_region, EINA_TRUE);
+       elm_genlist_clear(ad->gl_region);       /* first to clear list */
 
        retvm_if(ad->gl_region == NULL, SETTING_DRAW_ERR_FAIL_SCROLLER, "ad->gl_region is NULL");
-       elm_genlist_realization_mode_set(ad->gl_region, EINA_TRUE);
-       elm_object_style_set(ad->gl_region, "dialogue");
-
-       evas_object_smart_callback_add(ad->gl_region, "realized", __gl_realized_cb, NULL);
+       //evas_object_smart_callback_add(ad->gl_region, "realized", __gl_realized_cb, NULL);
 
        ad->chk_region = elm_radio_add(ad->gl_region);
        elm_radio_state_value_set(ad->chk_region, -1);
        elm_radio_value_set(ad->chk_region, -1);
 
        int ret = setting_phone_region_format_get_region_fmt(ad->region_desc,
-                                                            ad->region_index,
-                                                            ad->region_keyStr,
-                                                            &ad->region_num);
+                                                                                                                ad->region_index,
+                                                                                                                ad->region_keyStr,
+                                                                                                                &ad->region_num);
        if (ret != 0) {
                SETTING_TRACE_ERROR("get region format list failed");
        }
@@ -1036,8 +1095,21 @@ static int setting_phone_region_format_create(void *cb)
                }
        }
 
+       /* SET SEARCHBAR AREA SIZE */
+       int value = 0;
+       ret = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, &value);
+
+       if (value == SYSTEM_SETTINGS_FONT_SIZE_GIANT) {
+               elm_object_signal_emit(ad->search_bar, "set,show,giant", "*");
+       } else {
+               elm_object_signal_emit(ad->search_bar, "set,show,normal", "*");
+       }
+
        elm_object_part_content_set(sub_layout, "elm.swallow.content", ad->gl_region);
 
+       ad->ly_sub_region = sub_layout;
+
+
        setting_view_phone_region_format.is_create = 1;
        return SETTING_RETURN_SUCCESS;
 }