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
+++ /dev/null
-/*
- * 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
--- /dev/null
+/*
+ * 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
*/
#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"\
+++ /dev/null
-/*
- * 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, "&", strlen("&"))) {
- temp = temp2 + 1;
- if ('\0' == temp[0])
- break;
-
- temp2 = strchr(temp, '&');
- } else {
- g_strlcat(dst, temp1, temp2 - temp1 + 1);
- g_strlcat(dst, "&", 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;
-}
--- /dev/null
+/*
+ * 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, "&", strlen("&"))) {
+ temp = temp2 + 1;
+ if ('\0' == temp[0])
+ break;
+
+ temp2 = strchr(temp, '&');
+ } else {
+ g_strlcat(dst, temp1, temp2 - temp1 + 1);
+ g_strlcat(dst, "&", 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;
+}
#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"