[REFACTOR] File name changed: 'setting-network-select-network' to 'setting-network... 16/143616/2
authorMichal Skorupinski <m.skorupinsk@samsung.com>
Thu, 10 Aug 2017 12:21:22 +0000 (14:21 +0200)
committerMichal Skorupinski <m.skorupinsk@samsung.com>
Tue, 22 Aug 2017 11:09:03 +0000 (13:09 +0200)
Change-Id: I03bd8f971332bf3f2a0799838c057782a62945d0
Signed-off-by: Michal Skorupinski <m.skorupinsk@samsung.com>
setting-network/CMakeLists.txt
setting-network/include/setting-network-select-network.h [deleted file]
setting-network/include/setting-network-service-providers.h [new file with mode: 0644]
setting-network/src/setting-network-main.c
setting-network/src/setting-network-select-network.c [deleted file]
setting-network/src/setting-network-service-providers.c [new file with mode: 0755]
setting-network/src/setting-network.c

index ee2ff176b7e3ed9020e3ca729daa5fc9150d5208..99b51d08eb73d6c967474b7b1b6e8e2f70a86c7c 100755 (executable)
@@ -38,7 +38,7 @@ SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--rpath=/usr/lib")
 ADD_EXECUTABLE(${PROJECT_SETTING_NETWORK}
        ./src/setting-network.c
        ./src/setting-network-main.c
-       ./src/setting-network-select-network.c
+       ./src/setting-network-service-providers.c
        ./src/setting-network-con.c
        ./src/setting-network-con-list.c
        ./src/setting-network-profile-delete.c
diff --git a/setting-network/include/setting-network-select-network.h b/setting-network/include/setting-network-select-network.h
deleted file mode 100644 (file)
index 2aecfbc..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * setting
- *
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
- *
- * Contact: MyoungJune Park <mj2004.park@samsung.com>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include "setting-network.h"
-
-#if !defined(_SETTING_NETWORK_SELECT_NETWORK_H_)
-#define _SETTING_NETWORK_SELECT_NETWORK_H_
-
-void select_network_app_control(SettingNetwork* ad);
-void select_network_terminate(void);
-int select_network_show(SettingNetwork *ad);
-
-#endif
diff --git a/setting-network/include/setting-network-service-providers.h b/setting-network/include/setting-network-service-providers.h
new file mode 100644 (file)
index 0000000..2aecfbc
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * setting
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Contact: MyoungJune Park <mj2004.park@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "setting-network.h"
+
+#if !defined(_SETTING_NETWORK_SELECT_NETWORK_H_)
+#define _SETTING_NETWORK_SELECT_NETWORK_H_
+
+void select_network_app_control(SettingNetwork* ad);
+void select_network_terminate(void);
+int select_network_show(SettingNetwork *ad);
+
+#endif
index bade913f93066a9f6226d62a7381ce8eee61ab5a..353ea777cc130c5fdd06a6272474ac730af751e1 100755 (executable)
@@ -20,7 +20,7 @@
  */
 #include <setting-network-main.h>
 #include <efl_extension.h>
-#include "setting-network-select-network.h"
+#include "setting-network-service-providers.h"
 
 #define MOBILE_DATA_WITHOUT_WIFI_STR \
        "IDS_ST_BODY_MOBILE_DATA_WILL_BE_USED_IF_YOU_DOWNLOAD_OR_UPLOAD_DATA_W"\
diff --git a/setting-network/src/setting-network-select-network.c b/setting-network/src/setting-network-select-network.c
deleted file mode 100755 (executable)
index 6efa735..0000000
+++ /dev/null
@@ -1,1464 +0,0 @@
-/*
- * setting
-
- *
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
- *
- * Contact: MyoungJune Park <mj2004.park@samsung.com>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include <call-manager.h>
-#include "setting-network-select-network.h"
-
-const char *STR_SETTING_OPERATION_FAILED = "IDS_BT_POP_OPERATION_FAILED";
-
-static int _view_create(void *cb);
-static int _view_destroy(void *cb);
-static Eina_Bool _naviframe_item_pop_cb(void *data, Elm_Object_Item *it);
-static void _tapi_search_network_cb(TapiHandle *handle, int result, void *data, void *user_data);
-static void _select_network_chk_changed(void *data, Evas_Object *obj, void *event_info);
-static void _Gendial_select_plmn_cb(void *data, Evas_Object *obj, void *event_info);
-static Evas_Object *_create_registering_popup(void);
-static void _search_network_cancel_cb(void *data, Evas_Object *obj, void *event_info);
-static void _searching_network(Setting_GenGroupItem_Data *list_item);
-static void _tapi_set_plmn_mode_cb(TapiHandle *handle, int result, void *data, void *user_data);
-static void setting_tapi_cancel_manual_search_cb(TapiHandle *handle, int result, void *data, void *user_data);
-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);
-static void _tapi_get_plmn_mode_cb(TapiHandle *handle, int result, void *data, void *user_data);
-static void _tapi_get_serving_network_cb(TapiHandle *handle, int result, void *data, void *user_data);
-
-static struct select_network_info {
-       SettingNetwork *ad;
-
-       Evas_Object *genlist_sel_network;
-
-       Setting_GenGroupItem_Data *data_auto_network_item;
-       Setting_GenGroupItem_Data *data_sel_net;
-       Setting_GenGroupItem_Data *data_search_network_item;
-
-       Evas_Object *network_select_registering_pop;
-       Evas_Object *chk_sel;
-
-       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 */
-       char *sel_network;
-       bool b_set_auto_network;
-       bool b_set_manul_network;
-
-       int sim_selected;
-
-       Evas_Point point_down;
-} s_info = {
-       .ad = NULL,
-       .genlist_sel_network = NULL,
-       .data_auto_network_item = NULL,
-       .data_sel_net = NULL,
-       .plmn_info = {{0,}, {0,} },
-       .genlist_sel_network = NULL,
-       .b_searching_network = false,
-       .sel_act = 0,
-       .sel_net = 0,
-       .sel_network = NULL,
-       .b_set_auto_network = false,
-       .b_set_manul_network = false,
-};
-
-setting_view setting_view_network_select_network = {
-       .create = _view_create,
-       .destroy = _view_destroy,
-       .update = NULL,
-       .cleanup = NULL
-};
-
-void select_network_app_control(SettingNetwork *ad)
-{
-       SETTING_TRACE_BEGIN;
-       int i;
-       s_info.ad = ad;
-
-       for (i = 0; i < MAX_SIM_COUNT; ++i) {
-               if (tel_get_network_selection_mode(ad->handle[i], _tapi_get_plmn_mode_cb, (void *)i) != TAPI_API_SUCCESS)
-                       SETTING_TRACE_ERROR("*** [ERR] tel_get_network_selection_mode. ***");
-
-               if (tel_get_network_serving(ad->handle[i], _tapi_get_serving_network_cb, (void *)i) != TAPI_API_SUCCESS)
-                       SETTING_TRACE_ERROR("*** [ERR] tel_get_network_serving. ***");
-       }
-
-       (void) vconf_notify_key_changed(VCONFKEY_TELEPHONY_NWNAME, __selected_network_change_cb, ad);
-       (void) vconf_notify_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, __selected_network_change_cb, 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);
-       (void) vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVCTYPE, __selected_network_change_cb);
-       (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);
-       cm_get_call_status(cm_handle, &call_status);
-       cm_deinit(cm_handle);
-       if (CM_CALL_STATUS_IDLE != call_status) {
-               setting_create_popup(s_info.ad, s_info.ad->md.window, NULL, _("IDS_CST_POP_OPERATION_NOT_ALLOWED_DURING_CALLS"), NULL, 0, false, false, 0);
-               return SETTING_GENERAL_ERR_NULL_DATA_PARAMETER;
-       }
-
-       int value_use_packet;
-       vconf_get_int(VCONFKEY_DNET_STATE, &value_use_packet);
-       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);
-}
-
-static void _tapi_get_serving_network_cb(TapiHandle *handle, int result, void *data, void *user_data)
-{
-       SETTING_TRACE_BEGIN;
-       SETTING_TRACE(" - result = 0x%x", result);
-       ret_if(!data);
-       TelNetworkServing_t *srv_nt = data;
-
-       if (result == TAPI_NETWORK_NO_ERR) {
-               s_info.sel_act = srv_nt->act;
-               vconf_set_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, s_info.sel_act);
-
-               FREE(s_info.sel_network);
-               /*s_info.sel_network = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME); */
-               s_info.sel_network = get_pa_select_network();
-               if (!s_info.sel_network)
-                       s_info.sel_network = strndup(Keystr_UNKNOWN_NETWORK, strlen(Keystr_UNKNOWN_NETWORK) + 1);
-       } else {
-               /*if failed, do nothing.. */
-       }
-       SETTING_TRACE_END;
-}
-
-static void _network_popup_delete(void)
-{
-       SETTING_TRACE_BEGIN;
-       /* error check */
-
-       if (s_info.network_select_registering_pop != NULL) {
-               evas_object_del(s_info.network_select_registering_pop);
-               s_info.network_select_registering_pop = NULL;
-       }
-       if (s_info.ad->network_popup != NULL) {
-               evas_object_del(s_info.ad->network_popup);
-               s_info.ad->network_popup = NULL;
-       }
-       if (s_info.ad->popup != NULL) {
-               evas_object_del(s_info.ad->popup);
-               s_info.ad->popup = NULL;
-       }
-}
-
-static void _sort_merge_handle(void *usrdata, TelNetworkPlmnList_t *list)
-{
-       SETTING_TRACE_BEGIN;
-       int cnt = 0, tempcount = 0;
-       int idx = 0;
-
-       tempcount = s_info.plmn_info[s_info.sim_selected].networks_count;
-       for (idx = 0; idx < tempcount; idx++) {
-               SETTING_TRACE("[%d].network_name=%s, spn=%s, plmn=%s, plmn_id=%d, plmn_type=%d, access_technology=%d",
-                               idx, list->network_list[idx].network_name,
-                               list->network_list[idx].service_provider_name,
-                               list->network_list[idx].plmn,
-                               list->network_list[idx].plmn_id,
-                               list->network_list[idx].type_of_plmn,
-                               list->network_list[idx].access_technology);
-       }
-       SETTING_TRACE("*****************************************************");
-
-       int j = 0;
-       bool alread_exist = FALSE;
-       tempcount = list->networks_count;
-       for (idx = 0; idx < tempcount; idx++) {
-               alread_exist = FALSE;
-               for (j = 0; j < cnt; j++) {
-                       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;
-                       }
-               }
-
-               if (alread_exist)
-                       continue;
-
-               memcpy(&(s_info.plmn_info[s_info.sim_selected].network_list[cnt++]),
-                               &(list->network_list[idx]),
-                               sizeof(TelNetworkIdentity_t));
-       }
-
-       SETTING_TRACE("*****************************************************");
-       SETTING_TRACE("After Sorted:");
-       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[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;
-}
-
-
-
-/*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;
-
-       while (NULL != temp2) {
-               if (0 == safeStrNCmp(temp2, "&amp;", strlen("&amp;"))) {
-                       temp = temp2 + 1;
-                       if ('\0' == temp[0])
-                               break;
-
-                       temp2 = strchr(temp, '&');
-               } else {
-                       g_strlcat(dst, temp1, temp2 - temp1 + 1);
-                       g_strlcat(dst, "&amp;", MAX_SPECIALIZITION_LEN);
-                       temp1 = temp2 + 1;
-                       if ('\0' == temp1[0])
-                               break;
-
-                       temp2 = strchr(temp1, '&');
-               }
-       }
-       if ('\0' != temp1[0])
-               g_strlcat(dst, temp1, MAX_SPECIALIZITION_LEN);
-
-       SETTING_TRACE_END;
-}
-
-static void _show_registering_popup(void)
-{
-       SETTING_TRACE_BEGIN;
-       /* Display 'Registering' popup when manual */
-       SETTING_TRACE("Manual selection, Registering..");
-
-       if (s_info.network_select_registering_pop != NULL) {
-               evas_object_del(s_info.network_select_registering_pop);
-               s_info.network_select_registering_pop = NULL;
-       }
-
-       s_info.network_select_registering_pop = _create_registering_popup();
-       if (s_info.network_select_registering_pop)
-               SETTING_TRACE("Registering popup appeared");
-       else
-               SETTING_TRACE("Registering popup failed");
-
-       SETTING_TRACE_END;
-}
-
-static void _register_network_automaticaly(void)
-{
-       SETTING_TRACE_BEGIN;
-       s_info.sel_net = TAPI_NETWORK_SELECTIONMODE_AUTOMATIC;
-       SETTING_TRACE("Sending tel_select_network_automatic..");
-
-       int tapi_ret = tel_select_network_automatic(s_info.ad->handle[s_info.sim_selected], _tapi_set_plmn_mode_cb, NULL);
-       if (tapi_ret != TAPI_API_SUCCESS) {
-               SETTING_TRACE_DEBUG("*** [ERR] tel_select_network_automatic." " tapi_ret=%s ***", get_error_message(tapi_ret));
-               return;
-       }
-
-       /* Display 'Registering' popup when automatic */
-       SETTING_TRACE("Automatic selection, Registering..");
-
-       s_info.b_set_manul_network = FALSE;
-       s_info.b_set_manul_network = TRUE;
-       s_info.sel_act = -1;/*means "Automatic" */
-
-       SETTING_TRACE_END;
-}
-
-static int _process_special_char_in_network_names(Setting_GenGroupItem_Data *list_item)
-{
-       SETTING_TRACE_BEGIN;
-       int cnt = 0;
-       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, };
-       int net_count = (int)s_info.plmn_info[s_info.sim_selected].networks_count;
-       for (; cnt < net_count; cnt++) {
-
-               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[s_info.sim_selected].network_list[cnt].network_name);
-
-               char speciliztion[MAX_COMMON_BUFFER_LEN] = { 0, };
-               _process_special_char(speciliztion, name);
-
-               SETTING_TRACE("  name:%s", speciliztion);
-
-               if (!safeStrCmp(list_item->keyStr, speciliztion)) {
-                       SETTING_TRACE("find the right item");
-                       break;
-               }
-       }
-       SETTING_TRACE_DEBUG(
-                       "*** [Selected PLMN] name=%s, " "srv provider=%s, PLMN ID=%s, type=%d, " "access tech=%d ***",
-                       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;
-}
-
-static void _register_network_manual(Setting_GenGroupItem_Data *list_item)
-{
-       SETTING_TRACE_BEGIN;
-
-       if (!list_item) {
-               SETTING_TRACE_ERROR("list_item == NULL");
-               return;
-       }
-
-       s_info.sel_net = TAPI_NETWORK_SELECTIONMODE_MANUAL;
-       s_info.b_set_manul_network = TRUE;
-       s_info.b_set_manul_network = FALSE;
-
-       int cnt = _process_special_char_in_network_names(list_item);
-       SETTING_TRACE("Sending tel_select_network_manual..");
-
-       int tapi_ret = tel_select_network_manual(s_info.ad->handle[s_info.sim_selected],
-                       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, NULL);
-
-       if (tapi_ret != TAPI_API_SUCCESS) {
-               SETTING_TRACE_DEBUG("%s*** [ERR] " "tel_select_network_manual. " "tapi_ret=%d ***%s", SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
-               setting_create_popup(s_info.ad, s_info.ad->md.window, NULL, "IDS_ST_BODY_FAILED_TO_SELECT_NETWORK", NULL, POPUP_INTERVAL, FALSE, FALSE, 0);
-               return;
-       }
-
-       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[s_info.sim_selected].network_list[cnt].network_name);
-
-       SETTING_TRACE_END;
-}
-
-static void _cancel_network_search(void)
-{
-       SETTING_TRACE_BEGIN;
-
-       int tapi_ret = TAPI_API_INVALID_INPUT;
-
-       if (s_info.b_searching_network) {
-               SETTING_TRACE("Sending tel_cancel_network_manual_search..");
-               tapi_ret = tel_cancel_network_manual_search(s_info.ad->handle[s_info.sim_selected], setting_tapi_cancel_manual_search_cb, NULL);
-               if (tapi_ret != TAPI_API_SUCCESS)
-                       SETTING_TRACE_ERROR("*** [ERR] tel_cancel_network_manual_search. " "tapi_ret=%d ***", tapi_ret);
-               else
-                       s_info.b_searching_network = FALSE;
-       }
-
-       SETTING_TRACE_END;
-}
-
-static void _register_network(Setting_GenGroupItem_Data *list_item, bool is_auto)
-{
-       SETTING_TRACE_BEGIN;
-
-       _cancel_network_search();
-       _show_registering_popup();
-
-       if (is_auto)
-               _register_network_automaticaly();
-       else
-               _register_network_manual(list_item);
-
-       SETTING_TRACE_END;
-}
-
-static Evas_Object *_create_searching_popup(void *data)
-{
-       SETTING_TRACE_BEGIN;
-
-       Evas_Object *popup = elm_popup_add(s_info.ad->md.naviframe);
-       elm_object_domain_translatable_part_text_set(popup, "title,text", SETTING_PACKAGE, _("IDS_ST_POP_SEARCHING_NETWORK_ING"));
-
-       elm_popup_align_set(popup, ELM_NOTIFY_ALIGN_FILL, 1.0);
-       eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK, _search_network_cancel_cb, NULL);
-       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
-       EVAS_HINT_EXPAND);
-
-       Evas_Object *box = elm_box_add(popup);
-
-       elm_box_horizontal_set(box, EINA_TRUE);
-       elm_box_align_set(box, 0.5, 0.5);
-       elm_box_padding_set(box, 16, 0);
-
-       Evas_Object *progressbar = elm_progressbar_add(popup);
-       elm_object_style_set(progressbar, PROGRESSBAR_STYLE);
-       elm_progressbar_pulse(progressbar, EINA_TRUE);
-       evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5);
-       evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND,
-                       EVAS_HINT_EXPAND);
-       elm_progressbar_pulse(progressbar, EINA_TRUE);
-       evas_object_show(progressbar);
-       elm_box_pack_end(box, progressbar);
-
-       Evas_Object *label = elm_label_add(popup);
-       elm_object_text_set(label, _("IDS_ST_POP_NETWORKSERVICES_SEARCHING"));
-       evas_object_show(label);
-       elm_box_pack_end(box, label);
-
-       /*evas_object_show(box); */
-       /*elm_object_content_set(popup, box); */
-
-       Evas_Object *table = elm_table_add(popup);
-       evas_object_show(table);
-       elm_table_homogeneous_set(table, EINA_FALSE);
-
-       Evas_Object *rect_up;
-       rect_up = evas_object_rectangle_add(evas_object_evas_get(popup));
-       evas_object_size_hint_min_set(rect_up, ELM_SCALE_SIZE(170),
-                       ELM_SCALE_SIZE(34));
-
-       Evas_Object *rect_down;
-       rect_down = evas_object_rectangle_add(evas_object_evas_get(popup));
-       evas_object_size_hint_min_set(rect_down, ELM_SCALE_SIZE(100),
-                       ELM_SCALE_SIZE(34));
-
-       elm_table_pack(table, rect_up, 0, 0, 2, 1);/* rect as a padding */
-       elm_table_pack(table, box, 1, 1, 1, 1);
-       elm_table_pack(table, rect_down, 2, 2, 2, 1);/* rect as a padding */
-
-       evas_object_show(box);
-
-       elm_object_content_set(popup, table);
-
-       /* 'cancel' button */
-       Evas_Object *btn = elm_button_add(popup);
-       /*msgid "IDS_ST_BUTTON_CANCEL_ABB" */
-       elm_object_style_set(btn, "bottom");
-       elm_object_text_set(btn, _("IDS_ST_BUTTON_CANCEL_ABB"));
-       elm_object_part_content_set(popup, "button1", btn);
-       evas_object_smart_callback_add(btn, "clicked", _search_network_cancel_cb, NULL);
-
-       evas_object_show(popup);
-
-       SETTING_TRACE_END;
-       return popup;
-}
-
-static Eina_Bool _search_net_on_timer(void *data)
-{
-       /* error check */
-       SETTING_TRACE_BEGIN;
-       retv_if(data == NULL, EINA_FALSE);
-       Setting_GenGroupItem_Data *list_item =
-                       (Setting_GenGroupItem_Data *)data;
-       SettingNetwork *ad = list_item->userdata;
-       retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "ad is NULL");
-
-       int tapi_ret;
-       /*searching list */
-       /*ASYNC API - TAPI_EVENT_NETWORK_SEARCH_CNF */
-       tapi_ret = tel_search_network(ad->handle[s_info.sim_selected], _tapi_search_network_cb, ad);
-       if (tapi_ret != TAPI_API_SUCCESS) { /* error handling.. */
-               SETTING_TRACE_ERROR(
-                               "%s*** [ERR] tel_search_network. tapi_ret=%d ***%s",
-                               SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
-               setting_create_popup(ad, ad->md.window, NULL,
-                               STR_SETTING_OPERATION_FAILED, NULL,
-                               POPUP_INTERVAL, FALSE, FALSE, 0);
-
-               /* put error handler on the end of this function. */
-               /*rollback.. */
-               setting_update_gl_item_chk_status(s_info.data_auto_network_item,
-                               1);
-               return ECORE_CALLBACK_CANCEL;
-       }
-
-       s_info.b_searching_network = TRUE;
-
-       if (ad->popup) {
-               evas_object_del(ad->popup);
-               ad->popup = NULL;
-       }
-       ad->popup = _create_searching_popup(list_item);
-       if (s_info.data_auto_network_item) {
-               /*elm_genlist_item_item_class_update(
-                * s_info.data_auto_network_item->item, &(itc_2text_1icon_7)); */
-
-               elm_object_item_data_set(s_info.data_auto_network_item->item, s_info.data_auto_network_item);
-               elm_genlist_item_update(s_info.data_auto_network_item->item);
-       }
-
-       ad->timer = NULL;
-
-       SETTING_TRACE_END;
-       return ECORE_CALLBACK_CANCEL;
-}
-
-static void _switch_automatic_on_resp_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       retm_if(data == NULL, "Data parameter is NULL");
-
-       Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
-       SettingNetwork *ad = list_item->userdata;
-       int response_type = btn_type(obj);
-       if (ad->popup) {
-               evas_object_del(ad->popup);
-               ad->popup = NULL;
-       }
-
-       if (POPUP_RESPONSE_OK == response_type) {
-
-               _search_net_on_timer(list_item);
-
-       } else if (POPUP_RESPONSE_CANCEL == response_type) {
-
-               /* Restore selection automatically */
-               int sel_net, chk_status;
-
-               vconf_get_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, &sel_net);
-               SETTING_TRACE("Previous selection after searching network:%d",
-                               sel_net);
-
-               if (sel_net == TAPI_NETWORK_SELECTIONMODE_AUTOMATIC)
-                       chk_status = 1;
-               else
-                       chk_status = 0;
-
-               setting_update_gl_item_chk_status(s_info.data_auto_network_item,
-                               chk_status);
-       }
-
-       SETTING_TRACE_END;
-}
-
-static void _select_network_chk_changed(void *data, Evas_Object *obj, void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       retm_if(data == NULL || obj == NULL, "Parameter is NULL");
-       Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
-       list_item->chk_status = elm_radio_value_get(obj);
-       SETTING_TRACE("[Radio index:%d] Radio checked", list_item->chk_status);
-
-       _register_network(list_item, false);
-
-       SETTING_TRACE_END;
-}
-
-static void _Gendial_select_plmn_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       retm_if(data == NULL || event_info == NULL, "Parameter 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_retm_if(NULL == list_item, "list_item is NULL");
-
-       if (s_info.b_searching_network) {
-               SETTING_TRACE("Searching poup displaying, Cannot select");
-               return;
-       }
-
-       int chk_status = elm_radio_value_get(list_item->rgd);
-       if (chk_status != list_item->chk_status) {
-               SETTING_TRACE("[List index:%d] List selected (radio index:%d)", list_item->chk_status, chk_status);
-               elm_radio_value_set(s_info.chk_sel, list_item->chk_status);
-               _register_network(list_item, false);
-       } else {
-               SETTING_TRACE("[List index:%d] Skip becuase radio checked (radio index:%d)", list_item->chk_status, chk_status);
-       }
-
-       SETTING_TRACE_END;
-}
-
-static void _update_current_network_name(void)
-{
-       SETTING_TRACE_BEGIN;
-       int ret;
-       char *network_name;
-
-       if (!s_info.data_auto_network_item) {
-               dlog_print(DLOG_ERROR, LOG_TAG, "[%s:%d] list_item == NULL", __FILE__, __LINE__);
-               return;
-       }
-
-       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) {
-               SETTING_TRACE_ERROR("Failed to get network name");
-               return;
-       }
-
-       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 _tel_get_selected_network_cb(TapiHandle *handle, int result, void *data, void *user_data)
-{
-       SETTING_TRACE_BEGIN;
-       TelNetworkServing_t *network = (TelNetworkServing_t*)data;
-       int i = 0;
-       int found_index = -1;
-       TelNetworkIdentity_t *network_list = &s_info.plmn_info[s_info.sim_selected].network_list[0];
-
-       int num = s_info.plmn_info[s_info.sim_selected].networks_count;
-       int len = strlen(network->plmn);
-       if (!network) {
-               SETTING_TRACE_ERROR("network == NULL");
-               return;
-       }
-       for (i = 0; i < num; ++i) {
-               SETTING_TRACE("Current: (%s) <> List %s(%s)", network->plmn, network_list[i].network_name, network_list[i].plmn);
-
-               if (strlen(network_list[i].plmn) == len && !strncmp(network->plmn, network_list[i].plmn, len)) {
-                       found_index = i;
-                       break;
-               }
-       }
-
-       elm_radio_value_set(s_info.chk_sel, TAPI_NETWORK_SELECTIONMODE_MANUAL + found_index + 1);
-       SETTING_TRACE("rgd=%s, index=%d;", evas_object_type_get(s_info.chk_sel), TAPI_NETWORK_SELECTIONMODE_MANUAL + found_index + 1);
-       elm_genlist_realized_items_update(s_info.genlist_sel_network);
-       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;
-       int net_count = (int)s_info.plmn_info[s_info.sim_selected].networks_count;
-
-       if (s_info.plmn_info[s_info.sim_selected].networks_count == 0) {
-               SETTING_TRACE_DEBUG("Networks list is empty");
-               return false;
-       }
-
-       pa_net_name = get_pa_select_network();
-       dlog_print(DLOG_INFO, LOG_TAG,
-                       "[%s:%d] sim: %d; Networks_Count: %d selected: %s",
-                       __FILE__, __LINE__, s_info.sim_selected, net_count, pa_net_name);
-
-
-       net_count = s_info.plmn_info[s_info.sim_selected].networks_count;
-       while (cnt < net_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);
-
-       tel_get_network_serving(s_info.ad->handle[s_info.sim_selected], _tel_get_selected_network_cb, NULL);
-
-       SETTING_TRACE_END;
-       return (cnt > 0);
-}
-
-static void _auto_select_item_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       Elm_Object_Item *item = (Elm_Object_Item *)event_info;
-       elm_genlist_item_selected_set(item, EINA_FALSE);
-       _register_network(NULL, true);
-       SETTING_TRACE_END;
-}
-
-static void _manual_select_item_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       Elm_Object_Item *item = (Elm_Object_Item *)event_info;
-       elm_genlist_item_selected_set(item, EINA_FALSE);
-
-       _searching_network(s_info.data_search_network_item);
-       SETTING_TRACE_END;
-}
-
-static Setting_GenGroupItem_Data *_add_item_to_list(char *title, setting_call_back_func on_click_cb)
-{
-       SETTING_TRACE_BEGIN;
-       Setting_GenGroupItem_Data *item = setting_create_Gendial_field_def(
-                       s_info.genlist_sel_network, &itc_1text_1icon,
-                       on_click_cb, NULL, SWALLOW_Type_INVALID,
-                       NULL, NULL, FALSE, title, NULL, NULL);
-
-       setting_retvm_if(!item, NULL, "Failed to calloc memory");
-
-       SETTING_TRACE_END;
-       return item;
-}
-
-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;
-}
-
-static void _copy_network_data(TelNetworkPlmnList_t *network_list)
-{
-       int i;
-       TelNetworkIdentity_t *network_target;
-       TelNetworkIdentity_t *network_source;
-       int net_count = (int)network_list->networks_count;
-       s_info.plmn_info[s_info.sim_selected].networks_count =
-                                                                                               network_list->networks_count;
-
-       for (i = 0; i < net_count; ++i) {
-               network_target = &s_info.plmn_info[s_info.sim_selected].network_list[i];
-               network_source = &network_list->network_list[i];
-
-               strncpy(network_target->network_name, network_source->network_name,
-                               TAPI_NETWORK_NAME_LEN_MAX);
-               strncpy(network_target->service_provider_name,
-                               network_source->service_provider_name,
-                               TAPI_NETWORK_NAME_LEN_MAX);
-               strncpy(network_target->plmn, network_source->plmn,
-                               TAPI_NETWORK_PLMN_LEN_MAX);
-
-               network_target->plmn_id =              network_source->plmn_id;
-               network_target->type_of_plmn =      network_source->type_of_plmn;
-               network_target->access_technology = network_source->access_technology;
-       }
-}
-
-/**
- * async api call - searching network list
- *
- * @see also tel_search_network
- */
-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(" - result = %d", result);
-       _network_popup_delete();
-       bool networks_found = false;
-
-
-       if (!s_info.b_searching_network) {
-               /*The requeset has already been canceled, don't do detail
-                * process*/
-               return;
-       }
-
-//     s_info.plmn_info[s_info.sim_selected] = (TelNetworkPlmnList_t *)data;
-       _copy_network_data((TelNetworkPlmnList_t *)data);
-
-       s_info.b_searching_network = FALSE;
-       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);
-       }
-
-       _sort_merge_handle(s_info.ad, data);
-
-       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_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;
-}
-
-static void _show_search_cancel_popup(Setting_GenGroupItem_Data *list_item)
-{
-       s_info.ad->popup = setting_create_popup(list_item, s_info.ad->md.naviframe,
-                       IDS_ST_BODY_UNABLE_TO_SCAN_FOR_NETWORKS,
-                       _(SETTING_NETWORK_SEARCH_3G_ON_DESC), _switch_automatic_on_resp_cb,
-                       0, FALSE, FALSE, 2, _("IDS_ST_BUTTON_OK"),
-                       _("IDS_ST_BUTTON_CANCEL_ABB"));
-}
-
-static void _show_searching_popup(void)
-{
-       if (s_info.ad->popup) {
-               evas_object_del(s_info.ad->popup);
-               s_info.ad->popup = NULL;
-       }
-       s_info.ad->popup = _create_searching_popup(s_info.data_auto_network_item);
-}
-
-/*
- * Network selection / Searching network
- */
-static void _searching_network(Setting_GenGroupItem_Data *list_item)
-{
-       SETTING_TRACE_BEGIN;
-
-       /* Manual selected */
-       /*_register_network(list_item); */
-
-       int value_use_packet;
-       vconf_get_int(VCONFKEY_DNET_STATE, &value_use_packet);
-
-       SETTING_TRACE("s_info.sel_net:%d", s_info.sel_net);
-       if (value_use_packet != VCONFKEY_DNET_OFF) {
-               _show_search_cancel_popup(list_item);
-               return;
-       }
-
-       int tapi_ret;
-       /*searching list */
-       /*ASYNC API - TAPI_EVENT_NETWORK_SEARCH_CNF */
-       tapi_ret = tel_search_network(s_info.ad->handle[s_info.sim_selected], _tapi_search_network_cb, s_info.ad);
-       if (tapi_ret != TAPI_API_SUCCESS) { /* error handling.. */
-               SETTING_TRACE_ERROR("%s*** [ERR] tel_search_network. tapi_ret=%d ***%s", SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
-               setting_create_popup(s_info.ad, s_info.ad->md.window, NULL, STR_SETTING_OPERATION_FAILED, NULL, POPUP_INTERVAL, FALSE, FALSE, 0);
-
-               /* put error handler on the end of this function. */
-               /*rollback.. */
-               setting_update_gl_item_chk_status(list_item, 1);
-               return;
-       }
-
-       s_info.b_searching_network = TRUE;
-       _show_searching_popup();
-
-       SETTING_TRACE_END;
-}
-
-static void _network_main_gl_mouse_u(void *data, Evas *e, Evas_Object *obj, void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       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);
-       ret_if(!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")) {
-               SETTING_TRACE("ev->output.x:%d, ev->output.y:%d", ev->output.x,
-                               ev->output.y);
-               Evas_Coord x, y, w, h;
-               evas_object_geometry_get(s_info.data_auto_network_item->eo_check,
-                               &x, &y, &w, &h);
-               SETTING_TRACE("x:%d, y:%d, w:%d, h:%d", x, y, w, h);
-               if (x <= ev->output.x
-                               && ev->output.x <= (x + w)
-                               && y <= ev->output.y
-                               && ev->output.y <= (y + h)) {
-                       return;
-               }
-
-               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)
-{
-       SETTING_TRACE_BEGIN;
-       ret_if(!data || !event_info);
-       Evas_Event_Mouse_Down *ev = (Evas_Event_Mouse_Down *)event_info;
-       s_info.point_down.x = ev->output.x;
-       s_info.point_down.y = ev->output.y;
-       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);
-       ret_if(!data_Item);
-       if (!safeStrCmp(data_Item->keyStr,
-                       "IDS_ST_BODY_SELECT_AUTOMATICALLY")) {
-               SETTING_TRACE("ev->output.x:%d, ev->output.y:%d", ev->output.x,
-                               ev->output.y);
-               Evas_Coord x, y, w, h;
-               evas_object_geometry_get(s_info.data_auto_network_item->eo_check,
-                               &x, &y, &w, &h);
-               SETTING_TRACE("x:%d, y:%d, w:%d, h:%d", x, y, w, h);
-               if (x <= ev->output.x
-                               && ev->output.x <= (x + w)
-                               && y <= ev->output.y
-                               && ev->output.y <= (y + h)) {
-                       return;
-               }
-
-               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;
-       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;
-       int y_offset = ev->cur.output.y - s_info.point_down.y;
-       if (x_offset < 0)
-               x_offset = -x_offset;
-       if (y_offset < 0)
-               y_offset = -y_offset;
-       /*SETTING_TRACE("x_offset:%d, y_offset:%d", x_offset, y_offset); */
-       if (x_offset <= MIN_MOVE_DISTANCE && y_offset <= MIN_MOVE_DISTANCE)
-               return;
-
-       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))
-               s_info.sim_selected = 0;
-       else
-               s_info.sim_selected = 1;
-
-       _update_genlist();
-       _fill_network_list();
-
-       SETTING_TRACE_END;
-}
-
-static int _view_create(void *cb)
-{
-       SETTING_TRACE_BEGIN;
-       s_info.ad = (SettingNetwork *)cb;
-
-       Elm_Object_Item *page = setting_create_genlist_and_push_to_naviframe(
-                       "IDS_COM_BODY_NETWORK_OPERATORS",
-                       _("IDS_ST_BUTTON_BACK"), _naviframe_item_pop_cb, NULL,
-                       &s_info.genlist_sel_network, s_info.ad->md.naviframe);
-
-       elm_naviframe_item_style_set(page, "tabbar");
-       setting_network_add_sim_toolbar(s_info.ad, page, _sim_selected_cb);
-
-       /* scroller is a genlist */
-       s_info.chk_sel = elm_radio_add(s_info.genlist_sel_network);
-       elm_radio_state_value_set(s_info.chk_sel, -1);
-       /*retrieve here */
-
-       vconf_get_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, &s_info.sel_net);
-       SETTING_TRACE("s_info.sel_net:%d", s_info.sel_net);
-
-       /*retrieve here */
-       vconf_get_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, &s_info.sel_act);
-       SETTING_TRACE("s_info.sel_act:%d", s_info.sel_act);
-
-       FREE(s_info.sel_network);
-       /*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);
-
-       /* 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);
-
-       setting_view_network_select_network.is_create = TRUE;
-
-       SETTING_TRACE_END;
-       return SETTING_RETURN_SUCCESS;
-}
-
-static int _view_destroy(void *cb)
-{
-       SETTING_TRACE_BEGIN;
-       /* error check */
-
-       evas_object_event_callback_del(s_info.genlist_sel_network, EVAS_CALLBACK_MOUSE_UP, _network_main_gl_mouse_u);
-       evas_object_event_callback_del(s_info.genlist_sel_network, EVAS_CALLBACK_MOUSE_DOWN, _network_main_gl_mouse_down);
-       evas_object_event_callback_del(s_info.genlist_sel_network, EVAS_CALLBACK_MOUSE_MOVE, _network_main_gl_mouse_move);
-
-       if (s_info.ad->timer) {
-               ecore_timer_del(s_info.ad->timer);
-               s_info.ad->timer = NULL;
-       }
-
-       if (s_info.ad->popup) {
-               evas_object_del(s_info.ad->popup);
-               s_info.ad->popup = NULL;
-       }
-
-       /*cancel the searching operation */
-       if (s_info.b_searching_network) {
-               int tapi_ret;
-               tapi_ret = tel_cancel_network_manual_search(s_info.ad->handle[s_info.sim_selected], setting_tapi_cancel_manual_search_cb, NULL);
-               if (tapi_ret != TAPI_API_SUCCESS) {
-                       SETTING_TRACE_ERROR(
-                                       "*** [ERR] tel_cancel_network_manual_search. " "tapi_ret=%d ***",
-                                       tapi_ret);
-               }
-               s_info.b_searching_network = FALSE;
-       }
-
-       /*roolback..*/
-       if (0 != vconf_get_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT,
-                       &s_info.sel_net)) {
-               SETTING_TRACE_ERROR("vconf get failed");
-       }
-
-       if (0 != vconf_get_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT,
-                       &s_info.sel_act)) {
-               SETTING_TRACE_ERROR("vconf get failed");
-       }
-
-       FREE(s_info.sel_network);
-       s_info.sel_network = get_pa_select_network();
-       if (!s_info.sel_network) {
-               s_info.sel_network = strndup(Keystr_UNKNOWN_NETWORK,
-                               strlen(Keystr_UNKNOWN_NETWORK) + 1);
-       }
-
-       /*reset..*/
-       s_info.b_set_manul_network = FALSE;
-
-       /*Following handlers will be used by async listening callback. They
-        * must be reset after genlist is 'popuped'. */
-       s_info.data_auto_network_item = NULL;
-       setting_view_network_select_network.is_create = FALSE;
-
-
-       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;
-}
-
-static Evas_Object *_create_registering_popup(void)
-{
-       SETTING_TRACE_BEGIN;
-
-       Evas_Object *popup = elm_popup_add(s_info.ad->md.window);
-       elm_popup_align_set(popup, ELM_NOTIFY_ALIGN_FILL, 1.0);
-       eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK, _ignore_back_key_cb, NULL);
-
-       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       Evas_Object *box = elm_box_add(popup);
-
-       elm_box_horizontal_set(box, EINA_TRUE);
-       elm_box_align_set(box, 0.5, 0.5);
-       elm_box_padding_set(box, 16, 0);
-
-       Evas_Object *progressbar = elm_progressbar_add(popup);
-       elm_object_style_set(progressbar, PROGRESSBAR_STYLE);
-       elm_progressbar_pulse(progressbar, EINA_TRUE);
-       evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5);
-       evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       elm_progressbar_pulse(progressbar, EINA_TRUE);
-       evas_object_show(progressbar);
-       elm_box_pack_end(box, progressbar);
-
-       Evas_Object *label = elm_label_add(popup);
-       elm_object_text_set(label, _("IDS_ST_POP_REGISTERING_ING"));
-       evas_object_show(label);
-       elm_box_pack_end(box, label);
-
-       /*evas_object_show(box); */
-       /*elm_object_content_set(popup, box); */
-
-       Evas_Object *table = elm_table_add(popup);
-       evas_object_show(table);
-       elm_table_homogeneous_set(table, EINA_FALSE);
-
-       Evas_Object *rect_up;
-       rect_up = evas_object_rectangle_add(evas_object_evas_get(popup));
-       evas_object_size_hint_min_set(rect_up, ELM_SCALE_SIZE(170), ELM_SCALE_SIZE(34));
-
-       Evas_Object *rect_down;
-       rect_down = evas_object_rectangle_add(evas_object_evas_get(popup));
-       evas_object_size_hint_min_set(rect_down, ELM_SCALE_SIZE(100), ELM_SCALE_SIZE(34));
-
-       elm_table_pack(table, rect_up, 0, 0, 2, 1);/* rect as a padding */
-       elm_table_pack(table, box, 1, 1, 1, 1);
-       elm_table_pack(table, rect_down, 2, 2, 2, 1);/* rect as a padding */
-
-       evas_object_show(box);
-
-       elm_object_content_set(popup, table);
-
-       evas_object_show(popup);
-       SETTING_TRACE_END;
-
-       return popup;
-}
-
-/* ***************************************************
- *
- *general func
- *
- ***************************************************/
-
-/* ***************************************************
- *
- *call back func
- *
- ***************************************************/
-
-static Eina_Bool _naviframe_item_pop_cb(void *data, Elm_Object_Item *it)
-{
-       SETTING_TRACE_BEGIN;
-
-       /* If registering.. popup is displaying, Back must be ignored. */
-       if (s_info.network_select_registering_pop) {
-               SETTING_TRACE("registering... popup is displaying. back key ignored");
-               return EINA_TRUE;
-       }
-
-       if (s_info.ad->view_to_load == &setting_view_network_select_network) {
-               ui_app_exit();
-               return EINA_TRUE;
-       }
-       _view_destroy(data);
-
-       SETTING_TRACE_END;
-       return EINA_TRUE;
-}
-
-/*
- * Cancel for searching network
- */
-static void _search_network_cancel_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-
-       if (s_info.ad->popup) {
-               evas_object_del(s_info.ad->popup);
-               s_info.ad->popup = NULL;
-       }
-       if (s_info.b_searching_network) {
-               SETTING_TRACE("Sending tel_cancel_network_manual_search..");
-               int tapi_ret = tel_cancel_network_manual_search(s_info.ad->handle[s_info.sim_selected], setting_tapi_cancel_manual_search_cb, NULL);
-               if (tapi_ret != TAPI_API_SUCCESS)
-                       SETTING_TRACE_ERROR("*** [ERR] tel_cancel_network_manual_search. " "tapi_ret=%d ***", tapi_ret);
-               else
-                       s_info.b_searching_network = FALSE;
-       }
-
-       /* Restore selection automatically */
-       int sel_net;
-
-       vconf_get_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, &sel_net);
-       SETTING_TRACE("Previous selection after searching network:%d", sel_net);
-       SETTING_TRACE_END;
-}
-
-void _show_registered_popup(void)
-{
-       Evas_Object *popup = elm_popup_add(s_info.ad->md.window);
-       char r_str_text[128] = { 0 };
-
-       elm_popup_align_set(popup, ELM_NOTIFY_ALIGN_FILL, 1.0);
-       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);
-
-       snprintf(r_str_text, 128, "<align=left>");
-       g_strlcat(r_str_text, _("IDS_ST_POP_REGISTERED"), 128);
-       g_strlcat(r_str_text, "</align>", 128);
-
-       elm_object_text_set(popup, r_str_text);
-       elm_popup_timeout_set(popup, 2.0);
-       evas_object_smart_callback_add(popup, "timeout", __back_to_previous_cb, NULL);
-       evas_object_show(popup);
-}
-
-/**
- * @see also __register_network
- */
-static void _tapi_set_plmn_mode_cb(TapiHandle *handle, int result, void *data, void *user_data)
-{
-       SETTING_TRACE_BEGIN;
-       SETTING_TRACE(" - result = 0x%x", result);
-
-       _network_popup_delete();
-
-       if ((TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == s_info.sel_net && !s_info.b_set_manul_network) ||
-                       (TAPI_NETWORK_SELECTIONMODE_MANUAL == s_info.sel_net && !s_info.b_set_manul_network)) {
-               /*The requeset has already been canceled, return directly*/
-               SETTING_TRACE("The requeset has already been canceled, return directly");
-               return;
-       }
-
-       if (result != TAPI_NETWORK_NO_ERR) { /*roolback..*/
-               if (TAPI_NETWORK_SELECTIONMODE_MANUAL == s_info.sel_net && s_info.data_auto_network_item && !s_info.data_auto_network_item->chk_status) {
-                       SETTING_TRACE("Need refreshing");
-                       setting_create_popup(s_info.ad, s_info.ad->md.window, NULL, keyStr_Failed_Select_Network, NULL, 2 * POPUP_INTERVAL, FALSE, FALSE, 0);
-                       elm_radio_value_set(s_info.chk_sel, -2);
-               }
-
-               return;
-       }
-
-       if (0 != vconf_set_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, s_info.sel_net))
-               SETTING_TRACE_ERROR("vconf[%s] set failed");
-
-       if (0 != vconf_set_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, s_info.sel_act))
-               SETTING_TRACE_ERROR("vconf[%s] set failed");
-
-       s_info.b_set_manul_network = FALSE;
-
-       _show_registered_popup();
-
-       tel_get_network_serving(s_info.ad->handle[s_info.sim_selected], _tel_get_selected_network_cb, NULL);
-
-       SETTING_TRACE_END;
-}
-
-static void setting_tapi_cancel_manual_search_cb(TapiHandle *handle, int result, void *data, void *user_data)
-{
-       SETTING_TRACE_BEGIN;
-       SETTING_TRACE(" - result = 0x%x", result);
-       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";
-       case TAPI_NETWORK_SYSTEM_GSM: /*1 */
-               return "GSM";
-       case TAPI_NETWORK_SYSTEM_GPRS: /*2 */
-               return "GPRS";
-       case TAPI_NETWORK_SYSTEM_EGPRS: /*3 */
-               return "EGPRS";
-       case TAPI_NETWORK_SYSTEM_PCS1900: /*4 */
-               return "PCS1900";
-       case TAPI_NETWORK_SYSTEM_UMTS: /*5 */
-               return "WCDMA";
-       case TAPI_NETWORK_SYSTEM_GSM_AND_UMTS:
-               return "GSM/WCDMA";
-       case TAPI_NETWORK_SYSTEM_HSDPA:
-               return "HSDPA";
-       case TAPI_NETWORK_SYSTEM_IS95A:
-               return "IS95A";
-       case TAPI_NETWORK_SYSTEM_IS95B:
-               return "IS95B";
-       case TAPI_NETWORK_SYSTEM_CDMA_1X:
-               return "CDMA 1X";
-       case TAPI_NETWORK_SYSTEM_EVDO_REV_0:
-               return "EV-DO rev0";
-       case TAPI_NETWORK_SYSTEM_1X_EVDO_REV_0_HYBRID:
-               return "1X and EV-DO rev0";
-       case TAPI_NETWORK_SYSTEM_EVDO_REV_A:
-               return "EV-DO revA";
-       case TAPI_NETWORK_SYSTEM_1X_EVDO_REV_A_HYBRID:
-               return "1X and EV-DO revA";
-       case TAPI_NETWORK_SYSTEM_EVDV:
-               return "EV-DV";
-       case TAPI_NETWORK_SYSTEM_LTE:
-               return "LTE";
-       default:
-               return "NO SERVICE";
-       }
-}
-
-static void __back_to_previous_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-
-       if (obj) {
-               evas_object_del(obj);
-               obj = NULL;
-       }
-
-       /*go back to previous view if set successfully */
-       setting_view_change(&setting_view_network_select_network, &setting_view_network_main, s_info.ad);
-       SETTING_TRACE_END;
-}
-
-static void __selected_network_change_cb(keynode_t *key, void *data)
-{
-       SETTING_TRACE_BEGIN;
-       setting_retm_if(!data, "!data");
-       SettingNetwork *ad = data;
-       char *vconf_name = vconf_keynode_get_name(key);
-
-       if (!safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_NWNAME) ||
-                       !safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_SPN_DISP_CONDITION)
-                       || !safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_SPN_NAME)
-                       || !safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_SVCTYPE)) {
-               s_info.sel_network = get_pa_select_network();
-               if (!s_info.sel_network)
-                       s_info.sel_network = strdup(Keystr_UNKNOWN_NETWORK);
-
-               if (0 != vconf_set_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, s_info.sel_net))
-                       SETTING_TRACE_ERROR("vconf[%s] set failed");
-
-               if (0 != vconf_set_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, s_info.sel_act))
-                       SETTING_TRACE_ERROR("vconf[%s] set failed");
-
-       } else if (!safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_FLIGHT_MODE)) {
-               SETTING_TRACE("vconf_name:%s", vconf_name);
-               setting_create_popup(ad, ad->md.naviframe, NULL,
-                               "IDS_ST_BODY_FLIGHT_MODE_HAS_BEEN_ENABLED_NETWORK_SETTINGS_WILL_CLOSE",
-                               __notify_response_cb,
-                               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 ?' */
-{
-       SETTING_TRACE_BEGIN;
-       SettingNetwork *ad = data;
-       ret_if(!ad);
-       if (obj) {
-               evas_object_del(obj);
-               obj = NULL;
-       }
-
-       ui_app_exit();
-       SETTING_TRACE_END;
-}
-
-static void _tapi_get_plmn_mode_cb(TapiHandle *handle, int result, void *data, void *user_data)
-{
-       SETTING_TRACE_BEGIN;
-       SETTING_TRACE(" - result = 0x%x", result);
-
-       if (result == TAPI_NETWORK_NO_ERR) {
-               TelNetworkSelectionMode_t sel;
-               memcpy(&sel, data, sizeof(TelNetworkSelectionMode_t));
-               SETTING_TRACE_DEBUG("s_info.sel_net[%d] %s sel[%d]", s_info.sel_net, s_info.sel_net == sel ? "==" : "!=", sel);
-               if (s_info.sel_net != sel) {
-                       s_info.sel_net = sel;
-                       vconf_set_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, s_info.sel_net);
-               }
-       } else {
-       }
-
-       SETTING_TRACE_END;
-}
diff --git a/setting-network/src/setting-network-service-providers.c b/setting-network/src/setting-network-service-providers.c
new file mode 100755 (executable)
index 0000000..b0bf7f1
--- /dev/null
@@ -0,0 +1,1464 @@
+/*
+ * setting
+
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Contact: MyoungJune Park <mj2004.park@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <call-manager.h>
+#include "setting-network-service-providers.h"
+
+const char *STR_SETTING_OPERATION_FAILED = "IDS_BT_POP_OPERATION_FAILED";
+
+static int _view_create(void *cb);
+static int _view_destroy(void *cb);
+static Eina_Bool _naviframe_item_pop_cb(void *data, Elm_Object_Item *it);
+static void _tapi_search_network_cb(TapiHandle *handle, int result, void *data, void *user_data);
+static void _select_network_chk_changed(void *data, Evas_Object *obj, void *event_info);
+static void _Gendial_select_plmn_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *_create_registering_popup(void);
+static void _search_network_cancel_cb(void *data, Evas_Object *obj, void *event_info);
+static void _searching_network(Setting_GenGroupItem_Data *list_item);
+static void _tapi_set_plmn_mode_cb(TapiHandle *handle, int result, void *data, void *user_data);
+static void setting_tapi_cancel_manual_search_cb(TapiHandle *handle, int result, void *data, void *user_data);
+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);
+static void _tapi_get_plmn_mode_cb(TapiHandle *handle, int result, void *data, void *user_data);
+static void _tapi_get_serving_network_cb(TapiHandle *handle, int result, void *data, void *user_data);
+
+static struct select_network_info {
+       SettingNetwork *ad;
+
+       Evas_Object *genlist_sel_network;
+
+       Setting_GenGroupItem_Data *data_auto_network_item;
+       Setting_GenGroupItem_Data *data_sel_net;
+       Setting_GenGroupItem_Data *data_search_network_item;
+
+       Evas_Object *network_select_registering_pop;
+       Evas_Object *chk_sel;
+
+       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 */
+       char *sel_network;
+       bool b_set_auto_network;
+       bool b_set_manul_network;
+
+       int sim_selected;
+
+       Evas_Point point_down;
+} s_info = {
+       .ad = NULL,
+       .genlist_sel_network = NULL,
+       .data_auto_network_item = NULL,
+       .data_sel_net = NULL,
+       .plmn_info = {{0,}, {0,} },
+       .genlist_sel_network = NULL,
+       .b_searching_network = false,
+       .sel_act = 0,
+       .sel_net = 0,
+       .sel_network = NULL,
+       .b_set_auto_network = false,
+       .b_set_manul_network = false,
+};
+
+setting_view setting_view_network_select_network = {
+       .create = _view_create,
+       .destroy = _view_destroy,
+       .update = NULL,
+       .cleanup = NULL
+};
+
+void select_network_app_control(SettingNetwork *ad)
+{
+       SETTING_TRACE_BEGIN;
+       int i;
+       s_info.ad = ad;
+
+       for (i = 0; i < MAX_SIM_COUNT; ++i) {
+               if (tel_get_network_selection_mode(ad->handle[i], _tapi_get_plmn_mode_cb, (void *)i) != TAPI_API_SUCCESS)
+                       SETTING_TRACE_ERROR("*** [ERR] tel_get_network_selection_mode. ***");
+
+               if (tel_get_network_serving(ad->handle[i], _tapi_get_serving_network_cb, (void *)i) != TAPI_API_SUCCESS)
+                       SETTING_TRACE_ERROR("*** [ERR] tel_get_network_serving. ***");
+       }
+
+       (void) vconf_notify_key_changed(VCONFKEY_TELEPHONY_NWNAME, __selected_network_change_cb, ad);
+       (void) vconf_notify_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, __selected_network_change_cb, 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);
+       (void) vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVCTYPE, __selected_network_change_cb);
+       (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);
+       cm_get_call_status(cm_handle, &call_status);
+       cm_deinit(cm_handle);
+       if (CM_CALL_STATUS_IDLE != call_status) {
+               setting_create_popup(s_info.ad, s_info.ad->md.window, NULL, _("IDS_CST_POP_OPERATION_NOT_ALLOWED_DURING_CALLS"), NULL, 0, false, false, 0);
+               return SETTING_GENERAL_ERR_NULL_DATA_PARAMETER;
+       }
+
+       int value_use_packet;
+       vconf_get_int(VCONFKEY_DNET_STATE, &value_use_packet);
+       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);
+}
+
+static void _tapi_get_serving_network_cb(TapiHandle *handle, int result, void *data, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       SETTING_TRACE(" - result = 0x%x", result);
+       ret_if(!data);
+       TelNetworkServing_t *srv_nt = data;
+
+       if (result == TAPI_NETWORK_NO_ERR) {
+               s_info.sel_act = srv_nt->act;
+               vconf_set_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, s_info.sel_act);
+
+               FREE(s_info.sel_network);
+               /*s_info.sel_network = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME); */
+               s_info.sel_network = get_pa_select_network();
+               if (!s_info.sel_network)
+                       s_info.sel_network = strndup(Keystr_UNKNOWN_NETWORK, strlen(Keystr_UNKNOWN_NETWORK) + 1);
+       } else {
+               /*if failed, do nothing.. */
+       }
+       SETTING_TRACE_END;
+}
+
+static void _network_popup_delete(void)
+{
+       SETTING_TRACE_BEGIN;
+       /* error check */
+
+       if (s_info.network_select_registering_pop != NULL) {
+               evas_object_del(s_info.network_select_registering_pop);
+               s_info.network_select_registering_pop = NULL;
+       }
+       if (s_info.ad->network_popup != NULL) {
+               evas_object_del(s_info.ad->network_popup);
+               s_info.ad->network_popup = NULL;
+       }
+       if (s_info.ad->popup != NULL) {
+               evas_object_del(s_info.ad->popup);
+               s_info.ad->popup = NULL;
+       }
+}
+
+static void _sort_merge_handle(void *usrdata, TelNetworkPlmnList_t *list)
+{
+       SETTING_TRACE_BEGIN;
+       int cnt = 0, tempcount = 0;
+       int idx = 0;
+
+       tempcount = s_info.plmn_info[s_info.sim_selected].networks_count;
+       for (idx = 0; idx < tempcount; idx++) {
+               SETTING_TRACE("[%d].network_name=%s, spn=%s, plmn=%s, plmn_id=%d, plmn_type=%d, access_technology=%d",
+                               idx, list->network_list[idx].network_name,
+                               list->network_list[idx].service_provider_name,
+                               list->network_list[idx].plmn,
+                               list->network_list[idx].plmn_id,
+                               list->network_list[idx].type_of_plmn,
+                               list->network_list[idx].access_technology);
+       }
+       SETTING_TRACE("*****************************************************");
+
+       int j = 0;
+       bool alread_exist = FALSE;
+       tempcount = list->networks_count;
+       for (idx = 0; idx < tempcount; idx++) {
+               alread_exist = FALSE;
+               for (j = 0; j < cnt; j++) {
+                       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;
+                       }
+               }
+
+               if (alread_exist)
+                       continue;
+
+               memcpy(&(s_info.plmn_info[s_info.sim_selected].network_list[cnt++]),
+                               &(list->network_list[idx]),
+                               sizeof(TelNetworkIdentity_t));
+       }
+
+       SETTING_TRACE("*****************************************************");
+       SETTING_TRACE("After Sorted:");
+       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[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;
+}
+
+
+
+/*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;
+
+       while (NULL != temp2) {
+               if (0 == safeStrNCmp(temp2, "&amp;", strlen("&amp;"))) {
+                       temp = temp2 + 1;
+                       if ('\0' == temp[0])
+                               break;
+
+                       temp2 = strchr(temp, '&');
+               } else {
+                       g_strlcat(dst, temp1, temp2 - temp1 + 1);
+                       g_strlcat(dst, "&amp;", MAX_SPECIALIZITION_LEN);
+                       temp1 = temp2 + 1;
+                       if ('\0' == temp1[0])
+                               break;
+
+                       temp2 = strchr(temp1, '&');
+               }
+       }
+       if ('\0' != temp1[0])
+               g_strlcat(dst, temp1, MAX_SPECIALIZITION_LEN);
+
+       SETTING_TRACE_END;
+}
+
+static void _show_registering_popup(void)
+{
+       SETTING_TRACE_BEGIN;
+       /* Display 'Registering' popup when manual */
+       SETTING_TRACE("Manual selection, Registering..");
+
+       if (s_info.network_select_registering_pop != NULL) {
+               evas_object_del(s_info.network_select_registering_pop);
+               s_info.network_select_registering_pop = NULL;
+       }
+
+       s_info.network_select_registering_pop = _create_registering_popup();
+       if (s_info.network_select_registering_pop)
+               SETTING_TRACE("Registering popup appeared");
+       else
+               SETTING_TRACE("Registering popup failed");
+
+       SETTING_TRACE_END;
+}
+
+static void _register_network_automaticaly(void)
+{
+       SETTING_TRACE_BEGIN;
+       s_info.sel_net = TAPI_NETWORK_SELECTIONMODE_AUTOMATIC;
+       SETTING_TRACE("Sending tel_select_network_automatic..");
+
+       int tapi_ret = tel_select_network_automatic(s_info.ad->handle[s_info.sim_selected], _tapi_set_plmn_mode_cb, NULL);
+       if (tapi_ret != TAPI_API_SUCCESS) {
+               SETTING_TRACE_DEBUG("*** [ERR] tel_select_network_automatic." " tapi_ret=%s ***", get_error_message(tapi_ret));
+               return;
+       }
+
+       /* Display 'Registering' popup when automatic */
+       SETTING_TRACE("Automatic selection, Registering..");
+
+       s_info.b_set_manul_network = FALSE;
+       s_info.b_set_manul_network = TRUE;
+       s_info.sel_act = -1;/*means "Automatic" */
+
+       SETTING_TRACE_END;
+}
+
+static int _process_special_char_in_network_names(Setting_GenGroupItem_Data *list_item)
+{
+       SETTING_TRACE_BEGIN;
+       int cnt = 0;
+       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, };
+       int net_count = (int)s_info.plmn_info[s_info.sim_selected].networks_count;
+       for (; cnt < net_count; cnt++) {
+
+               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[s_info.sim_selected].network_list[cnt].network_name);
+
+               char speciliztion[MAX_COMMON_BUFFER_LEN] = { 0, };
+               _process_special_char(speciliztion, name);
+
+               SETTING_TRACE("  name:%s", speciliztion);
+
+               if (!safeStrCmp(list_item->keyStr, speciliztion)) {
+                       SETTING_TRACE("find the right item");
+                       break;
+               }
+       }
+       SETTING_TRACE_DEBUG(
+                       "*** [Selected PLMN] name=%s, " "srv provider=%s, PLMN ID=%s, type=%d, " "access tech=%d ***",
+                       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;
+}
+
+static void _register_network_manual(Setting_GenGroupItem_Data *list_item)
+{
+       SETTING_TRACE_BEGIN;
+
+       if (!list_item) {
+               SETTING_TRACE_ERROR("list_item == NULL");
+               return;
+       }
+
+       s_info.sel_net = TAPI_NETWORK_SELECTIONMODE_MANUAL;
+       s_info.b_set_manul_network = TRUE;
+       s_info.b_set_manul_network = FALSE;
+
+       int cnt = _process_special_char_in_network_names(list_item);
+       SETTING_TRACE("Sending tel_select_network_manual..");
+
+       int tapi_ret = tel_select_network_manual(s_info.ad->handle[s_info.sim_selected],
+                       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, NULL);
+
+       if (tapi_ret != TAPI_API_SUCCESS) {
+               SETTING_TRACE_DEBUG("%s*** [ERR] " "tel_select_network_manual. " "tapi_ret=%d ***%s", SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
+               setting_create_popup(s_info.ad, s_info.ad->md.window, NULL, "IDS_ST_BODY_FAILED_TO_SELECT_NETWORK", NULL, POPUP_INTERVAL, FALSE, FALSE, 0);
+               return;
+       }
+
+       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[s_info.sim_selected].network_list[cnt].network_name);
+
+       SETTING_TRACE_END;
+}
+
+static void _cancel_network_search(void)
+{
+       SETTING_TRACE_BEGIN;
+
+       int tapi_ret = TAPI_API_INVALID_INPUT;
+
+       if (s_info.b_searching_network) {
+               SETTING_TRACE("Sending tel_cancel_network_manual_search..");
+               tapi_ret = tel_cancel_network_manual_search(s_info.ad->handle[s_info.sim_selected], setting_tapi_cancel_manual_search_cb, NULL);
+               if (tapi_ret != TAPI_API_SUCCESS)
+                       SETTING_TRACE_ERROR("*** [ERR] tel_cancel_network_manual_search. " "tapi_ret=%d ***", tapi_ret);
+               else
+                       s_info.b_searching_network = FALSE;
+       }
+
+       SETTING_TRACE_END;
+}
+
+static void _register_network(Setting_GenGroupItem_Data *list_item, bool is_auto)
+{
+       SETTING_TRACE_BEGIN;
+
+       _cancel_network_search();
+       _show_registering_popup();
+
+       if (is_auto)
+               _register_network_automaticaly();
+       else
+               _register_network_manual(list_item);
+
+       SETTING_TRACE_END;
+}
+
+static Evas_Object *_create_searching_popup(void *data)
+{
+       SETTING_TRACE_BEGIN;
+
+       Evas_Object *popup = elm_popup_add(s_info.ad->md.naviframe);
+       elm_object_domain_translatable_part_text_set(popup, "title,text", SETTING_PACKAGE, _("IDS_ST_POP_SEARCHING_NETWORK_ING"));
+
+       elm_popup_align_set(popup, ELM_NOTIFY_ALIGN_FILL, 1.0);
+       eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK, _search_network_cancel_cb, NULL);
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
+       EVAS_HINT_EXPAND);
+
+       Evas_Object *box = elm_box_add(popup);
+
+       elm_box_horizontal_set(box, EINA_TRUE);
+       elm_box_align_set(box, 0.5, 0.5);
+       elm_box_padding_set(box, 16, 0);
+
+       Evas_Object *progressbar = elm_progressbar_add(popup);
+       elm_object_style_set(progressbar, PROGRESSBAR_STYLE);
+       elm_progressbar_pulse(progressbar, EINA_TRUE);
+       evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5);
+       evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND,
+                       EVAS_HINT_EXPAND);
+       elm_progressbar_pulse(progressbar, EINA_TRUE);
+       evas_object_show(progressbar);
+       elm_box_pack_end(box, progressbar);
+
+       Evas_Object *label = elm_label_add(popup);
+       elm_object_text_set(label, _("IDS_ST_POP_NETWORKSERVICES_SEARCHING"));
+       evas_object_show(label);
+       elm_box_pack_end(box, label);
+
+       /*evas_object_show(box); */
+       /*elm_object_content_set(popup, box); */
+
+       Evas_Object *table = elm_table_add(popup);
+       evas_object_show(table);
+       elm_table_homogeneous_set(table, EINA_FALSE);
+
+       Evas_Object *rect_up;
+       rect_up = evas_object_rectangle_add(evas_object_evas_get(popup));
+       evas_object_size_hint_min_set(rect_up, ELM_SCALE_SIZE(170),
+                       ELM_SCALE_SIZE(34));
+
+       Evas_Object *rect_down;
+       rect_down = evas_object_rectangle_add(evas_object_evas_get(popup));
+       evas_object_size_hint_min_set(rect_down, ELM_SCALE_SIZE(100),
+                       ELM_SCALE_SIZE(34));
+
+       elm_table_pack(table, rect_up, 0, 0, 2, 1);/* rect as a padding */
+       elm_table_pack(table, box, 1, 1, 1, 1);
+       elm_table_pack(table, rect_down, 2, 2, 2, 1);/* rect as a padding */
+
+       evas_object_show(box);
+
+       elm_object_content_set(popup, table);
+
+       /* 'cancel' button */
+       Evas_Object *btn = elm_button_add(popup);
+       /*msgid "IDS_ST_BUTTON_CANCEL_ABB" */
+       elm_object_style_set(btn, "bottom");
+       elm_object_text_set(btn, _("IDS_ST_BUTTON_CANCEL_ABB"));
+       elm_object_part_content_set(popup, "button1", btn);
+       evas_object_smart_callback_add(btn, "clicked", _search_network_cancel_cb, NULL);
+
+       evas_object_show(popup);
+
+       SETTING_TRACE_END;
+       return popup;
+}
+
+static Eina_Bool _search_net_on_timer(void *data)
+{
+       /* error check */
+       SETTING_TRACE_BEGIN;
+       retv_if(data == NULL, EINA_FALSE);
+       Setting_GenGroupItem_Data *list_item =
+                       (Setting_GenGroupItem_Data *)data;
+       SettingNetwork *ad = list_item->userdata;
+       retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "ad is NULL");
+
+       int tapi_ret;
+       /*searching list */
+       /*ASYNC API - TAPI_EVENT_NETWORK_SEARCH_CNF */
+       tapi_ret = tel_search_network(ad->handle[s_info.sim_selected], _tapi_search_network_cb, ad);
+       if (tapi_ret != TAPI_API_SUCCESS) { /* error handling.. */
+               SETTING_TRACE_ERROR(
+                               "%s*** [ERR] tel_search_network. tapi_ret=%d ***%s",
+                               SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
+               setting_create_popup(ad, ad->md.window, NULL,
+                               STR_SETTING_OPERATION_FAILED, NULL,
+                               POPUP_INTERVAL, FALSE, FALSE, 0);
+
+               /* put error handler on the end of this function. */
+               /*rollback.. */
+               setting_update_gl_item_chk_status(s_info.data_auto_network_item,
+                               1);
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       s_info.b_searching_network = TRUE;
+
+       if (ad->popup) {
+               evas_object_del(ad->popup);
+               ad->popup = NULL;
+       }
+       ad->popup = _create_searching_popup(list_item);
+       if (s_info.data_auto_network_item) {
+               /*elm_genlist_item_item_class_update(
+                * s_info.data_auto_network_item->item, &(itc_2text_1icon_7)); */
+
+               elm_object_item_data_set(s_info.data_auto_network_item->item, s_info.data_auto_network_item);
+               elm_genlist_item_update(s_info.data_auto_network_item->item);
+       }
+
+       ad->timer = NULL;
+
+       SETTING_TRACE_END;
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static void _switch_automatic_on_resp_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+       retm_if(data == NULL, "Data parameter is NULL");
+
+       Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
+       SettingNetwork *ad = list_item->userdata;
+       int response_type = btn_type(obj);
+       if (ad->popup) {
+               evas_object_del(ad->popup);
+               ad->popup = NULL;
+       }
+
+       if (POPUP_RESPONSE_OK == response_type) {
+
+               _search_net_on_timer(list_item);
+
+       } else if (POPUP_RESPONSE_CANCEL == response_type) {
+
+               /* Restore selection automatically */
+               int sel_net, chk_status;
+
+               vconf_get_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, &sel_net);
+               SETTING_TRACE("Previous selection after searching network:%d",
+                               sel_net);
+
+               if (sel_net == TAPI_NETWORK_SELECTIONMODE_AUTOMATIC)
+                       chk_status = 1;
+               else
+                       chk_status = 0;
+
+               setting_update_gl_item_chk_status(s_info.data_auto_network_item,
+                               chk_status);
+       }
+
+       SETTING_TRACE_END;
+}
+
+static void _select_network_chk_changed(void *data, Evas_Object *obj, void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+       retm_if(data == NULL || obj == NULL, "Parameter is NULL");
+       Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
+       list_item->chk_status = elm_radio_value_get(obj);
+       SETTING_TRACE("[Radio index:%d] Radio checked", list_item->chk_status);
+
+       _register_network(list_item, false);
+
+       SETTING_TRACE_END;
+}
+
+static void _Gendial_select_plmn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+       retm_if(data == NULL || event_info == NULL, "Parameter 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_retm_if(NULL == list_item, "list_item is NULL");
+
+       if (s_info.b_searching_network) {
+               SETTING_TRACE("Searching poup displaying, Cannot select");
+               return;
+       }
+
+       int chk_status = elm_radio_value_get(list_item->rgd);
+       if (chk_status != list_item->chk_status) {
+               SETTING_TRACE("[List index:%d] List selected (radio index:%d)", list_item->chk_status, chk_status);
+               elm_radio_value_set(s_info.chk_sel, list_item->chk_status);
+               _register_network(list_item, false);
+       } else {
+               SETTING_TRACE("[List index:%d] Skip becuase radio checked (radio index:%d)", list_item->chk_status, chk_status);
+       }
+
+       SETTING_TRACE_END;
+}
+
+static void _update_current_network_name(void)
+{
+       SETTING_TRACE_BEGIN;
+       int ret;
+       char *network_name;
+
+       if (!s_info.data_auto_network_item) {
+               dlog_print(DLOG_ERROR, LOG_TAG, "[%s:%d] list_item == NULL", __FILE__, __LINE__);
+               return;
+       }
+
+       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) {
+               SETTING_TRACE_ERROR("Failed to get network name");
+               return;
+       }
+
+       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 _tel_get_selected_network_cb(TapiHandle *handle, int result, void *data, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       TelNetworkServing_t *network = (TelNetworkServing_t*)data;
+       int i = 0;
+       int found_index = -1;
+       TelNetworkIdentity_t *network_list = &s_info.plmn_info[s_info.sim_selected].network_list[0];
+
+       int num = s_info.plmn_info[s_info.sim_selected].networks_count;
+       int len = strlen(network->plmn);
+       if (!network) {
+               SETTING_TRACE_ERROR("network == NULL");
+               return;
+       }
+       for (i = 0; i < num; ++i) {
+               SETTING_TRACE("Current: (%s) <> List %s(%s)", network->plmn, network_list[i].network_name, network_list[i].plmn);
+
+               if (strlen(network_list[i].plmn) == len && !strncmp(network->plmn, network_list[i].plmn, len)) {
+                       found_index = i;
+                       break;
+               }
+       }
+
+       elm_radio_value_set(s_info.chk_sel, TAPI_NETWORK_SELECTIONMODE_MANUAL + found_index + 1);
+       SETTING_TRACE("rgd=%s, index=%d;", evas_object_type_get(s_info.chk_sel), TAPI_NETWORK_SELECTIONMODE_MANUAL + found_index + 1);
+       elm_genlist_realized_items_update(s_info.genlist_sel_network);
+       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;
+       int net_count = (int)s_info.plmn_info[s_info.sim_selected].networks_count;
+
+       if (s_info.plmn_info[s_info.sim_selected].networks_count == 0) {
+               SETTING_TRACE_DEBUG("Networks list is empty");
+               return false;
+       }
+
+       pa_net_name = get_pa_select_network();
+       dlog_print(DLOG_INFO, LOG_TAG,
+                       "[%s:%d] sim: %d; Networks_Count: %d selected: %s",
+                       __FILE__, __LINE__, s_info.sim_selected, net_count, pa_net_name);
+
+
+       net_count = s_info.plmn_info[s_info.sim_selected].networks_count;
+       while (cnt < net_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);
+
+       tel_get_network_serving(s_info.ad->handle[s_info.sim_selected], _tel_get_selected_network_cb, NULL);
+
+       SETTING_TRACE_END;
+       return (cnt > 0);
+}
+
+static void _auto_select_item_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+       Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+       elm_genlist_item_selected_set(item, EINA_FALSE);
+       _register_network(NULL, true);
+       SETTING_TRACE_END;
+}
+
+static void _manual_select_item_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+       Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+       elm_genlist_item_selected_set(item, EINA_FALSE);
+
+       _searching_network(s_info.data_search_network_item);
+       SETTING_TRACE_END;
+}
+
+static Setting_GenGroupItem_Data *_add_item_to_list(char *title, setting_call_back_func on_click_cb)
+{
+       SETTING_TRACE_BEGIN;
+       Setting_GenGroupItem_Data *item = setting_create_Gendial_field_def(
+                       s_info.genlist_sel_network, &itc_1text_1icon,
+                       on_click_cb, NULL, SWALLOW_Type_INVALID,
+                       NULL, NULL, FALSE, title, NULL, NULL);
+
+       setting_retvm_if(!item, NULL, "Failed to calloc memory");
+
+       SETTING_TRACE_END;
+       return item;
+}
+
+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;
+}
+
+static void _copy_network_data(TelNetworkPlmnList_t *network_list)
+{
+       int i;
+       TelNetworkIdentity_t *network_target;
+       TelNetworkIdentity_t *network_source;
+       int net_count = (int)network_list->networks_count;
+       s_info.plmn_info[s_info.sim_selected].networks_count =
+                                                                                               network_list->networks_count;
+
+       for (i = 0; i < net_count; ++i) {
+               network_target = &s_info.plmn_info[s_info.sim_selected].network_list[i];
+               network_source = &network_list->network_list[i];
+
+               strncpy(network_target->network_name, network_source->network_name,
+                               TAPI_NETWORK_NAME_LEN_MAX);
+               strncpy(network_target->service_provider_name,
+                               network_source->service_provider_name,
+                               TAPI_NETWORK_NAME_LEN_MAX);
+               strncpy(network_target->plmn, network_source->plmn,
+                               TAPI_NETWORK_PLMN_LEN_MAX);
+
+               network_target->plmn_id =              network_source->plmn_id;
+               network_target->type_of_plmn =      network_source->type_of_plmn;
+               network_target->access_technology = network_source->access_technology;
+       }
+}
+
+/**
+ * async api call - searching network list
+ *
+ * @see also tel_search_network
+ */
+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(" - result = %d", result);
+       _network_popup_delete();
+       bool networks_found = false;
+
+
+       if (!s_info.b_searching_network) {
+               /*The requeset has already been canceled, don't do detail
+                * process*/
+               return;
+       }
+
+//     s_info.plmn_info[s_info.sim_selected] = (TelNetworkPlmnList_t *)data;
+       _copy_network_data((TelNetworkPlmnList_t *)data);
+
+       s_info.b_searching_network = FALSE;
+       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);
+       }
+
+       _sort_merge_handle(s_info.ad, data);
+
+       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_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;
+}
+
+static void _show_search_cancel_popup(Setting_GenGroupItem_Data *list_item)
+{
+       s_info.ad->popup = setting_create_popup(list_item, s_info.ad->md.naviframe,
+                       IDS_ST_BODY_UNABLE_TO_SCAN_FOR_NETWORKS,
+                       _(SETTING_NETWORK_SEARCH_3G_ON_DESC), _switch_automatic_on_resp_cb,
+                       0, FALSE, FALSE, 2, _("IDS_ST_BUTTON_OK"),
+                       _("IDS_ST_BUTTON_CANCEL_ABB"));
+}
+
+static void _show_searching_popup(void)
+{
+       if (s_info.ad->popup) {
+               evas_object_del(s_info.ad->popup);
+               s_info.ad->popup = NULL;
+       }
+       s_info.ad->popup = _create_searching_popup(s_info.data_auto_network_item);
+}
+
+/*
+ * Network selection / Searching network
+ */
+static void _searching_network(Setting_GenGroupItem_Data *list_item)
+{
+       SETTING_TRACE_BEGIN;
+
+       /* Manual selected */
+       /*_register_network(list_item); */
+
+       int value_use_packet;
+       vconf_get_int(VCONFKEY_DNET_STATE, &value_use_packet);
+
+       SETTING_TRACE("s_info.sel_net:%d", s_info.sel_net);
+       if (value_use_packet != VCONFKEY_DNET_OFF) {
+               _show_search_cancel_popup(list_item);
+               return;
+       }
+
+       int tapi_ret;
+       /*searching list */
+       /*ASYNC API - TAPI_EVENT_NETWORK_SEARCH_CNF */
+       tapi_ret = tel_search_network(s_info.ad->handle[s_info.sim_selected], _tapi_search_network_cb, s_info.ad);
+       if (tapi_ret != TAPI_API_SUCCESS) { /* error handling.. */
+               SETTING_TRACE_ERROR("%s*** [ERR] tel_search_network. tapi_ret=%d ***%s", SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
+               setting_create_popup(s_info.ad, s_info.ad->md.window, NULL, STR_SETTING_OPERATION_FAILED, NULL, POPUP_INTERVAL, FALSE, FALSE, 0);
+
+               /* put error handler on the end of this function. */
+               /*rollback.. */
+               setting_update_gl_item_chk_status(list_item, 1);
+               return;
+       }
+
+       s_info.b_searching_network = TRUE;
+       _show_searching_popup();
+
+       SETTING_TRACE_END;
+}
+
+static void _network_main_gl_mouse_u(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+       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);
+       ret_if(!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")) {
+               SETTING_TRACE("ev->output.x:%d, ev->output.y:%d", ev->output.x,
+                               ev->output.y);
+               Evas_Coord x, y, w, h;
+               evas_object_geometry_get(s_info.data_auto_network_item->eo_check,
+                               &x, &y, &w, &h);
+               SETTING_TRACE("x:%d, y:%d, w:%d, h:%d", x, y, w, h);
+               if (x <= ev->output.x
+                               && ev->output.x <= (x + w)
+                               && y <= ev->output.y
+                               && ev->output.y <= (y + h)) {
+                       return;
+               }
+
+               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)
+{
+       SETTING_TRACE_BEGIN;
+       ret_if(!data || !event_info);
+       Evas_Event_Mouse_Down *ev = (Evas_Event_Mouse_Down *)event_info;
+       s_info.point_down.x = ev->output.x;
+       s_info.point_down.y = ev->output.y;
+       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);
+       ret_if(!data_Item);
+       if (!safeStrCmp(data_Item->keyStr,
+                       "IDS_ST_BODY_SELECT_AUTOMATICALLY")) {
+               SETTING_TRACE("ev->output.x:%d, ev->output.y:%d", ev->output.x,
+                               ev->output.y);
+               Evas_Coord x, y, w, h;
+               evas_object_geometry_get(s_info.data_auto_network_item->eo_check,
+                               &x, &y, &w, &h);
+               SETTING_TRACE("x:%d, y:%d, w:%d, h:%d", x, y, w, h);
+               if (x <= ev->output.x
+                               && ev->output.x <= (x + w)
+                               && y <= ev->output.y
+                               && ev->output.y <= (y + h)) {
+                       return;
+               }
+
+               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;
+       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;
+       int y_offset = ev->cur.output.y - s_info.point_down.y;
+       if (x_offset < 0)
+               x_offset = -x_offset;
+       if (y_offset < 0)
+               y_offset = -y_offset;
+       /*SETTING_TRACE("x_offset:%d, y_offset:%d", x_offset, y_offset); */
+       if (x_offset <= MIN_MOVE_DISTANCE && y_offset <= MIN_MOVE_DISTANCE)
+               return;
+
+       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))
+               s_info.sim_selected = 0;
+       else
+               s_info.sim_selected = 1;
+
+       _update_genlist();
+       _fill_network_list();
+
+       SETTING_TRACE_END;
+}
+
+static int _view_create(void *cb)
+{
+       SETTING_TRACE_BEGIN;
+       s_info.ad = (SettingNetwork *)cb;
+
+       Elm_Object_Item *page = setting_create_genlist_and_push_to_naviframe(
+                       "IDS_COM_BODY_NETWORK_OPERATORS",
+                       _("IDS_ST_BUTTON_BACK"), _naviframe_item_pop_cb, NULL,
+                       &s_info.genlist_sel_network, s_info.ad->md.naviframe);
+
+       elm_naviframe_item_style_set(page, "tabbar");
+       setting_network_add_sim_toolbar(s_info.ad, page, _sim_selected_cb);
+
+       /* scroller is a genlist */
+       s_info.chk_sel = elm_radio_add(s_info.genlist_sel_network);
+       elm_radio_state_value_set(s_info.chk_sel, -1);
+       /*retrieve here */
+
+       vconf_get_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, &s_info.sel_net);
+       SETTING_TRACE("s_info.sel_net:%d", s_info.sel_net);
+
+       /*retrieve here */
+       vconf_get_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, &s_info.sel_act);
+       SETTING_TRACE("s_info.sel_act:%d", s_info.sel_act);
+
+       FREE(s_info.sel_network);
+       /*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);
+
+       /* 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);
+
+       setting_view_network_select_network.is_create = TRUE;
+
+       SETTING_TRACE_END;
+       return SETTING_RETURN_SUCCESS;
+}
+
+static int _view_destroy(void *cb)
+{
+       SETTING_TRACE_BEGIN;
+       /* error check */
+
+       evas_object_event_callback_del(s_info.genlist_sel_network, EVAS_CALLBACK_MOUSE_UP, _network_main_gl_mouse_u);
+       evas_object_event_callback_del(s_info.genlist_sel_network, EVAS_CALLBACK_MOUSE_DOWN, _network_main_gl_mouse_down);
+       evas_object_event_callback_del(s_info.genlist_sel_network, EVAS_CALLBACK_MOUSE_MOVE, _network_main_gl_mouse_move);
+
+       if (s_info.ad->timer) {
+               ecore_timer_del(s_info.ad->timer);
+               s_info.ad->timer = NULL;
+       }
+
+       if (s_info.ad->popup) {
+               evas_object_del(s_info.ad->popup);
+               s_info.ad->popup = NULL;
+       }
+
+       /*cancel the searching operation */
+       if (s_info.b_searching_network) {
+               int tapi_ret;
+               tapi_ret = tel_cancel_network_manual_search(s_info.ad->handle[s_info.sim_selected], setting_tapi_cancel_manual_search_cb, NULL);
+               if (tapi_ret != TAPI_API_SUCCESS) {
+                       SETTING_TRACE_ERROR(
+                                       "*** [ERR] tel_cancel_network_manual_search. " "tapi_ret=%d ***",
+                                       tapi_ret);
+               }
+               s_info.b_searching_network = FALSE;
+       }
+
+       /*roolback..*/
+       if (0 != vconf_get_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT,
+                       &s_info.sel_net)) {
+               SETTING_TRACE_ERROR("vconf get failed");
+       }
+
+       if (0 != vconf_get_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT,
+                       &s_info.sel_act)) {
+               SETTING_TRACE_ERROR("vconf get failed");
+       }
+
+       FREE(s_info.sel_network);
+       s_info.sel_network = get_pa_select_network();
+       if (!s_info.sel_network) {
+               s_info.sel_network = strndup(Keystr_UNKNOWN_NETWORK,
+                               strlen(Keystr_UNKNOWN_NETWORK) + 1);
+       }
+
+       /*reset..*/
+       s_info.b_set_manul_network = FALSE;
+
+       /*Following handlers will be used by async listening callback. They
+        * must be reset after genlist is 'popuped'. */
+       s_info.data_auto_network_item = NULL;
+       setting_view_network_select_network.is_create = FALSE;
+
+
+       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;
+}
+
+static Evas_Object *_create_registering_popup(void)
+{
+       SETTING_TRACE_BEGIN;
+
+       Evas_Object *popup = elm_popup_add(s_info.ad->md.window);
+       elm_popup_align_set(popup, ELM_NOTIFY_ALIGN_FILL, 1.0);
+       eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK, _ignore_back_key_cb, NULL);
+
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       Evas_Object *box = elm_box_add(popup);
+
+       elm_box_horizontal_set(box, EINA_TRUE);
+       elm_box_align_set(box, 0.5, 0.5);
+       elm_box_padding_set(box, 16, 0);
+
+       Evas_Object *progressbar = elm_progressbar_add(popup);
+       elm_object_style_set(progressbar, PROGRESSBAR_STYLE);
+       elm_progressbar_pulse(progressbar, EINA_TRUE);
+       evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5);
+       evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_progressbar_pulse(progressbar, EINA_TRUE);
+       evas_object_show(progressbar);
+       elm_box_pack_end(box, progressbar);
+
+       Evas_Object *label = elm_label_add(popup);
+       elm_object_text_set(label, _("IDS_ST_POP_REGISTERING_ING"));
+       evas_object_show(label);
+       elm_box_pack_end(box, label);
+
+       /*evas_object_show(box); */
+       /*elm_object_content_set(popup, box); */
+
+       Evas_Object *table = elm_table_add(popup);
+       evas_object_show(table);
+       elm_table_homogeneous_set(table, EINA_FALSE);
+
+       Evas_Object *rect_up;
+       rect_up = evas_object_rectangle_add(evas_object_evas_get(popup));
+       evas_object_size_hint_min_set(rect_up, ELM_SCALE_SIZE(170), ELM_SCALE_SIZE(34));
+
+       Evas_Object *rect_down;
+       rect_down = evas_object_rectangle_add(evas_object_evas_get(popup));
+       evas_object_size_hint_min_set(rect_down, ELM_SCALE_SIZE(100), ELM_SCALE_SIZE(34));
+
+       elm_table_pack(table, rect_up, 0, 0, 2, 1);/* rect as a padding */
+       elm_table_pack(table, box, 1, 1, 1, 1);
+       elm_table_pack(table, rect_down, 2, 2, 2, 1);/* rect as a padding */
+
+       evas_object_show(box);
+
+       elm_object_content_set(popup, table);
+
+       evas_object_show(popup);
+       SETTING_TRACE_END;
+
+       return popup;
+}
+
+/* ***************************************************
+ *
+ *general func
+ *
+ ***************************************************/
+
+/* ***************************************************
+ *
+ *call back func
+ *
+ ***************************************************/
+
+static Eina_Bool _naviframe_item_pop_cb(void *data, Elm_Object_Item *it)
+{
+       SETTING_TRACE_BEGIN;
+
+       /* If registering.. popup is displaying, Back must be ignored. */
+       if (s_info.network_select_registering_pop) {
+               SETTING_TRACE("registering... popup is displaying. back key ignored");
+               return EINA_TRUE;
+       }
+
+       if (s_info.ad->view_to_load == &setting_view_network_select_network) {
+               ui_app_exit();
+               return EINA_TRUE;
+       }
+       _view_destroy(data);
+
+       SETTING_TRACE_END;
+       return EINA_TRUE;
+}
+
+/*
+ * Cancel for searching network
+ */
+static void _search_network_cancel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+
+       if (s_info.ad->popup) {
+               evas_object_del(s_info.ad->popup);
+               s_info.ad->popup = NULL;
+       }
+       if (s_info.b_searching_network) {
+               SETTING_TRACE("Sending tel_cancel_network_manual_search..");
+               int tapi_ret = tel_cancel_network_manual_search(s_info.ad->handle[s_info.sim_selected], setting_tapi_cancel_manual_search_cb, NULL);
+               if (tapi_ret != TAPI_API_SUCCESS)
+                       SETTING_TRACE_ERROR("*** [ERR] tel_cancel_network_manual_search. " "tapi_ret=%d ***", tapi_ret);
+               else
+                       s_info.b_searching_network = FALSE;
+       }
+
+       /* Restore selection automatically */
+       int sel_net;
+
+       vconf_get_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, &sel_net);
+       SETTING_TRACE("Previous selection after searching network:%d", sel_net);
+       SETTING_TRACE_END;
+}
+
+void _show_registered_popup(void)
+{
+       Evas_Object *popup = elm_popup_add(s_info.ad->md.window);
+       char r_str_text[128] = { 0 };
+
+       elm_popup_align_set(popup, ELM_NOTIFY_ALIGN_FILL, 1.0);
+       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);
+
+       snprintf(r_str_text, 128, "<align=left>");
+       g_strlcat(r_str_text, _("IDS_ST_POP_REGISTERED"), 128);
+       g_strlcat(r_str_text, "</align>", 128);
+
+       elm_object_text_set(popup, r_str_text);
+       elm_popup_timeout_set(popup, 2.0);
+       evas_object_smart_callback_add(popup, "timeout", __back_to_previous_cb, NULL);
+       evas_object_show(popup);
+}
+
+/**
+ * @see also __register_network
+ */
+static void _tapi_set_plmn_mode_cb(TapiHandle *handle, int result, void *data, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       SETTING_TRACE(" - result = 0x%x", result);
+
+       _network_popup_delete();
+
+       if ((TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == s_info.sel_net && !s_info.b_set_manul_network) ||
+                       (TAPI_NETWORK_SELECTIONMODE_MANUAL == s_info.sel_net && !s_info.b_set_manul_network)) {
+               /*The requeset has already been canceled, return directly*/
+               SETTING_TRACE("The requeset has already been canceled, return directly");
+               return;
+       }
+
+       if (result != TAPI_NETWORK_NO_ERR) { /*roolback..*/
+               if (TAPI_NETWORK_SELECTIONMODE_MANUAL == s_info.sel_net && s_info.data_auto_network_item && !s_info.data_auto_network_item->chk_status) {
+                       SETTING_TRACE("Need refreshing");
+                       setting_create_popup(s_info.ad, s_info.ad->md.window, NULL, keyStr_Failed_Select_Network, NULL, 2 * POPUP_INTERVAL, FALSE, FALSE, 0);
+                       elm_radio_value_set(s_info.chk_sel, -2);
+               }
+
+               return;
+       }
+
+       if (0 != vconf_set_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, s_info.sel_net))
+               SETTING_TRACE_ERROR("vconf[%s] set failed");
+
+       if (0 != vconf_set_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, s_info.sel_act))
+               SETTING_TRACE_ERROR("vconf[%s] set failed");
+
+       s_info.b_set_manul_network = FALSE;
+
+       _show_registered_popup();
+
+       tel_get_network_serving(s_info.ad->handle[s_info.sim_selected], _tel_get_selected_network_cb, NULL);
+
+       SETTING_TRACE_END;
+}
+
+static void setting_tapi_cancel_manual_search_cb(TapiHandle *handle, int result, void *data, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       SETTING_TRACE(" - result = 0x%x", result);
+       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";
+       case TAPI_NETWORK_SYSTEM_GSM: /*1 */
+               return "GSM";
+       case TAPI_NETWORK_SYSTEM_GPRS: /*2 */
+               return "GPRS";
+       case TAPI_NETWORK_SYSTEM_EGPRS: /*3 */
+               return "EGPRS";
+       case TAPI_NETWORK_SYSTEM_PCS1900: /*4 */
+               return "PCS1900";
+       case TAPI_NETWORK_SYSTEM_UMTS: /*5 */
+               return "WCDMA";
+       case TAPI_NETWORK_SYSTEM_GSM_AND_UMTS:
+               return "GSM/WCDMA";
+       case TAPI_NETWORK_SYSTEM_HSDPA:
+               return "HSDPA";
+       case TAPI_NETWORK_SYSTEM_IS95A:
+               return "IS95A";
+       case TAPI_NETWORK_SYSTEM_IS95B:
+               return "IS95B";
+       case TAPI_NETWORK_SYSTEM_CDMA_1X:
+               return "CDMA 1X";
+       case TAPI_NETWORK_SYSTEM_EVDO_REV_0:
+               return "EV-DO rev0";
+       case TAPI_NETWORK_SYSTEM_1X_EVDO_REV_0_HYBRID:
+               return "1X and EV-DO rev0";
+       case TAPI_NETWORK_SYSTEM_EVDO_REV_A:
+               return "EV-DO revA";
+       case TAPI_NETWORK_SYSTEM_1X_EVDO_REV_A_HYBRID:
+               return "1X and EV-DO revA";
+       case TAPI_NETWORK_SYSTEM_EVDV:
+               return "EV-DV";
+       case TAPI_NETWORK_SYSTEM_LTE:
+               return "LTE";
+       default:
+               return "NO SERVICE";
+       }
+}
+
+static void __back_to_previous_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+
+       if (obj) {
+               evas_object_del(obj);
+               obj = NULL;
+       }
+
+       /*go back to previous view if set successfully */
+       setting_view_change(&setting_view_network_select_network, &setting_view_network_main, s_info.ad);
+       SETTING_TRACE_END;
+}
+
+static void __selected_network_change_cb(keynode_t *key, void *data)
+{
+       SETTING_TRACE_BEGIN;
+       setting_retm_if(!data, "!data");
+       SettingNetwork *ad = data;
+       char *vconf_name = vconf_keynode_get_name(key);
+
+       if (!safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_NWNAME) ||
+                       !safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_SPN_DISP_CONDITION)
+                       || !safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_SPN_NAME)
+                       || !safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_SVCTYPE)) {
+               s_info.sel_network = get_pa_select_network();
+               if (!s_info.sel_network)
+                       s_info.sel_network = strdup(Keystr_UNKNOWN_NETWORK);
+
+               if (0 != vconf_set_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, s_info.sel_net))
+                       SETTING_TRACE_ERROR("vconf[%s] set failed");
+
+               if (0 != vconf_set_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, s_info.sel_act))
+                       SETTING_TRACE_ERROR("vconf[%s] set failed");
+
+       } else if (!safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_FLIGHT_MODE)) {
+               SETTING_TRACE("vconf_name:%s", vconf_name);
+               setting_create_popup(ad, ad->md.naviframe, NULL,
+                               "IDS_ST_BODY_FLIGHT_MODE_HAS_BEEN_ENABLED_NETWORK_SETTINGS_WILL_CLOSE",
+                               __notify_response_cb,
+                               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 ?' */
+{
+       SETTING_TRACE_BEGIN;
+       SettingNetwork *ad = data;
+       ret_if(!ad);
+       if (obj) {
+               evas_object_del(obj);
+               obj = NULL;
+       }
+
+       ui_app_exit();
+       SETTING_TRACE_END;
+}
+
+static void _tapi_get_plmn_mode_cb(TapiHandle *handle, int result, void *data, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       SETTING_TRACE(" - result = 0x%x", result);
+
+       if (result == TAPI_NETWORK_NO_ERR) {
+               TelNetworkSelectionMode_t sel;
+               memcpy(&sel, data, sizeof(TelNetworkSelectionMode_t));
+               SETTING_TRACE_DEBUG("s_info.sel_net[%d] %s sel[%d]", s_info.sel_net, s_info.sel_net == sel ? "==" : "!=", sel);
+               if (s_info.sel_net != sel) {
+                       s_info.sel_net = sel;
+                       vconf_set_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, s_info.sel_net);
+               }
+       } else {
+       }
+
+       SETTING_TRACE_END;
+}
index 65fb79f65052e3978ff668ac643510c93ef4245c..60a174bafb8d1eb65a52d158a612a165c2c41b8a 100644 (file)
@@ -21,7 +21,7 @@
 #include <setting-network.h>
 #include <setting-debug.h>
 #include <setting-cfg.h>
-#include "setting-network-select-network.h"
+#include "setting-network-service-providers.h"
 #include "setting-network-connection-create.h"
 #include "setting-network-main.h"