3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Flora License, Version 1.1 (the License);
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://floralicense.org/license/
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an AS IS BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 #include <setting-network.h>
18 #include <setting-network-preferred-network-delete.h>
19 #include <setting-network-preferred-network.h>
20 #include <setting-debug.h>
23 #define UG_MODULE_API __attribute__ ((visibility("default")))
25 int setting_network_subscribe_tapi_events(void *data);
26 int setting_network_unsubscribe_tapi_events(void *data);
28 static void __selected_network_change_cb(keynode_t *key, void *data)
31 setting_retm_if(!data, "!data");
32 SettingNetworkUG *ad = data;
33 //char *value = vconf_keynode_get_str(key);
34 char *vconf_name = vconf_keynode_get_name(key);
36 if (!safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_NWNAME)
37 || !safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_SPN_DISP_CONDITION)
38 || !safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_SPN_NAME)
39 || !safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_SVCTYPE)
41 //ad->sel_network = strdup(value);
42 ad->sel_network = get_pa_select_network();
43 if (isEmptyStr(ad->sel_network)) {
44 ad->sel_network = strdup(_(Keystr_UNKNOWN_NETWORK));
47 if (0 != vconf_set_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, ad->sel_net)) {
48 SETTING_TRACE_ERROR("vconf[%s] set failed");
51 if (0 != vconf_set_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, ad->sel_act)) {
52 SETTING_TRACE_ERROR("vconf[%s] set failed");
55 setting_network_update_sel_network(ad);
60 static void setting_network_ug_cb_resize(void *data, Evas *e,
61 Evas_Object *obj, void *event_info)
63 SettingNetworkUG *ad = (SettingNetworkUG *) data;
64 setting_view_update(&setting_view_network_main, ad);
68 static void *setting_network_ug_on_create(ui_gadget_h ug,
69 enum ug_mode mode, service_h service,
72 setting_retvm_if((!priv), NULL, "!priv");
74 SettingNetworkUG *networkUG = priv;
77 networkUG->win_main_layout = (Evas_Object *) ug_get_parent_layout(ug);
78 networkUG->win_get = (Evas_Object *) ug_get_window();
79 evas_object_show(networkUG->win_main_layout);
80 networkUG->evas = evas_object_evas_get(networkUG->win_main_layout);
82 setting_retvm_if(networkUG->win_main_layout == NULL, NULL,
83 "cannot get main window ");
89 //pass NULL to let TAPI access default module
90 networkUG->handle = tel_init(NULL);
91 if (!networkUG->handle) {
92 SETTING_TRACE_DEBUG("%s*** [ERR] tel_init. ***%s",
93 SETTING_FONT_RED, SETTING_FONT_BLACK);
97 if (CONNECTION_ERROR_NONE == connection_create(&(networkUG->connection))) {
98 SETTING_TRACE_ERROR("***Failed to connection_create.***");
99 //connection_set_type_changed_cb(connection, test_state_changed_callback, NULL);
100 //connection_set_ip_address_changed_cb(connection, test_ip_changed_callback, NULL);
101 //connection_set_proxy_address_changed_cb(connection, test_proxy_changed_callback, NULL);
104 setting_set_i18n(SETTING_PACKAGE, SETTING_LOCALEDIR);
106 /* register view node table */
107 setting_view_node_table_intialize();
108 setting_view_node_table_register(&setting_view_network_main, NULL);
109 setting_view_node_table_register(&setting_view_network_select_network,
110 &setting_view_network_main);
111 setting_view_node_table_register(&setting_view_network_main_help,
112 &setting_view_network_main);
114 setting_view_node_table_register(&setting_view_network_con, &setting_view_network_main);
115 setting_view_node_table_register(&setting_view_network_connection_create, &setting_view_network_con);
116 setting_view_node_table_register(&setting_view_network_3gcon,
117 &setting_view_network_main);
119 setting_view_node_table_register
120 (&setting_view_network_preferred_network,
121 &setting_view_network_main);
122 setting_view_node_table_register
123 (&setting_view_network_preferred_network_list,
124 &setting_view_network_preferred_network);
125 setting_view_node_table_register
126 (&setting_view_network_preferred_network_new,
127 &setting_view_network_preferred_network);
128 setting_view_node_table_register
129 (&setting_view_network_preferred_network_edit,
130 &setting_view_network_preferred_network);
131 setting_view_node_table_register
132 (&setting_view_network_preferred_network_delete,
133 &setting_view_network_preferred_network);
135 if (tel_get_network_mode(networkUG->handle, setting_tapi_get_band_cb, networkUG) != TAPI_API_SUCCESS) {
136 SETTING_TRACE_ERROR("*** [ERR] tel_get_network_band. ***");
139 if (tel_get_network_selection_mode(networkUG->handle, setting_tapi_get_plmn_mode_cb, networkUG) != TAPI_API_SUCCESS) {
140 SETTING_TRACE_ERROR("*** [ERR] tel_get_network_selection_mode. ***");
143 if (tel_get_network_serving(networkUG->handle, setting_tapi_get_serving_network_cb, networkUG) != TAPI_API_SUCCESS) {
144 SETTING_TRACE_ERROR("*** [ERR] tel_get_network_serving. ***");
147 /* creating a view. */
148 setting_view_node_set_cur_view(&setting_view_network_main);
149 setting_view_create(&setting_view_network_main, (void *)networkUG);
150 evas_object_event_callback_add(networkUG->win_main_layout,
151 EVAS_CALLBACK_RESIZE,
152 setting_network_ug_cb_resize, networkUG);
154 (void)vconf_notify_key_changed(VCONFKEY_TELEPHONY_NWNAME, __selected_network_change_cb, networkUG);
155 (void)vconf_notify_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, __selected_network_change_cb, networkUG);
156 (void)vconf_notify_key_changed(VCONFKEY_TELEPHONY_SPN_NAME, __selected_network_change_cb, networkUG);
157 (void)vconf_notify_key_changed(VCONFKEY_TELEPHONY_SVCTYPE, __selected_network_change_cb, networkUG);
159 networkUG->view_type_string = NULL;
160 service_get_extra_data(service, "viewtype", &(networkUG->view_type_string));
161 if(networkUG->view_type_string) {
162 SETTING_TRACE("viewtype:%s", networkUG->view_type_string);
164 return networkUG->ly_main;
168 static void setting_network_ug_on_start(ui_gadget_h ug, service_h service,
173 static void setting_network_ug_on_pause(ui_gadget_h ug, service_h service,
178 static void setting_network_ug_on_resume(ui_gadget_h ug, service_h service,
183 static void setting_network_ug_on_destroy(ui_gadget_h ug, service_h service,
187 setting_retm_if((!priv), "!priv");
188 SettingNetworkUG *networkUG = priv;
190 (void)vconf_ignore_key_changed(VCONFKEY_TELEPHONY_NWNAME,__selected_network_change_cb);
191 (void)vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, __selected_network_change_cb);
192 (void)vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SPN_NAME, __selected_network_change_cb);
193 (void)vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVCTYPE, __selected_network_change_cb);
195 evas_object_event_callback_del(networkUG->win_main_layout, EVAS_CALLBACK_RESIZE, setting_network_ug_cb_resize); /* fix flash issue for gallery */
198 G_FREE(networkUG->ed_pxy_addr_desc);
199 G_FREE(networkUG->ed_pxy_port_desc);
200 FREE(networkUG->sel_network);
202 ecore_imf_shutdown();
204 /* unregister dnet client */
205 if (networkUG->connection)
207 connection_destroy(networkUG->connection);
208 networkUG->connection = NULL;
211 if (networkUG->handle && tel_deinit(networkUG->handle) != TAPI_API_SUCCESS) {
213 ("%s*** [ERR] setting_network_unsubscribe_tapi_events. ***%s",
214 SETTING_FONT_RED, SETTING_FONT_BLACK);
217 setting_network_popup_delete(networkUG);
218 /* delete the allocated objects. */
219 setting_view_destroy(&setting_view_network_select_network, networkUG);
220 setting_view_destroy(&setting_view_network_main_help, networkUG);
222 setting_view_destroy(&setting_view_network_con, networkUG);
223 setting_view_destroy(&setting_view_network_connection_create,
225 setting_view_destroy(&setting_view_network_3gcon, networkUG);
227 setting_view_destroy(&setting_view_network_preferred_network,
229 setting_view_destroy(&setting_view_network_preferred_network_list,
231 setting_view_destroy(&setting_view_network_preferred_network_new,
233 setting_view_destroy(&setting_view_network_preferred_network_edit,
235 setting_view_destroy(&setting_view_network_preferred_network_delete,
237 setting_view_destroy(&setting_view_network_main, networkUG);
239 if (NULL != ug_get_layout(networkUG->ug)) {
240 evas_object_hide((Evas_Object *) ug_get_layout(networkUG->ug));
241 evas_object_del((Evas_Object *) ug_get_layout(networkUG->ug));
247 static void setting_network_ug_on_message(ui_gadget_h ug, service_h msg,
248 service_h service, void *priv)
252 static void setting_network_ug_on_event(ui_gadget_h ug,
253 enum ug_event event, service_h service,
258 case UG_EVENT_LOW_MEMORY:
260 case UG_EVENT_LOW_BATTERY:
262 case UG_EVENT_LANG_CHANGE:
264 case UG_EVENT_ROTATE_PORTRAIT:
266 case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
268 case UG_EVENT_ROTATE_LANDSCAPE:
270 case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
272 case UG_EVENT_REGION_CHANGE:
279 static void setting_network_ug_on_key_event(ui_gadget_h ug,
280 enum ug_key_event event,
281 service_h service, void *priv)
284 SettingNetworkUG *ad = (SettingNetworkUG *) priv;
287 case UG_KEY_EVENT_END:
289 /* setting_network_popup_delete(ad); */
290 if (elm_naviframe_top_item_get(ad->navi_bar) ==
291 elm_naviframe_bottom_item_get(ad->navi_bar)) {
294 /* elm_naviframe_item_pop(ad->navi_bar); */
295 setting_view_cb_at_endKey(ad);
304 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
307 SettingNetworkUG *networkUG = calloc(1, sizeof(SettingNetworkUG));
308 setting_retvm_if(!networkUG, -1, "Create SettingNetworkUG obj failed");
310 ops->create = setting_network_ug_on_create;
311 ops->start = setting_network_ug_on_start;
312 ops->pause = setting_network_ug_on_pause;
313 ops->resume = setting_network_ug_on_resume;
314 ops->destroy = setting_network_ug_on_destroy;
315 ops->message = setting_network_ug_on_message;
316 ops->event = setting_network_ug_on_event;
317 ops->key_event = setting_network_ug_on_key_event;
318 ops->priv = networkUG;
319 ops->opt = UG_OPT_INDICATOR_ENABLE;
324 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
327 struct SettingNetworkUG *networkUG;
328 setting_retm_if(!ops, "ops == NULL");
330 networkUG = ops->priv;
334 /* ***************************************************
338 ***************************************************/
339 void setting_network_popup_delete(void *data)
343 retm_if(data == NULL,
344 "setting_network_tapi_popup_create Data parameter is NULL");
345 SettingNetworkUG *ad = (SettingNetworkUG *) data;
346 if (ad->network_ug_pop != NULL) {
347 evas_object_del(ad->network_ug_pop);
348 ad->network_ug_pop = NULL;
352 /* ***************************************************
356 ***************************************************/
358 void setting_tapi_set_band_cb(TapiHandle *handle, int result, void *data, void *user_data)
361 SETTING_TRACE(" - result = 0x%x", result);
363 SettingNetworkUG *ad = user_data;
364 ret_if(NULL == ad->data_net_mode);
366 if(ad->network_ug_pop)
368 evas_object_del(ad->network_ug_pop);
369 ad->network_ug_pop = NULL;
373 if (result == TAPI_NETWORK_NO_ERR) {
374 setting_set_int_slp_key(ad->data_net_mode->int_slp_setting_binded,
376 char *sub_des = NULL;
378 switch (ad->net_mode) {
379 case TAPI_NETWORK_MODE_AUTO:
380 case TAPI_NETWORK_MODE_LTE|TAPI_NETWORK_MODE_GSM|TAPI_NETWORK_MODE_WCDMA:
381 sub_des = _(Keystr_NetBrand_Auto);
384 case TAPI_NETWORK_MODE_GSM:
385 sub_des = _(Keystr_NetBrand_GSM);
388 case TAPI_NETWORK_MODE_WCDMA:
389 sub_des = _(Keystr_NetBrand_WCDMA);
391 case TAPI_NETWORK_MODE_LTE|TAPI_NETWORK_MODE_WCDMA:
392 sub_des = _(Keystr_NetBrand_LTE_WCDMA);
394 case TAPI_NETWORK_MODE_GSM|TAPI_NETWORK_MODE_WCDMA:
395 sub_des = _(Keystr_NetBrand_Auto_WCDMA_GSM);
400 if (ad->data_net_mode) {
401 ad->data_net_mode->sub_desc = (char *)g_strdup(sub_des);
402 elm_object_item_data_set(ad->data_net_mode->item, ad->data_net_mode);
403 elm_genlist_item_update(ad->data_net_mode->item);
408 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_FAILED"), NULL, POPUP_INTERVAL, FALSE, FALSE);
410 //get value from vconf
411 setting_get_int_slp_key(ad->data_net_mode->int_slp_setting_binded,
412 &(ad->net_mode), &err);
413 if (ad->data_net_mode->rgd) elm_radio_value_set(ad->data_net_mode->rgd, ad->net_mode);
416 void setting_tapi_get_band_cb(TapiHandle *handle, int result, void *data, void *user_data)
419 SETTING_TRACE(" - result = 0x%x", result);
421 SettingNetworkUG *ad = user_data;
423 if (result == TAPI_NETWORK_NO_ERR) {
425 int temp_net_mode = 0;
426 memcpy(&band, data, sizeof(int));
427 SETTING_TRACE("band:%d", band);
428 temp_net_mode = band;
429 /* ***BEGIN*** Fixed the problem of word twinkle SAMSUNG 2010/7/21 modify */
430 if (temp_net_mode != ad->net_mode) {
431 ad->net_mode = temp_net_mode;
432 const char *sub_desc = NULL;
433 switch (ad->net_mode) {
434 case TAPI_NETWORK_MODE_AUTO:
435 case TAPI_NETWORK_MODE_LTE|TAPI_NETWORK_MODE_GSM|TAPI_NETWORK_MODE_WCDMA:
436 sub_desc = _(Keystr_NetBrand_Auto);
438 case TAPI_NETWORK_MODE_GSM:
439 sub_desc = _(Keystr_NetBrand_GSM);
441 case TAPI_NETWORK_MODE_WCDMA:
442 sub_desc = _(Keystr_NetBrand_WCDMA);
444 case TAPI_NETWORK_MODE_LTE|TAPI_NETWORK_MODE_WCDMA:
445 sub_desc = _(Keystr_NetBrand_LTE_WCDMA);
447 case TAPI_NETWORK_MODE_GSM|TAPI_NETWORK_MODE_WCDMA:
448 sub_desc = _(Keystr_NetBrand_Auto_WCDMA_GSM);
452 if (ad->data_net_mode) {
453 ad->data_net_mode->sub_desc = (char *)g_strdup(sub_desc);
454 elm_object_item_data_set (ad->data_net_mode->item, ad->data_net_mode);
455 elm_genlist_item_update(ad->data_net_mode->item);
458 vconf_set_int(VCONFKEY_SETAPPL_NETWORK_MODE_INT, ad->net_mode);
460 /* ****END**** Fixed the problem of word twinkle SAMSUNG 2010/7/21 modify */
466 void setting_tapi_set_plmn_mode_cb(TapiHandle *handle, int result, void *data, void *user_data)
469 SETTING_TRACE(" - result = 0x%x", result);
471 SettingNetworkUG *ad = user_data;
473 setting_network_popup_delete(ad);
475 if ((TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == ad->sel_net
476 && !ad->b_set_auto_network) ||
477 (TAPI_NETWORK_SELECTIONMODE_MANUAL == ad->sel_net
478 && !ad->b_set_manul_network))
480 /*The requeset has already been canceled, return directly*/
484 if(result != TAPI_NETWORK_NO_ERR) {/*roolback..*/
485 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(keyStr_Failed_Select_Network), NULL, POPUP_INTERVAL, FALSE, FALSE);
487 //rollback sel_act and sel_net in setting_view_network_select_network.destroy()
489 &setting_view_network_select_network,
490 &setting_view_network_main, ad);
496 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(KeyStr_Saved), NULL, POPUP_INTERVAL, FALSE, FALSE);
497 if (0 != vconf_set_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, ad->sel_net)) {
498 SETTING_TRACE_ERROR("vconf[%s] set failed");
500 if (0 != vconf_set_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, ad->sel_act)) {
501 SETTING_TRACE_ERROR("vconf[%s] set failed");
504 ad->b_set_auto_network = FALSE;
505 ad->b_set_manul_network = FALSE;
506 setting_network_update_sel_network(ad);
508 void setting_tapi_get_plmn_mode_cb(TapiHandle *handle, int result, void *data, void *user_data)
511 SETTING_TRACE(" - result = 0x%x", result);
513 SettingNetworkUG *ad = user_data;
515 if (result == TAPI_NETWORK_NO_ERR) {
516 TelNetworkSelectionMode_t sel;
517 memcpy(&sel, data, sizeof(TelNetworkSelectionMode_t));
518 SETTING_TRACE_DEBUG("ad->sel_net[%d] %s sel[%d]", ad->sel_net, ad->sel_net == sel ? "==" : "!=", sel);
519 if (ad->sel_net != sel) {
521 vconf_set_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, ad->sel_net);
522 setting_network_update_sel_network(ad);
528 void setting_tapi_search_network_cb(TapiHandle *handle, int result, void *data, void *user_data)
530 ret_if(!data || !user_data);
531 SettingNetworkUG *ad = user_data;
533 SETTING_TRACE(" - result = %d", result);
534 setting_network_popup_delete(ad);
536 if (!ad->b_searching_network) {
537 /*The requeset has already been canceled, don't do detail process*/
540 //setting_finish_progress_genlist_item(ad->data_selected_network_item);
541 if (ad->data_search_network_item)
543 elm_object_item_del(ad->data_search_network_item->item);
544 ad->data_search_network_item = NULL;
547 ad->b_searching_network = FALSE;
549 if (result == TAPI_NETWORK_NO_ERR) {
551 memcpy(&(ad->plmn_info), data, sizeof(TelNetworkPlmnList_t));
553 Setting_GenGroupItem_Data *item_data = NULL;
555 //const char *pa_net_name = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
556 const char *pa_net_name = get_pa_select_network();
557 SETTING_TRACE("VCONFKEY_TELEPHONY_NWNAME:pa_net_name:%s", pa_net_name);
559 char name[MAX_COMMON_BUFFER_LEN] = {0, };
560 while(cnt < ad->plmn_info.networks_count) {
561 SETTING_TRACE("network name from TAPI[%d]:%s --%s --(%s)", cnt,
562 ad->plmn_info.network_list[cnt].network_name,
563 ad->plmn_info.network_list[cnt].service_provider_name,
564 setting_network_get_act_str(ad->plmn_info.network_list[cnt].access_technology));
566 if (TAPI_FORBIDDEN_PLMN == ad->plmn_info.network_list[cnt].type_of_plmn) {
571 if (TAPI_NETWORK_SELECTIONMODE_MANUAL == ad->sel_net
572 && 0 == safeStrCmp(pa_net_name, ad->plmn_info.network_list[cnt].network_name)
573 && ad->plmn_info.network_list[cnt].access_technology == ad->sel_act)
580 memset(name, 0, MAX_COMMON_BUFFER_LEN);
581 snprintf(name, MAX_COMMON_BUFFER_LEN, "%s (%s)",
582 ad->plmn_info.network_list[cnt].network_name,
583 setting_network_get_act_str(ad->plmn_info.network_list[cnt].access_technology));
585 item_data = setting_create_Gendial_field_1radio(
586 ad->genlist_sel_network,
588 setting_network_Gendial_select_plmn_cb,
592 TAPI_NETWORK_SELECTIONMODE_MANUAL+valid_cnt+1,
594 setting_network_select_network_chk_changed);
595 if (NULL == item_data)
597 SETTING_TRACE_ERROR("Failed to calloc memory");
601 item_data->userdata = ad;
602 if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC != ad->sel_net
603 && 0 == safeStrCmp(pa_net_name, ad->plmn_info.network_list[cnt].network_name)
604 && ad->plmn_info.network_list[cnt].access_technology == ad->sel_act)
606 elm_radio_value_set(ad->chk_sel, item_data->chk_status);//let select nothing
613 SETTING_TRACE("Found %d valid networks in total[%d]", valid_cnt, cnt);
614 //valid_cnt = 0; for test..
616 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(keyStr_Searched), NULL, POPUP_INTERVAL, FALSE, FALSE);
617 } else { //there is no invalid plmn nearby
618 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("There is no network nearby"), NULL, POPUP_INTERVAL, FALSE, FALSE);
621 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(keyStr_Failed_Searched), NULL, POPUP_INTERVAL, FALSE, FALSE);
623 if (0 == valid_cnt && TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == ad->sel_net && ad->data_auto_network_item)
625 ad->data_auto_network_item->chk_status = TRUE;
626 //elm_object_item_data_set(ad->data_auto_network_item->item, ad->data_auto_network_item);
627 //elm_genlist_item_item_class_update(ad->data_auto_network_item->item, &(itc_2text_1icon_6));
628 char *sub_text = setting_customize_text(ad->data_auto_network_item->sub_desc, 0, BLUE_COLOR, NULL);
629 ad->data_auto_network_item->sub_desc = (char *)g_strdup(sub_text);
631 elm_object_item_data_set(ad->data_auto_network_item->item, ad->data_auto_network_item);
632 elm_genlist_item_update( ad->data_auto_network_item->item);
637 void setting_tapi_get_serving_network_cb(TapiHandle *handle, int result, void *data, void *user_data)
640 SETTING_TRACE(" - result = 0x%x", result);
641 ret_if(!user_data || !data);
642 SettingNetworkUG *ad = user_data;
643 TelNetworkServing_t *srv_nt = data;
645 if (result == TAPI_NETWORK_NO_ERR)
647 ad->sel_act = srv_nt->act;
648 vconf_set_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, ad->sel_act);
650 FREE(ad->sel_network);
651 //ad->sel_network = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
652 ad->sel_network = get_pa_select_network();
653 if (isEmptyStr(ad->sel_network)) {
654 ad->sel_network = strndup(Keystr_UNKNOWN_NETWORK, strlen(Keystr_UNKNOWN_NETWORK)+1);
656 setting_network_update_sel_network(ad);
660 //if failed, do nothing..
667 void setting_tapi_cancel_manual_search_cb(TapiHandle *handle, int result, void *data, void *user_data)
670 SETTING_TRACE(" - result = 0x%x", result);
672 //SettingNetworkUG *ad = user_data;
675 void setting_tapi_set_preferred_plmn_cb(TapiHandle *handle, int result, void *data, void *user_data)
678 SETTING_TRACE(" - result = 0x%x", result);
680 SettingNetworkUG *ad = user_data;
681 setting_network_popup_delete(ad);
683 if (result != TAPI_NETWORK_NO_ERR) {
684 switch (ad->op_type) {
685 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE:
687 setting_network_preferred_network_delete_failed(ad);
692 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_ERROR"), NULL, POPUP_INTERVAL, FALSE, FALSE);
697 int tapi_ret = TAPI_API_SUCCESS;
698 switch (ad->op_type) {
699 case SETTING_NETWORK_PREFERRED_NETWORK_NEW:
702 (&setting_view_network_preferred_network_new,
703 &setting_view_network_preferred_network,ad);
705 tel_get_network_preferred_plmn
706 (ad->handle, setting_tapi_get_preferred_plmn_cb, ad);
710 case SETTING_NETWORK_PREFERRED_NETWORK_LIST:
714 (&setting_view_network_preferred_network_list,
715 &setting_view_network_preferred_network,
718 tel_get_network_preferred_plmn
719 (ad->handle, setting_tapi_get_preferred_plmn_cb, ad);
723 case SETTING_NETWORK_PREFERRED_NETWORK_EDIT:
726 (&setting_view_network_preferred_network_edit,
727 &setting_view_network_preferred_network,
730 tel_get_network_preferred_plmn
731 (ad->handle, setting_tapi_get_preferred_plmn_cb, ad);
734 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE:
736 setting_network_preferred_network_delete_ok
743 (" Unknown prederred network type");
751 ("*** [ERR] tel_get_network_preferred_plmn. err=%d ***",
758 void setting_tapi_get_preferred_plmn_cb(TapiHandle *handle, int result, void *data, void *user_data)
761 SETTING_TRACE(" - result = 0x%x", result);
763 SettingNetworkUG *ad = user_data;
765 SETTING_TRACE_DEBUG("Case: TAPI_EVENT_NETWORK_GETPREFFEREDPLMN_CNF");
766 setting_network_popup_delete(ad);
768 if (result == TAPI_NETWORK_NO_ERR) {
769 memcpy(&(ad->pref_list), data,sizeof(TelNetworkPreferredPlmnList_t));
771 SETTING_TRACE("*********** ad->op_type = %d",ad->op_type);
772 SETTING_TRACE("ad->pref_list.NumOfPrefPlmns:%d",ad->pref_list.NumOfPrefPlmns);
773 switch (ad->op_type) {
774 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE:
776 setting_network_preferred_network_delete_draw_network_list(ad);
781 setting_network_preferred_network_refresh_view
783 char info[MAX_DISPLAY_NAME_LEN_ON_UI] = { 0 };
784 if (ad->pref_list.NumOfPrefPlmns > 1) {
785 snprintf(info, sizeof(info), "Get %d preferred networks",
786 ad->pref_list.NumOfPrefPlmns);
788 snprintf(info, sizeof(info), "Get %d preferred network",
789 ad->pref_list.NumOfPrefPlmns);
791 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(info), NULL, POPUP_INTERVAL, FALSE, FALSE);
796 switch (ad->op_type) {
797 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE:
799 setting_network_preferred_network_delete_failed
805 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(keyStr_Failed_Get_PreferNetwork), NULL, POPUP_INTERVAL, FALSE, FALSE);
812 void __register_network(Setting_GenGroupItem_Data* list_item)
815 ret_if(list_item == NULL);
816 SETTING_TRACE("process item [%s]", list_item->keyStr);
817 SettingNetworkUG *ad = list_item->userdata;
820 int tapi_ret = TAPI_API_INVALID_INPUT;
822 //cancel the searching operation
824 if (ad->data_search_network_item)
826 elm_object_item_del(ad->data_search_network_item->item);
827 ad->data_search_network_item = NULL;
830 if (ad->b_searching_network) {
831 SETTING_TRACE("Sending tel_cancel_network_manual_search..");
832 tapi_ret = tel_cancel_network_manual_search(ad->handle, setting_tapi_cancel_manual_search_cb, ad);
833 if (tapi_ret != TAPI_API_SUCCESS) {
834 SETTING_TRACE_ERROR("*** [ERR] tel_cancel_network_manual_search. "\
835 "tapi_ret=%d ***", tapi_ret);
839 ad->b_searching_network = FALSE;
843 if (0 == safeStrCmp(list_item->keyStr, "IDS_COM_BODY_AUTOMATIC")) {
844 ad->sel_net = TAPI_NETWORK_SELECTIONMODE_AUTOMATIC;
845 SETTING_TRACE("Sending tel_select_network_automatic..");
846 tapi_ret = tel_select_network_automatic(ad->handle, setting_tapi_set_plmn_mode_cb, ad);
847 if (tapi_ret != TAPI_API_SUCCESS) {
848 SETTING_TRACE_DEBUG("*** [ERR] tel_select_network_automatic."\
849 " tapi_ret=%d ***",tapi_ret);
851 ad->network_ug_pop = setting_create_popup_without_btn(ad, ad->win_get, NULL,
852 _("IDS_COM_POP_PROCESSING"), NULL,
855 if (ad->data_auto_network_item)
857 //ad->data_auto_network_item->sub_desc = (char *)g_strdup("....");
858 //elm_genlist_item_item_class_update(ad->data_auto_network_item->item, &(itc_2text_1icon_6));
859 char *sub_text = setting_customize_text("....", 0, BLUE_COLOR, NULL);
860 ad->data_auto_network_item->sub_desc = (char *)g_strdup(sub_text);
862 elm_object_item_data_set(ad->data_auto_network_item->item, ad->data_auto_network_item);
863 elm_genlist_item_update( ad->data_auto_network_item->item);
866 ad->b_set_manul_network = FALSE;
867 ad->b_set_auto_network = TRUE;
868 ad->sel_act = -1;//means "Automatic"
871 ad->sel_net = TAPI_NETWORK_SELECTIONMODE_MANUAL;
872 ad->b_set_manul_network = TRUE;
873 ad->b_set_auto_network = FALSE;
876 SETTING_TRACE("ad->plmn_info.networks_count:%d",
877 ad->plmn_info.networks_count);
878 char name[MAX_COMMON_BUFFER_LEN] = {0, };
879 for(; cnt < ad->plmn_info.networks_count; cnt++)
881 SETTING_TRACE("ad->plmn_info.network_list[cnt].network_name:%s",
882 ad->plmn_info.network_list[cnt].network_name);
883 memset(name, 0, MAX_COMMON_BUFFER_LEN);
884 snprintf(name, MAX_COMMON_BUFFER_LEN, "%s (%s)",
885 ad->plmn_info.network_list[cnt].network_name,
886 setting_network_get_act_str(ad->plmn_info.network_list[cnt].access_technology));
888 if(!safeStrCmp(list_item->keyStr, name))
894 SETTING_TRACE_DEBUG("*** [Selected PLMN] name=%s, "\
895 "srv provider=%s, PLMN ID=%s, type=%d, "\
896 "access tech=%d ***",
897 ad->plmn_info.network_list[cnt].network_name,
898 ad->plmn_info.network_list[cnt].service_provider_name,
899 ad->plmn_info.network_list[cnt].plmn,
900 (int)(ad->plmn_info.network_list[cnt].type_of_plmn),
901 (int)(ad->plmn_info.network_list[cnt].access_technology));
903 //ASYNC API - TAPI_EVENT_NETWORK_SELECT_CNF
904 SETTING_TRACE("Sending tel_select_network_manual..");
905 tapi_ret = tel_select_network_manual(ad->handle,
906 ad->plmn_info.network_list[cnt].plmn,
907 ad->plmn_info.network_list[cnt].access_technology,
908 setting_tapi_set_plmn_mode_cb, ad);
909 if(tapi_ret != TAPI_API_SUCCESS)
911 SETTING_TRACE_DEBUG("%s*** [ERR] "\
912 "tel_select_network_manual. "\
913 "tapi_ret=%d ***%s", SETTING_FONT_RED,
914 tapi_ret, SETTING_FONT_BLACK);
915 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_ST_BODY_FAILED_TO_SELECT_NETWORK"), NULL, POPUP_INTERVAL, FALSE, FALSE);
921 ad->network_ug_pop = setting_create_popup_without_btn(ad, ad->win_get, NULL,
922 _("IDS_COM_POP_PROCESSING"), NULL,
924 ad->sel_act = ad->plmn_info.network_list[cnt].access_technology;
925 FREE(ad->sel_network);
926 ad->sel_network = strdup(ad->plmn_info.network_list[cnt].network_name);
932 void __switch_automatic_network(Setting_GenGroupItem_Data *list_item)
935 ret_if(!list_item || !list_item->userdata || !list_item->keyStr);
936 ret_if(0 != safeStrCmp(list_item->keyStr, "IDS_COM_BODY_AUTOMATIC"));
937 SettingNetworkUG *ad = list_item->userdata;
938 SETTING_TRACE("The value of toogle changes to be %d", list_item->chk_status);
939 if (list_item->chk_status) //set automatic
941 Elm_Object_Item *last_item = elm_genlist_last_item_get(ad->genlist_sel_network);
942 SETTING_TRACE("ad->data_auto_network_item->item:%p", ad->data_auto_network_item->item);
944 last_item = elm_genlist_last_item_get(ad->genlist_sel_network);
945 SETTING_TRACE("last_item:%p", last_item);
946 if (last_item == ad->data_auto_network_item->item) {
949 elm_object_item_del(last_item);
952 __register_network(list_item);
956 //__register_network(list_item);
958 int old_pdp_value = 0;
959 int old_roaming_value = 0;
960 setting_get_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA, &old_pdp_value, &err);
961 setting_get_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING, &old_roaming_value, &err);
964 SETTING_TRACE("Disable user packet data");
965 setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA, FALSE, &err);
967 if (old_roaming_value)
969 SETTING_TRACE("Disable data roaming");
970 setting_set_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING, FALSE, &err);
973 #ifdef FUTURE_FEATURE //feature in the future.
974 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(NotifyStr_PDP_OFF), NULL, POPUP_INTERVAL, FALSE, FALSE);
979 tapi_ret = tel_search_network(ad->handle, setting_tapi_search_network_cb, ad); //ASYNC API - TAPI_EVENT_NETWORK_SEARCH_CNF
980 if(tapi_ret != TAPI_API_SUCCESS) { // error handling..
981 SETTING_TRACE_ERROR("%s*** [ERR] tel_search_network. tapi_ret=%d ***%s", SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
982 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(STR_SETTING_OPERATION_FAILED), NULL, POPUP_INTERVAL, FALSE, FALSE);
984 // put error handler on the end of this function.
986 list_item->chk_status = TRUE;
987 elm_check_state_set(list_item->eo_check, list_item->chk_status);
990 ad->b_searching_network = TRUE;
991 ad->data_search_network_item = setting_create_Gendial_field_1radio(
992 ad->genlist_sel_network,
995 SWALLOW_Type_1RADIO_1SEARCH,
996 ad->chk_sel, -1, NULL, NULL);
997 if (ad->data_auto_network_item)
999 //elm_genlist_item_item_class_update(ad->data_auto_network_item->item, &(itc_2text_1icon_7));
1000 char *sub_text = setting_customize_text(ad->data_auto_network_item->sub_desc, 0, GRAY_COLOR, NULL);
1001 ad->data_auto_network_item->sub_desc = (char *)g_strdup(sub_text);
1003 elm_object_item_data_set(ad->data_auto_network_item->item, ad->data_auto_network_item);
1004 elm_genlist_item_update( ad->data_auto_network_item->item);
1009 void setting_network_select_network_chk_changed(void *data, Evas_Object *obj, void *event_info)
1011 SETTING_TRACE_BEGIN;
1012 retm_if(data == NULL || obj == NULL, "Parameter is NULL");
1013 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
1014 if (0 == safeStrCmp(list_item->keyStr, "IDS_COM_BODY_AUTOMATIC"))
1016 list_item->chk_status = elm_check_state_get(obj);
1017 __switch_automatic_network(list_item);
1019 else //"IDS_COM_BODY_AUTOMATIC"
1021 list_item->chk_status = elm_radio_value_get(obj);
1022 SETTING_TRACE("The value of radio changes to be %d", list_item->chk_status);
1023 __register_network(list_item);
1029 void setting_network_Gendial_select_plmn_cb(void *data, Evas_Object *obj, void *event_info)
1031 SETTING_TRACE_BEGIN;
1032 retm_if(data == NULL || event_info == NULL, "Parameter is NULL");
1034 SettingNetworkUG *ad = (SettingNetworkUG*)data;
1035 Elm_Object_Item *item = (Elm_Object_Item*)event_info;
1036 elm_genlist_item_selected_set(item, 0);
1037 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data*)elm_object_item_data_get(item);
1039 SETTING_TRACE("list_item->keyStr:%s", list_item->keyStr);
1040 if (0 == safeStrCmp(list_item->keyStr, "IDS_COM_BODY_AUTOMATIC"))
1042 list_item->chk_status = !elm_check_state_get(list_item->eo_check);
1043 elm_check_state_set(list_item->eo_check, list_item->chk_status);
1044 __switch_automatic_network(list_item);
1049 int old_chk_status = elm_radio_value_get(ad->chk_sel);
1050 if (old_chk_status != list_item->chk_status)
1052 SETTING_TRACE("The value of radio changes to be %d",
1053 list_item->chk_status);
1054 elm_radio_value_set(ad->chk_sel, list_item->chk_status);
1055 __register_network(list_item);
1059 void setting_network_update_sel_network(void *data)
1061 //SETTING_TRACE_BEGIN;
1062 SettingNetworkUG *ad = data;
1063 //SETTING_TRACE("ad->sel_net:%d", ad->sel_net);
1064 //SETTING_TRACE("ad->sel_network:%s", ad->sel_network);
1065 //SETTING_TRACE("sel_act = [%s(%d)]", setting_network_get_act_str(ad->sel_act),ad->sel_act);
1067 if (ad->data_auto_network_item) {
1068 if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == ad->sel_net)
1070 SETTING_TRACE_DEBUG("After set as Automatic, update "\
1071 "ad->data_auto_network_item to be [%s]",
1073 //ad->data_auto_network_item->sub_desc = (char *)g_strdup(_(ad->sel_network));
1074 char *sub_text = setting_customize_text(_(ad->sel_network), 0, BLUE_COLOR, NULL);
1075 ad->data_auto_network_item->sub_desc = (char *)g_strdup(sub_text);
1077 elm_object_item_data_set(ad->data_auto_network_item->item, ad->data_auto_network_item);
1078 elm_genlist_item_update( ad->data_auto_network_item->item);
1083 if (ad->data_sel_net)//it indicates TAPI is not responsed in time
1085 char sel_network_desc[MAX_COMMON_BUFFER_LEN] = { 0, };
1086 if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == ad->sel_net) {
1087 snprintf(sel_network_desc, MAX_COMMON_BUFFER_LEN,
1088 "%s, %s", _("IDS_COM_BODY_AUTOMATIC"), _(ad->sel_network));
1091 snprintf(sel_network_desc, MAX_COMMON_BUFFER_LEN,
1092 "%s, %s (%s)", _("IDS_COM_BODY_MANUAL"), _(ad->sel_network),
1093 setting_network_get_act_str(ad->sel_act));
1096 //SETTING_TRACE("sel_network_desc:%s", sel_network_desc);
1098 G_FREE(ad->data_sel_net->sub_desc);
1099 ad->data_sel_net->sub_desc = (char *)g_strdup(_(sel_network_desc));
1101 elm_object_item_data_set(ad->data_sel_net->item, ad->data_sel_net);
1102 elm_genlist_item_update(ad->data_sel_net->item);
1106 const char *setting_network_get_act_str(TelNetworkSystemType_t type)
1110 case TAPI_NETWORK_SYSTEM_NO_SRV: //0
1111 return "NO SERVICE";
1112 case TAPI_NETWORK_SYSTEM_GSM: //1
1114 case TAPI_NETWORK_SYSTEM_GPRS: //2
1116 case TAPI_NETWORK_SYSTEM_EGPRS: //3
1118 case TAPI_NETWORK_SYSTEM_PCS1900: //4
1120 case TAPI_NETWORK_SYSTEM_UMTS: //5
1122 case TAPI_NETWORK_SYSTEM_GSM_AND_UMTS:
1123 return "GSM and UMTS";
1124 case TAPI_NETWORK_SYSTEM_HSDPA:
1126 case TAPI_NETWORK_SYSTEM_IS95A:
1128 case TAPI_NETWORK_SYSTEM_IS95B:
1130 case TAPI_NETWORK_SYSTEM_CDMA_1X:
1132 case TAPI_NETWORK_SYSTEM_EVDO_REV_0:
1133 return "EV-DO rev0";
1134 case TAPI_NETWORK_SYSTEM_1X_EVDO_REV_0_HYBRID:
1135 return "1X and EV-DO rev0";
1136 case TAPI_NETWORK_SYSTEM_EVDO_REV_A:
1137 return "EV-DO revA";
1138 case TAPI_NETWORK_SYSTEM_1X_EVDO_REV_A_HYBRID:
1139 return "1X and EV-DO revA";
1140 case TAPI_NETWORK_SYSTEM_EVDV:
1143 return "NO SERVICE";
1147 UG_MODULE_API int setting_plugin_reset(service_h service, void *priv)
1149 SETTING_TRACE_BEGIN;
1152 #if SUPPORT_RUN_SYSTEM_COMMAND
1153 ret += excuteCmd(SETTING_POSTINST_FILE, 1, "network");
1155 ret += vconf_set_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, TAPI_NETWORK_SELECTIONMODE_AUTOMATIC);
1156 ret += vconf_set_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, 0);
1157 ret += vconf_set_int(VCONFKEY_SETAPPL_NETWORK_MODE_INT, TAPI_NETWORK_BAND_TYPE_ANY);
1158 ret += vconf_set_bool(VCONFKEY_3G_ENABLE, TRUE);
1159 ret += vconf_set_bool(VCONFKEY_SETAPPL_STATE_DATA_ROAMING_BOOL, TRUE);
1162 TapiHandle *tapi_handle = tel_init(NULL);
1164 SETTING_TRACE_DEBUG("tel_init sucessfull");
1165 //1.tel_select_network_automatic
1166 int tapi_ret = tel_select_network_automatic(tapi_handle, NULL, NULL);
1167 if (tapi_ret != TAPI_API_SUCCESS) {
1169 SETTING_TRACE_ERROR("tel_select_network_automatic. tapi_ret=%d", tapi_ret);
1172 //2.tel_set_network_mode
1173 tapi_ret = tel_set_network_mode(tapi_handle, TAPI_NETWORK_MODE_AUTO,
1175 if (tapi_ret != TAPI_API_SUCCESS) {
1177 SETTING_TRACE_ERROR("tel_set_network_mode. tapi_ret=%d", tapi_ret);
1180 //3.don't need to receive
1181 if (tel_deinit(tapi_handle) == TAPI_API_SUCCESS) {
1182 SETTING_TRACE_DEBUG("tel_deinit sucessfull");
1187 //Reset connections info..
1188 // -> need to cowwork with CSC
1189 //ret += excuteCmd("/usr/bin/dbus-send", 1, NET_CON_RESET_DBUS_PARA);