[DATA] Separate network lists for the sim cards. Added extra logs. 24/116024/2
authorMichal Skorupinski <m.skorupinsk@samsung.com>
Wed, 22 Feb 2017 11:34:05 +0000 (12:34 +0100)
committerMichal Skorupinski <m.skorupinsk@samsung.com>
Wed, 22 Feb 2017 13:08:38 +0000 (14:08 +0100)
Change-Id: I33b8138e40a8788193d6b93f6742da7c3a70fd1d
Signed-off-by: Michal Skorupinski <m.skorupinsk@samsung.com>
setting-network/src/setting-network-select-network.c

index cf0ba35078a1b30e1295cffea317628acef435b6..7fe4c2b60c376a2ae1e4f42835afc5413c84adf8 100644 (file)
@@ -40,6 +40,7 @@ static const char *setting_network_get_act_str(TelNetworkSystemType_t type);
 static void __back_to_previous_cb(void *data, Evas_Object *obj, void *event_info);
 static void __selected_network_change_cb(keynode_t *key, void *data);
 static void __notify_response_cb(void *data, Evas_Object *obj, void *event_info);
+Setting_GenGroupItem_Data *_add_item_to_list(char *title, setting_call_back_func on_click_cb);
 
 static struct select_network_info {
        SettingNetwork *ad;
@@ -53,7 +54,7 @@ static struct select_network_info {
        Evas_Object *network_select_registering_pop;
        Evas_Object *chk_sel;
 
-       TelNetworkPlmnList_t *plmn_info;
+       TelNetworkPlmnList_t *plmn_info[MAX_SIM_COUNT];
        bool b_searching_network;
        int sel_act; /**< like vconf key:VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT */
        int sel_net; /**< like vconf key:VCONFKEY_SETAPPL_SELECT_NETWORK_INT */
@@ -69,7 +70,7 @@ static struct select_network_info {
        .genlist_sel_network = NULL,
        .data_auto_network_item = NULL,
        .data_sel_net = NULL,
-       .plmn_info = NULL,
+       .plmn_info = {0,},
        .genlist_sel_network = NULL,
        .b_searching_network = false,
        .sel_act = 0,
@@ -88,6 +89,7 @@ setting_view setting_view_network_select_network = {
 
 void select_network_app_control(SettingNetwork *ad)
 {
+       SETTING_TRACE_BEGIN;
        int i;
        s_info.ad = ad;
 
@@ -104,10 +106,12 @@ void select_network_app_control(SettingNetwork *ad)
        (void) vconf_notify_key_changed(VCONFKEY_TELEPHONY_SPN_NAME, __selected_network_change_cb, ad);
        (void) vconf_notify_key_changed(VCONFKEY_TELEPHONY_SVCTYPE, __selected_network_change_cb, ad);
        (void) vconf_notify_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, __selected_network_change_cb, ad);
+       SETTING_TRACE_END;
 }
 
 void select_network_terminate(void)
 {
+       SETTING_TRACE_BEGIN;
        (void) vconf_ignore_key_changed(VCONFKEY_TELEPHONY_NWNAME, __selected_network_change_cb);
        (void) vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, __selected_network_change_cb);
        (void) vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SPN_NAME, __selected_network_change_cb);
@@ -115,10 +119,12 @@ void select_network_terminate(void)
        (void) vconf_ignore_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, __selected_network_change_cb);
 
        FREE(s_info.sel_network);
+       SETTING_TRACE_END;
 }
 
 int select_network_show(SettingNetwork *ad)
 {
+       SETTING_TRACE_BEGIN;
        cm_call_status_e call_status = CM_CALL_STATUS_IDLE;
        cm_client_h cm_handle = NULL;
        cm_init(&cm_handle);
@@ -134,6 +140,7 @@ int select_network_show(SettingNetwork *ad)
        vconf_get_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, &s_info.sel_net); /*retrieve here */
        SETTING_TRACE("s_info.sel_net:%d", s_info.sel_net);
 
+       SETTING_TRACE_END;
        return setting_view_change(&setting_view_network_main, &setting_view_network_select_network, ad);
 }
 
@@ -166,7 +173,7 @@ void setting_tapi_get_serving_network_cb(TapiHandle *handle, int result, void *d
  */
 void setting_network_update_sel_network(void *data)
 {
-       /*SETTING_TRACE_BEGIN; */
+       SETTING_TRACE_BEGIN;
 
        if (s_info.data_auto_network_item) {
                if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == s_info.sel_net) {
@@ -206,6 +213,7 @@ void setting_network_update_sel_network(void *data)
                                s_info.data_sel_net);
                elm_genlist_item_update(s_info.data_sel_net->item);
        }
+       SETTING_TRACE_END;
 }
 
 void setting_network_popup_delete(void *data)
@@ -232,7 +240,7 @@ static void _sort_merge_handle(void *usrdata, TelNetworkPlmnList_t *list)
 {
        SETTING_TRACE_BEGIN;
        int cnt = 0, tempcount = 0;
-       s_info.plmn_info->networks_count = list->networks_count;
+       s_info.plmn_info[s_info.sim_selected]->networks_count = list->networks_count;
        SETTING_TRACE("list->networks_count:%d", list->networks_count);
        int idx = 0;
 
@@ -254,8 +262,8 @@ static void _sort_merge_handle(void *usrdata, TelNetworkPlmnList_t *list)
        for (idx = 0; idx < tempcount; idx++) {
                alread_exist = FALSE;
                for (j = 0; j < cnt; j++) {
-                       if (0 == safeStrCmp(s_info.plmn_info->network_list[j].network_name, list->network_list[idx].network_name)
-                                       || 0 == safeStrCmp(s_info.plmn_info->network_list[j].plmn, list->network_list[idx].plmn)) {
+                       if (0 == safeStrCmp(s_info.plmn_info[s_info.sim_selected]->network_list[j].network_name, list->network_list[idx].network_name)
+                                       || 0 == safeStrCmp(s_info.plmn_info[s_info.sim_selected]->network_list[j].plmn, list->network_list[idx].plmn)) {
                                alread_exist = TRUE;
                                break;
                        }
@@ -264,7 +272,7 @@ static void _sort_merge_handle(void *usrdata, TelNetworkPlmnList_t *list)
                if (alread_exist)
                        continue;
 
-               memcpy(&(s_info.plmn_info->network_list[cnt++]),
+               memcpy(&(s_info.plmn_info[s_info.sim_selected]->network_list[cnt++]),
                                &(list->network_list[idx]),
                                sizeof(TelNetworkIdentity_t));
        }
@@ -272,15 +280,17 @@ static void _sort_merge_handle(void *usrdata, TelNetworkPlmnList_t *list)
        SETTING_TRACE("cnt:%d, list->networks_count=%d", cnt, list->networks_count);
        SETTING_TRACE("*****************************************************");
        SETTING_TRACE("After Sorted:");
-       s_info.plmn_info->networks_count = list->networks_count = (char)cnt;
+       s_info.plmn_info[s_info.sim_selected]->networks_count = list->networks_count = (char)cnt;
        for (idx = 0; idx < cnt; idx++) {
                SETTING_TRACE("[%d]:network_name=%s,plmn=%s,plmn_id=%d,access_technology=%d",
                                idx,
-                               s_info.plmn_info->network_list[idx].network_name,
-                               s_info.plmn_info->network_list[idx].plmn,
-                               s_info.plmn_info->network_list[idx].plmn_id,
-                               s_info.plmn_info->network_list[idx].access_technology);
+                               s_info.plmn_info[s_info.sim_selected]->network_list[idx].network_name,
+                               s_info.plmn_info[s_info.sim_selected]->network_list[idx].plmn,
+                               s_info.plmn_info[s_info.sim_selected]->network_list[idx].plmn_id,
+                               s_info.plmn_info[s_info.sim_selected]->network_list[idx].access_technology);
        }
+
+       SETTING_TRACE_END;
 }
 
 
@@ -288,6 +298,7 @@ static void _sort_merge_handle(void *usrdata, TelNetworkPlmnList_t *list)
 /*special process for char '&', such as AT&T */
 static void _process_special_char(char *dst, const char *src)
 {
+       SETTING_TRACE_BEGIN;
        char *temp1 = (char *)src;
        char *temp2 = strchr(temp1, '&');
        char *temp = NULL;
@@ -311,10 +322,13 @@ static void _process_special_char(char *dst, const char *src)
        }
        if ('\0' != temp1[0])
                g_strlcat(dst, temp1, MAX_SPECIALIZITION_LEN);
+
+       SETTING_TRACE_END;
 }
 
 void _register_network_automaticaly(SettingNetwork *ad, Setting_GenGroupItem_Data *list_item)
 {
+       SETTING_TRACE_BEGIN;
        s_info.sel_net = TAPI_NETWORK_SELECTIONMODE_AUTOMATIC;
        SETTING_TRACE("Sending tel_select_network_automatic..");
 
@@ -350,18 +364,21 @@ void _register_network_automaticaly(SettingNetwork *ad, Setting_GenGroupItem_Dat
        s_info.b_set_manul_network = FALSE;
        s_info.b_set_manul_network = TRUE;
        s_info.sel_act = -1;/*means "Automatic" */
+
+       SETTING_TRACE_END;
 }
 
 int _process_special_char_in_network_names(SettingNetwork *ad, Setting_GenGroupItem_Data *list_item)
 {
+       SETTING_TRACE_BEGIN;
        int cnt = 0;
-       SETTING_TRACE("s_info.plmn_info->networks_count:%d", s_info.plmn_info->networks_count);
+       SETTING_TRACE("s_info.plmn_info[s_info.sim_selected]->networks_count:%d", s_info.plmn_info[s_info.sim_selected]->networks_count);
        char name[MAX_COMMON_BUFFER_LEN] = { 0, };
-       for (; cnt < s_info.plmn_info->networks_count; cnt++) {
+       for (; cnt < s_info.plmn_info[s_info.sim_selected]->networks_count; cnt++) {
 
-               SETTING_TRACE("s_info.plmn_info->network_list[cnt].network_name:%s", s_info.plmn_info->network_list[cnt].network_name);
+               SETTING_TRACE("s_info.plmn_info[s_info.sim_selected]->network_list[cnt].network_name:%s", s_info.plmn_info[s_info.sim_selected]->network_list[cnt].network_name);
                memset(name, 0, MAX_COMMON_BUFFER_LEN);
-               snprintf(name, MAX_COMMON_BUFFER_LEN, "%s", s_info.plmn_info->network_list[cnt].network_name);
+               snprintf(name, MAX_COMMON_BUFFER_LEN, "%s", s_info.plmn_info[s_info.sim_selected]->network_list[cnt].network_name);
 
                char speciliztion[MAX_COMMON_BUFFER_LEN] = { 0, };
                _process_special_char(speciliztion, name);
@@ -375,16 +392,20 @@ int _process_special_char_in_network_names(SettingNetwork *ad, Setting_GenGroupI
        }
        SETTING_TRACE_DEBUG(
                        "*** [Selected PLMN] name=%s, " "srv provider=%s, PLMN ID=%s, type=%d, " "access tech=%d ***",
-                       s_info.plmn_info->network_list[cnt].network_name,
-                       s_info.plmn_info->network_list[cnt].service_provider_name,
-                       s_info.plmn_info->network_list[cnt].plmn,
-                       (int)(s_info.plmn_info->network_list[cnt].type_of_plmn),
-                       (int)(s_info.plmn_info->network_list[cnt].access_technology));
+                       s_info.plmn_info[s_info.sim_selected]->network_list[cnt].network_name,
+                       s_info.plmn_info[s_info.sim_selected]->network_list[cnt].service_provider_name,
+                       s_info.plmn_info[s_info.sim_selected]->network_list[cnt].plmn,
+                       (int)(s_info.plmn_info[s_info.sim_selected]->network_list[cnt].type_of_plmn),
+                       (int)(s_info.plmn_info[s_info.sim_selected]->network_list[cnt].access_technology));
+
+       SETTING_TRACE_END;
        return cnt;
 }
 
 void _register_network_manual(SettingNetwork *ad, Setting_GenGroupItem_Data *list_item)
 {
+       SETTING_TRACE_BEGIN;
+
        s_info.sel_net = TAPI_NETWORK_SELECTIONMODE_MANUAL;
        s_info.b_set_manul_network = TRUE;
        s_info.b_set_manul_network = FALSE;
@@ -394,8 +415,8 @@ void _register_network_manual(SettingNetwork *ad, Setting_GenGroupItem_Data *lis
        SETTING_TRACE("Sending tel_select_network_manual..");
 
        int tapi_ret = tel_select_network_manual(ad->handle[s_info.sim_selected],
-                       s_info.plmn_info->network_list[cnt].plmn,
-                       s_info.plmn_info->network_list[cnt].access_technology,
+                       s_info.plmn_info[s_info.sim_selected]->network_list[cnt].plmn,
+                       s_info.plmn_info[s_info.sim_selected]->network_list[cnt].access_technology,
                        _tapi_set_plmn_mode_cb, ad);
 
        if (tapi_ret != TAPI_API_SUCCESS) {
@@ -417,10 +438,11 @@ void _register_network_manual(SettingNetwork *ad, Setting_GenGroupItem_Data *lis
        else
                SETTING_TRACE("Registering popup failed");
 
-       s_info.sel_act = s_info.plmn_info->network_list[cnt].access_technology;
+       s_info.sel_act = s_info.plmn_info[s_info.sim_selected]->network_list[cnt].access_technology;
        FREE(s_info.sel_network);
-       s_info.sel_network = strdup(s_info.plmn_info->network_list[cnt].network_name);
+       s_info.sel_network = strdup(s_info.plmn_info[s_info.sim_selected]->network_list[cnt].network_name);
 
+       SETTING_TRACE_END;
 }
 
 static void _register_network(Setting_GenGroupItem_Data *list_item)
@@ -453,6 +475,8 @@ static void _register_network(Setting_GenGroupItem_Data *list_item)
                _register_network_automaticaly(ad, list_item);
        else
                _register_network_manual(ad, list_item);
+
+       SETTING_TRACE_END;
 }
 
 static Evas_Object *_create_searching_popup(void *data)
@@ -523,6 +547,7 @@ static Evas_Object *_create_searching_popup(void *data)
 
        evas_object_show(popup);
 
+       SETTING_TRACE_END;
        return popup;
 }
 
@@ -578,6 +603,8 @@ static Eina_Bool _search_net_on_timer(void *data)
        }
 
        ad->timer = NULL;
+
+       SETTING_TRACE_END;
        return ECORE_CALLBACK_CANCEL;
 }
 
@@ -615,6 +642,8 @@ static void _switch_automatic_on_resp_cb(void *data, Evas_Object *obj, void *eve
                setting_update_gl_item_chk_status(s_info.data_auto_network_item,
                                chk_status);
        }
+
+       SETTING_TRACE_END;
 }
 
 static void _switch_automatic_network(Setting_GenGroupItem_Data *list_item)
@@ -642,6 +671,8 @@ static void _switch_automatic_network(Setting_GenGroupItem_Data *list_item)
        } else {
                _searching_network(list_item);
        }
+
+       SETTING_TRACE_END;
 }
 
 static void _select_network_chk_changed(void *data, Evas_Object *obj, void *event_info)
@@ -661,6 +692,8 @@ static void _select_network_chk_changed(void *data, Evas_Object *obj, void *even
 
                _register_network(list_item);
        }
+
+       SETTING_TRACE_END;
 }
 
 static void _Gendial_select_plmn_cb(void *data, Evas_Object *obj, void *event_info)
@@ -699,6 +732,8 @@ static void _Gendial_select_plmn_cb(void *data, Evas_Object *obj, void *event_in
                                        list_item->chk_status, chk_status);
                }
        }
+
+       SETTING_TRACE_END;
 }
 
 static void _update_current_network_name(void)
@@ -706,35 +741,34 @@ static void _update_current_network_name(void)
        SETTING_TRACE_BEGIN;
        int ret;
        char *network_name;
-       char *final_text;
-       Elm_Object_Item *item = elm_genlist_nth_item_get(s_info.genlist_sel_network, 1);
-       if (!item) {
-               dlog_print(DLOG_ERROR, LOG_TAG, "[%s:%d] item == NULL", __FILE__, __LINE__);
+
+       if (!s_info.data_auto_network_item) {
+               dlog_print(DLOG_ERROR, LOG_TAG, "[%s:%d] list_item == NULL", __FILE__, __LINE__);
                return;
        }
 
-       Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)elm_object_item_data_get(item);
-       if (!list_item) {
-               dlog_print(DLOG_ERROR, LOG_TAG, "[%s:%d] list_item == NULL", __FILE__, __LINE__);
+       if (!s_info.data_auto_network_item->item) {
+               dlog_print(DLOG_ERROR, LOG_TAG, "[%s:%d] item == NULL", __FILE__, __LINE__);
                return;
        }
 
        ret = tel_get_property_string(s_info.ad->handle[s_info.sim_selected], TAPI_PROP_NETWORK_NETWORK_NAME, &network_name);
-       if(ret != TAPI_API_SUCCESS) {
+       if (ret != TAPI_API_SUCCESS) {
                SETTING_TRACE_ERROR("Failed to get network name");
                return;
        }
 
-       if (list_item->sub_desc)
-               free(list_item->sub_desc);
+       if (s_info.data_auto_network_item->sub_desc)
+               free(s_info.data_auto_network_item->sub_desc);
 
-       list_item->sub_desc = setting_customize_text(_(network_name), 0, BLUE_COLOR, NULL);
-       elm_genlist_item_update(item);
+       s_info.data_auto_network_item->sub_desc = setting_customize_text(_(network_name), 0, BLUE_COLOR, NULL);
+       elm_genlist_item_update(s_info.data_auto_network_item->item);
 
        dlog_print(DLOG_DEBUG, LOG_TAG, "[%s:%d] <MS> Network name: %s", __FILE__, __LINE__, network_name);
        SETTING_TRACE_END;
 }
 
+
 static void _net_auto_search_response_cb(TapiHandle *handle, int result, void *data, void *user_data)
 {
        SETTING_TRACE_BEGIN;
@@ -742,6 +776,100 @@ static void _net_auto_search_response_cb(TapiHandle *handle, int result, void *d
        SETTING_TRACE_END;
 }
 
+static bool _fill_network_list(void)
+{
+       SETTING_TRACE_BEGIN;
+       int cnt = 0;
+       const char *pa_net_name = NULL;
+       char name[MAX_COMMON_BUFFER_LEN] = { 0, };
+       Setting_GenGroupItem_Data *item_data;
+       int valid_cnt = 0;
+
+       if (!s_info.plmn_info[s_info.sim_selected])
+               return false;
+
+       pa_net_name = get_pa_select_network();
+       dlog_print(DLOG_INFO, LOG_TAG, "[%s:%d] Networks_Count: %d selected: %s", __FILE__, __LINE__,  s_info.plmn_info[s_info.sim_selected]->networks_count, pa_net_name);
+
+       while (cnt < s_info.plmn_info[s_info.sim_selected]->networks_count) {
+               SETTING_TRACE("network name from TAPI[%d]:%s --%s --(plmn=%s,plmn_id=%d,at=%s)",
+                               cnt,
+                               s_info.plmn_info[s_info.sim_selected]->network_list[cnt].network_name,
+                               s_info.plmn_info[s_info.sim_selected]->network_list[cnt].service_provider_name,
+                               s_info.plmn_info[s_info.sim_selected]->network_list[cnt].plmn,
+                               s_info.plmn_info[s_info.sim_selected]->network_list[cnt].plmn_id,
+                               setting_network_get_act_str(s_info.plmn_info[s_info.sim_selected]->network_list[cnt].access_technology));
+
+               if (isSpaceStr(s_info.plmn_info[s_info.sim_selected]->network_list[cnt].network_name))
+                       cnt++;
+
+               memset(name, 0, MAX_COMMON_BUFFER_LEN);
+
+               snprintf(name, MAX_COMMON_BUFFER_LEN, "%s", s_info.plmn_info[s_info.sim_selected]->network_list[cnt].network_name);
+               /*SETTING_TRACE("name:%s", name); */
+               char speciliztion[MAX_COMMON_BUFFER_LEN] = { 0, };
+               _process_special_char(speciliztion, name);
+
+               /* check the code */
+               SETTING_TRACE("name:%s", speciliztion);
+               item_data = setting_create_Gendial_field_1radio(
+                               s_info.genlist_sel_network, &itc_multiline_1text_1icon,
+                               _Gendial_select_plmn_cb, s_info.ad,
+                               SWALLOW_TYPE_1RADIO_RIGHT_PROPAGATE_EVENTS_SET, s_info.chk_sel,
+                               TAPI_NETWORK_SELECTIONMODE_MANUAL + valid_cnt + 1, speciliztion,
+                               _select_network_chk_changed);
+               if (NULL == item_data) {
+                       SETTING_TRACE_ERROR("Failed to calloc memory");
+                       cnt++;
+                       continue;
+               }
+               item_data->userdata = s_info.ad;
+
+               if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC != s_info.sel_net &&
+                               0 == safeStrCmp(pa_net_name, s_info.plmn_info[s_info.sim_selected]->network_list[cnt].network_name)
+                               && s_info.plmn_info[s_info.sim_selected]->network_list[cnt].access_technology == s_info.sel_act) {
+                       /* [ UI UPDATE ]*/
+                       /*let select nothing */
+                       elm_radio_value_set(s_info.chk_sel, item_data->chk_status);
+               }
+
+               cnt++;
+               valid_cnt++;
+       }
+
+       SETTING_TRACE("VCONFKEY_TELEPHONY_NWNAME:pa_net_name:%s", pa_net_name);
+       FREE(pa_net_name);
+
+       SETTING_TRACE_END;
+       return (cnt > 0);
+}
+
+static void _auto_select_item_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+       tel_select_network_automatic(s_info.ad->handle[s_info.sim_selected], _net_auto_search_response_cb, NULL);
+       SETTING_TRACE_END;
+}
+
+static void _manual_select_item_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+       _searching_network(s_info.data_search_network_item);
+       SETTING_TRACE_END;
+}
+
+static void _update_genlist(void)
+{
+       SETTING_TRACE_BEGIN;
+       elm_genlist_clear(s_info.genlist_sel_network);
+
+       s_info.data_search_network_item = _add_item_to_list("Search network", _manual_select_item_cb);
+       s_info.data_auto_network_item = _add_item_to_list("IDS_ST_BODY_SELECT_AUTOMATICALLY", _auto_select_item_cb);
+       _update_current_network_name();
+
+       SETTING_TRACE_END;
+}
+
 /**
  * async api call - searching network list
  *
@@ -749,11 +877,13 @@ static void _net_auto_search_response_cb(TapiHandle *handle, int result, void *d
  */
 static void _tapi_search_network_cb(TapiHandle *handle, int result, void *data, void *user_data)
 {
+       SETTING_TRACE_BEGIN;
        ret_if(!data);
 //     SettingNetwork *ad = user_data;
-       SETTING_TRACE_BEGIN;
        SETTING_TRACE(" - result = %d", result);
        setting_network_popup_delete(s_info.ad);
+       bool networks_found = false;
+
 
        if (!s_info.b_searching_network) {
                /*The requeset has already been canceled, don't do detail
@@ -761,94 +891,33 @@ static void _tapi_search_network_cb(TapiHandle *handle, int result, void *data,
                return;
        }
 
-       s_info.plmn_info = (TelNetworkPlmnList_t *)data;
+       s_info.plmn_info[s_info.sim_selected] = (TelNetworkPlmnList_t *)data;
 
        s_info.b_searching_network = FALSE;
-       int valid_cnt = 0;
-       if (result == TAPI_NETWORK_NO_ERR) {
-               int cnt = 0;
-
-               _sort_merge_handle(s_info.ad, data);
-
-               Setting_GenGroupItem_Data *item_data = NULL;
-
-               const char *pa_net_name = get_pa_select_network();
-               char *cur_plmn = NULL;
-               tel_get_property_string(s_info.ad->handle[s_info.sim_selected], TAPI_PROP_NETWORK_PLMN, &cur_plmn);
-               SETTING_TRACE("VCONFKEY_TELEPHONY_NWNAME:pa_net_name:%s", pa_net_name);
-               SETTING_TRACE("cur_plmn:%s", cur_plmn);
-
-               char name[MAX_COMMON_BUFFER_LEN] = { 0, };
-               while (cnt < s_info.plmn_info->networks_count) {
-                       SETTING_TRACE("network name from TAPI[%d]:%s --%s --(plmn=%s,plmn_id=%d,at=%s)",
-                                       cnt,
-                                       s_info.plmn_info->network_list[cnt].network_name,
-                                       s_info.plmn_info->network_list[cnt].service_provider_name,
-                                       s_info.plmn_info->network_list[cnt].plmn,
-                                       s_info.plmn_info->network_list[cnt].plmn_id,
-                                       setting_network_get_act_str(s_info.plmn_info->network_list[cnt].access_technology));
-
-                       if (isSpaceStr(s_info.plmn_info->network_list[cnt].network_name)) {
-                               /*skip empty string. */
-                               cnt++;
-                               continue;
-                       }
+       if (result != TAPI_NETWORK_NO_ERR) {
+               /* [ UI UPDATE ]*/
+               setting_create_popup(s_info.ad, s_info.ad->md.window, NULL, keyStr_Failed_Searched, NULL, POPUP_INTERVAL, FALSE, FALSE, 0);
+       }
 
-                       memset(name, 0, MAX_COMMON_BUFFER_LEN);
-
-                       snprintf(name, MAX_COMMON_BUFFER_LEN, "%s",
-                                       s_info.plmn_info->network_list[cnt].network_name);
-                       /*SETTING_TRACE("name:%s", name); */
-                       char speciliztion[MAX_COMMON_BUFFER_LEN] = { 0, };
-                       _process_special_char(speciliztion, name);
-
-#if 1
-                       /* check the code */
-                       SETTING_TRACE("name:%s", speciliztion);
-                       item_data = setting_create_Gendial_field_1radio(
-                                       s_info.genlist_sel_network,
-                                       &itc_multiline_1text_1icon,
-                                       _Gendial_select_plmn_cb,
-                                       s_info.ad,
-                                       SWALLOW_TYPE_1RADIO_RIGHT_PROPAGATE_EVENTS_SET,
-                                       s_info.chk_sel,
-                                       TAPI_NETWORK_SELECTIONMODE_MANUAL + valid_cnt + 1,
-                                       speciliztion,
-                                       _select_network_chk_changed);
-                       if (NULL == item_data) {
-                               SETTING_TRACE_ERROR("Failed to calloc memory");
-                               cnt++;
-                               continue;
-                       }
-                       item_data->userdata = s_info.ad;
-#endif
-#if 1
-                       if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC != s_info.sel_net
-                                       && 0 == safeStrCmp(pa_net_name, s_info.plmn_info->network_list[cnt].network_name)
-                                       && s_info.plmn_info->network_list[cnt].access_technology == s_info.sel_act) {
-                               /* [ UI UPDATE ]*/
-                               /*let select nothing */
-                               elm_radio_value_set(s_info.chk_sel, item_data->chk_status);
-                       }
-#endif
-                       cnt++;
-                       valid_cnt++;
-               }
-               FREE(pa_net_name);
+       _sort_merge_handle(s_info.ad, data);
 
-               SETTING_TRACE("Found %d valid networks in total[%d]", valid_cnt, cnt);
-               /*valid_cnt = 0; for test.. */
-               if (valid_cnt > 0) {
-                       /* [ UI UPDATE ]*/
-                       setting_create_popup(s_info.ad, s_info.ad->md.window, NULL, keyStr_Searched, NULL, POPUP_INTERVAL, FALSE, FALSE, 0);
-               } else { /*there is no invalid plmn nearby */
-                       /* [ UI UPDATE ]*/
-                       setting_create_popup(s_info.ad, s_info.ad->md.window, NULL, keyStr_No_Other_Network, NULL, POPUP_INTERVAL, FALSE, FALSE, 0);
-               }
-       } else {
+       char *cur_plmn = NULL;
+       tel_get_property_string(s_info.ad->handle[s_info.sim_selected], TAPI_PROP_NETWORK_PLMN, &cur_plmn);
+       SETTING_TRACE("cur_plmn:%s", cur_plmn);
+
+       _update_genlist();
+       networks_found = _fill_network_list();
+
+       /*valid_cnt = 0; for test.. */
+       if (networks_found) {
                /* [ UI UPDATE ]*/
-               setting_create_popup(s_info.ad, s_info.ad->md.window, NULL, keyStr_Failed_Searched, NULL, POPUP_INTERVAL, FALSE, FALSE, 0);
+               setting_create_popup(s_info.ad, s_info.ad->md.window, NULL, keyStr_Searched, NULL, POPUP_INTERVAL, FALSE, FALSE, 0);
+       } else { /*there is no invalid plmn nearby */
+               /* [ UI UPDATE ]*/
+               setting_create_popup(s_info.ad, s_info.ad->md.window, NULL, keyStr_No_Other_Network, NULL, POPUP_INTERVAL, FALSE, FALSE, 0);
        }
+
+       SETTING_TRACE_END;
 }
 
 /*
@@ -896,6 +965,8 @@ static void _searching_network(Setting_GenGroupItem_Data *list_item)
                s_info.ad->popup = NULL;
        }
        s_info.ad->popup = _create_searching_popup(s_info.data_auto_network_item);
+
+       SETTING_TRACE_END;
 }
 
 static void _network_main_gl_mouse_u(void *data, Evas *e, Evas_Object *obj, void *event_info)
@@ -904,12 +975,9 @@ static void _network_main_gl_mouse_u(void *data, Evas *e, Evas_Object *obj, void
        ret_if(!data || !event_info);
 
        Evas_Event_Mouse_Up *ev = (Evas_Event_Mouse_Up *)event_info;
-       Elm_Object_Item *selected_item = elm_genlist_at_xy_item_get(
-                       s_info.genlist_sel_network, ev->output.x, ev->output.y,
-                       NULL);
+       Elm_Object_Item *selected_item = elm_genlist_at_xy_item_get(s_info.genlist_sel_network, ev->output.x, ev->output.y, NULL);
        ret_if(!selected_item);
-       Setting_GenGroupItem_Data *data_Item = elm_object_item_data_get(
-                       selected_item);
+       Setting_GenGroupItem_Data *data_Item = elm_object_item_data_get(selected_item);
        ret_if(!data_Item);
        if (!safeStrCmp(data_Item->keyStr,
                        "IDS_ST_BODY_SELECT_AUTOMATICALLY")) {
@@ -946,6 +1014,8 @@ static void _network_main_gl_mouse_u(void *data, Evas *e, Evas_Object *obj, void
                elm_genlist_item_fields_update(s_info.data_auto_network_item->item,
                                "*", ELM_GENLIST_ITEM_FIELD_TEXT);
        }
+
+       SETTING_TRACE_END;
 }
 
 static void _network_main_gl_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
@@ -986,11 +1056,13 @@ static void _network_main_gl_mouse_down(void *data, Evas *e, Evas_Object *obj, v
                FREE(sub_text);
                elm_genlist_item_fields_update(s_info.data_auto_network_item->item, "*", ELM_GENLIST_ITEM_FIELD_TEXT);
        }
+
+       SETTING_TRACE_END;
 }
 
 static void _network_main_gl_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
-       /*SETTING_TRACE_BEGIN; */
+       SETTING_TRACE_BEGIN;
        ret_if(!data || !event_info);
        Evas_Event_Mouse_Move *ev = (Evas_Event_Mouse_Move *)event_info;
        int x_offset = ev->cur.output.x - s_info.point_down.x;
@@ -1022,37 +1094,31 @@ static void _network_main_gl_mouse_move(void *data, Evas *e, Evas_Object *obj, v
                FREE(sub_text);
        }
 
-       elm_genlist_item_fields_update(s_info.data_auto_network_item->item, "*",
-                       ELM_GENLIST_ITEM_FIELD_TEXT);
+       elm_genlist_item_fields_update(s_info.data_auto_network_item->item, "*", ELM_GENLIST_ITEM_FIELD_TEXT);
+
+       SETTING_TRACE_END;
 }
 
 static void _sim_selected_cb(void *data, Evas_Object *obj, void *event_info)
 {
+       SETTING_TRACE_BEGIN;
        Elm_Widget_Item *selected_item = elm_toolbar_selected_item_get(obj);
 
-       if (selected_item == elm_toolbar_first_item_get(obj)) {
+       if (selected_item == elm_toolbar_first_item_get(obj))
                s_info.sim_selected = 0;
-       } else {
+       else
                s_info.sim_selected = 1;
-       }
 
        _update_current_network_name();
-}
+       _update_genlist();
+       _fill_network_list();
 
-static void _auto_select_item_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       tel_select_network_automatic(s_info.ad->handle[s_info.sim_selected], _net_auto_search_response_cb, NULL);
        SETTING_TRACE_END;
 }
 
-static void _manual_select_item_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       _searching_network(s_info.data_search_network_item);
-}
-
 Setting_GenGroupItem_Data *_add_item_to_list(char *title, setting_call_back_func on_click_cb)
 {
+       SETTING_TRACE_BEGIN;
        char *sub_text = setting_customize_text(_(s_info.sel_network), 0, BLUE_COLOR, NULL);
 
        Setting_GenGroupItem_Data *item = setting_create_Gendial_field_def(
@@ -1064,6 +1130,7 @@ Setting_GenGroupItem_Data *_add_item_to_list(char *title, setting_call_back_func
        FREE(sub_text);
        setting_retvm_if(!item, NULL, "Failed to calloc memory");
 
+       SETTING_TRACE_END;
        return item;
 }
 
@@ -1096,23 +1163,21 @@ static int _view_create(void *cb)
        /*s_info.sel_network = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME); */
        s_info.sel_network = get_pa_select_network();
        SETTING_TRACE("pa_sel_net_name:%s", s_info.sel_network);
-       if (!s_info.sel_network) {
-               s_info.sel_network = strndup(Keystr_UNKNOWN_NETWORK,
-                               strlen(Keystr_UNKNOWN_NETWORK) + 1);
-       }
+       if (!s_info.sel_network)
+               s_info.sel_network = strndup(Keystr_UNKNOWN_NETWORK, strlen(Keystr_UNKNOWN_NETWORK) + 1);
 
        /* resolve abnormal height issue */
        elm_genlist_mode_set(s_info.genlist_sel_network, ELM_LIST_COMPRESS);
 
+       _update_genlist();
+
        evas_object_event_callback_add(s_info.genlist_sel_network, EVAS_CALLBACK_MOUSE_UP, _network_main_gl_mouse_u, NULL);
        evas_object_event_callback_add(s_info.genlist_sel_network, EVAS_CALLBACK_MOUSE_DOWN, _network_main_gl_mouse_down, NULL);
        evas_object_event_callback_add(s_info.genlist_sel_network, EVAS_CALLBACK_MOUSE_MOVE, _network_main_gl_mouse_move, NULL);
 
-       s_info.data_search_network_item = _add_item_to_list("Search network", _manual_select_item_cb);
-       s_info.data_auto_network_item = _add_item_to_list("IDS_ST_BODY_SELECT_AUTOMATICALLY", _auto_select_item_cb);
-       _update_current_network_name();
-
        setting_view_network_select_network.is_create = TRUE;
+
+       SETTING_TRACE_END;
        return SETTING_RETURN_SUCCESS;
 }
 
@@ -1177,12 +1242,15 @@ static int _view_destroy(void *cb)
 
 
        s_info.data_sel_net = NULL;
+
+       SETTING_TRACE_END;
        return SETTING_RETURN_SUCCESS;
 }
 
 static void _ignore_back_key_cb(void *data, Evas_Object *obj, void *event_info)
 {
        SETTING_TRACE_BEGIN;
+       SETTING_TRACE_END;
        return;
 }
 
@@ -1251,6 +1319,7 @@ static Evas_Object *_create_registering_popup(void *data)
        elm_object_content_set(popup, table);
 
        evas_object_show(popup);
+       SETTING_TRACE_END;
 
        return popup;
 }
@@ -1282,6 +1351,8 @@ static Eina_Bool _naviframe_item_pop_cb(void *data, Elm_Object_Item *it)
                return EINA_TRUE;
        }
        _view_destroy(data);
+
+       SETTING_TRACE_END;
        return EINA_TRUE;
 }
 
@@ -1310,6 +1381,7 @@ static void _search_network_cancel_cb(void *data, Evas_Object *obj, void *event_
 
        vconf_get_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, &sel_net);
        SETTING_TRACE("Previous selection after searching network:%d", sel_net);
+       SETTING_TRACE_END;
 }
 
 /**
@@ -1373,6 +1445,8 @@ static void _tapi_set_plmn_mode_cb(TapiHandle *handle, int result, void *data, v
        evas_object_smart_callback_add(popup, "timeout", __back_to_previous_cb,
                        ad);
        evas_object_show(popup);
+
+       SETTING_TRACE_END;
 }
 
 static void setting_tapi_cancel_manual_search_cb(TapiHandle *handle, int result, void *data, void *user_data)
@@ -1380,11 +1454,15 @@ static void setting_tapi_cancel_manual_search_cb(TapiHandle *handle, int result,
        SETTING_TRACE_BEGIN;
        SETTING_TRACE(" - result = 0x%x", result);
        ret_if(!user_data);
+       SETTING_TRACE_END;
        /*SettingNetwork *ad = user_data; */
 }
 
 static const char *setting_network_get_act_str(TelNetworkSystemType_t type)
 {
+       SETTING_TRACE_BEGIN;
+       SETTING_TRACE_END;
+
        switch (type) {
        case TAPI_NETWORK_SYSTEM_NO_SRV: /*0 */
                return "NO SERVICE";
@@ -1438,11 +1516,12 @@ static void __back_to_previous_cb(void *data, Evas_Object *obj, void *event_info
 
        /*go back to previous view if set successfully */
        setting_view_change(&setting_view_network_select_network, &setting_view_network_main, ad);
+       SETTING_TRACE_END;
 }
 
 static void __selected_network_change_cb(keynode_t *key, void *data)
 {
-       /*SETTING_TRACE_BEGIN; */
+       SETTING_TRACE_BEGIN;
        setting_retm_if(!data, "!data");
        SettingNetwork *ad = data;
        char *vconf_name = vconf_keynode_get_name(key);
@@ -1470,6 +1549,8 @@ static void __selected_network_change_cb(keynode_t *key, void *data)
                                POPUP_INTERVAL * 2, TRUE, FALSE, 0);
 
        }
+
+       SETTING_TRACE_END;
 }
 
 static void __notify_response_cb(void *data, Evas_Object *obj, void *event_info) /* TODO Move to 'setting-network.c ?' */
@@ -1481,7 +1562,9 @@ static void __notify_response_cb(void *data, Evas_Object *obj, void *event_info)
                evas_object_del(obj);
                obj = NULL;
        }
+
        ui_app_exit();
+       SETTING_TRACE_END;
 }
 
 void setting_tapi_get_plmn_mode_cb(TapiHandle *handle, int result, void *data, void *user_data)
@@ -1500,4 +1583,6 @@ void setting_tapi_get_plmn_mode_cb(TapiHandle *handle, int result, void *data, v
                }
        } else {
        }
+
+       SETTING_TRACE_END;
 }