4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
6 * Contact: MyoungJune Park <mj2004.park@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
21 #include <setting-network.h>
22 #include <setting-network-preferred-network-delete.h>
23 #include <setting-network-preferred-network.h>
24 #include <setting-debug.h>
25 #include <efl_assist.h>
26 #include <setting-cfg.h>
30 #define UG_MODULE_API __attribute__ ((visibility("default")))
34 const char *STR_SETTING_OPERATION_FAILED = "IDS_BT_POP_OPERATION_FAILED";
35 static Evas_Object *__create_registering_popup(void *data);
37 char *__get_profile_name(int conType, void *data)
39 setting_retvm_if(data == NULL, NULL, "data is NULL");
40 SettingNetworkUG *ad = (SettingNetworkUG *) data;
41 char *def_name = NULL;
42 if (CONNECTION_CELLULAR_SERVICE_TYPE_MMS == conType) {
43 connection_profile_iterator_h profile_iter = NULL;
44 connection_profile_h profile_h = NULL;
46 char *profile_id = NULL;
47 char *profile_name = NULL;
49 bool profile_bhidden = false;
50 connection_profile_type_e profile_type = CONNECTION_PROFILE_TYPE_CELLULAR;
51 connection_cellular_service_type_e service_type = CONNECTION_CELLULAR_SERVICE_TYPE_UNKNOWN;
53 int rv = connection_get_profile_iterator(ad->connection, CONNECTION_ITERATOR_TYPE_REGISTERED, &profile_iter);
54 if (rv != CONNECTION_ERROR_NONE) {
55 SETTING_TRACE_ERROR("Fail to get profile iterator [%d]", rv);
60 while (connection_profile_iterator_has_next(profile_iter)) {
61 if (cnt >= MAX_PROFILE_NUM) {
64 if (connection_profile_iterator_next(profile_iter, &profile_h) != CONNECTION_ERROR_NONE) {
65 SETTING_TRACE_ERROR("Fail to get profile handle");
69 if (connection_profile_get_type(profile_h, &profile_type) != CONNECTION_ERROR_NONE) {
70 SETTING_TRACE_ERROR("Fail to get profile type");
73 if (connection_profile_get_cellular_service_type(profile_h, &service_type) != CONNECTION_ERROR_NONE) {
74 SETTING_TRACE_ERROR("Fail to get service type");
78 if (connection_profile_get_name(profile_h, &profile_name) != CONNECTION_ERROR_NONE) {
79 SETTING_TRACE_ERROR("Fail to get profile name");
83 if (connection_profile_is_cellular_hidden(profile_h, &profile_bhidden) != CONNECTION_ERROR_NONE) {
84 SETTING_TRACE_ERROR("Fail to get profile hidden attr (true/false)");
88 if (connection_profile_get_cellular_apn(profile_h, &apn) != CONNECTION_ERROR_NONE) {
89 SETTING_TRACE_ERROR("Fail to get apn");
94 connection_profile_get_id(profile_h, &profile_id);
96 SETTING_TRACE("Record[%d:%s] profile_handle:%s, profile_id:%s, profile_name:%s, profile_type:%d, service_type:%d",
97 cnt, apn, profile_h, profile_id, profile_name, profile_type, service_type);
98 if (CONNECTION_PROFILE_TYPE_CELLULAR != profile_type) {
101 G_FREE(profile_name);
104 if (profile_bhidden == false
105 && CONNECTION_CELLULAR_SERVICE_TYPE_MMS == service_type) { /*unknow, match with ad->con_name */
106 FREE(def_name); /*keep the last one */
107 def_name = strdup(profile_name);
109 SETTING_TRACE("profile hidden attribute : %d ", profile_bhidden);
113 G_FREE(profile_name);
117 return def_name != NULL ? def_name : strdup(KeyStr_No_Profile);
120 connection_profile_h def_profile = NULL;
121 (void)connection_get_default_cellular_service_profile(ad->connection,
122 conType, &def_profile);
123 if (def_profile) connection_profile_get_name(def_profile, &def_name);
125 def_name = def_name != NULL ? def_name : strdup(KeyStr_No_Profile);
129 static void __notify_response_cb(void *data, Evas_Object *obj,
133 setting_retm_if(!data, "!data");
134 SettingNetworkUG *ad = data;
136 evas_object_del(obj);
139 /* Send destroy request */
140 ug_destroy_me(ad->ug);
143 static void __selected_network_change_cb(keynode_t *key, void *data)
145 /*SETTING_TRACE_BEGIN; */
146 setting_retm_if(!data, "!data");
147 SettingNetworkUG *ad = data;
148 char *vconf_name = vconf_keynode_get_name(key);
150 if (!safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_NWNAME)
151 || !safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_SPN_DISP_CONDITION)
152 || !safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_SPN_NAME)
153 || !safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_SVCTYPE)
155 ad->sel_network = get_pa_select_network();
156 if (!ad->sel_network) {
157 ad->sel_network = strdup(Keystr_UNKNOWN_NETWORK);
160 if (0 != vconf_set_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, ad->sel_net)) {
161 SETTING_TRACE_ERROR("vconf[%s] set failed");
164 if (0 != vconf_set_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, ad->sel_act)) {
165 SETTING_TRACE_ERROR("vconf[%s] set failed");
168 setting_network_update_sel_network(ad);
169 } else if (!safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_FLIGHT_MODE)) {
170 SETTING_TRACE("vconf_name:%s", vconf_name);
171 setting_create_popup_without_btn(ad, ad->ly_main, NULL, _("IDS_ST_BODY_FLIGHT_MODE_HAS_BEEN_ENABLED_NETWORK_SETTINGS_WILL_CLOSE"),
172 __notify_response_cb,
173 POPUP_INTERVAL * 2, TRUE, FALSE);
179 static void setting_network_ug_cb_resize(void *data, Evas *e,
180 Evas_Object *obj, void *event_info)
182 SettingNetworkUG *ad = (SettingNetworkUG *) data;
183 setting_view_update(&setting_view_network_main, ad);
186 static setting_view *__get_network_view_to_load(void *data, app_control_h service)
189 setting_retvm_if((!data), NULL, "data is NULL");
190 SettingNetworkUG *networkUG = (SettingNetworkUG *)data;
192 setting_view_node_table_intialize();
194 if (0 == safeStrCmp(networkUG->view_type_string, "netsearch")) {
195 setting_view_node_table_register(&setting_view_network_select_network, NULL);
196 return &setting_view_network_select_network;
199 setting_view_node_table_register(&setting_view_network_main, NULL);
200 setting_view_node_table_register(&setting_view_network_select_network, &setting_view_network_main);
201 setting_view_node_table_register(&setting_view_network_main_help, &setting_view_network_main);
203 setting_view_node_table_register(&setting_view_network_con, &setting_view_network_main);
204 setting_view_node_table_register(&setting_view_network_con_list, &setting_view_network_con);
205 setting_view_node_table_register(&setting_view_network_connection_create, &setting_view_network_con_list);
206 setting_view_node_table_register(&setting_view_network_profile_delete, &setting_view_network_con_list);
207 setting_view_node_table_register(&setting_view_network_3gcon, &setting_view_network_main);
209 setting_view_node_table_register(&setting_view_network_preferred_network, &setting_view_network_main);
210 setting_view_node_table_register(&setting_view_network_preferred_network_list, &setting_view_network_preferred_network);
211 setting_view_node_table_register(&setting_view_network_preferred_network_new, &setting_view_network_preferred_network);
212 setting_view_node_table_register(&setting_view_network_preferred_network_edit, &setting_view_network_preferred_network);
213 setting_view_node_table_register(&setting_view_network_preferred_network_delete, &setting_view_network_preferred_network);
215 return &setting_view_network_main;
221 void ___popup_view_resp_cb(void *data, Evas_Object *obj, void *event_info)
224 retm_if(data == NULL, "Data parameter is NULL");
226 SettingNetworkUG *ad = (SettingNetworkUG *) data;
227 int err = 0; /* error check */
228 int response_type = btn_type(obj);
231 setting_get_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA, &value, &err);
232 setting_retm_if(err != 0, "get vconf failed");
233 SETTING_TRACE("value = %d", value);
234 if (POPUP_RESPONSE_OK == response_type) {
236 setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
237 SETTING_ON_OFF_BTN_ON, &err);
238 setting_retm_if(err != 0, "set vconf failed");
239 setting_update_gl_item_chk_status(ad->data_use_packet, 1);
241 setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
242 SETTING_ON_OFF_BTN_OFF, &err);
243 setting_retm_if(err != 0, "set vconf failed");
245 setting_update_gl_item_chk_status(ad->data_use_packet, 0);
247 /* should set data_roming as same as status of use_packet_data */
248 int data_roaming_value = 0;
249 setting_get_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING, &data_roaming_value, &err);
250 setting_retm_if(err != 0, "get vconf failed");
251 if (data_roaming_value) {
252 setting_set_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING,
253 SETTING_ON_OFF_BTN_OFF, &err);
254 setting_retm_if(err != 0, "set vconf failed");
255 setting_update_gl_item_chk_status(ad->data_roaming, SETTING_ON_OFF_BTN_OFF);
258 } else if (POPUP_RESPONSE_CANCEL == response_type) {
260 setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
262 setting_retm_if(err != 0, "set vconf failed");
263 setting_update_gl_item_chk_status(ad->data_use_packet, value);
267 evas_object_del(ad->popup);
272 evas_object_hide(ad->popup);
273 SETTING_TRACE("ad->ug:%p", ad->ug);
274 ug_destroy_me(ad->ug);
278 static void *___load_popup_view(ui_gadget_h ug,
279 enum ug_mode mode, app_control_h service,
282 SettingNetworkUG *ad = priv;
283 char *viewtype = NULL;
284 app_control_get_extra_data(service, "viewtype", &viewtype);
288 vconftool set -t bool db/setting/3gEnabled "1" -f
289 ug-launcher -n setting-network-efl -d"viewtype,mobile_data"
292 vconftool set -t db/setting/3gEnabled "0" -f
293 ug-launcher -n setting-network-efl -d"viewtype,mobile_data"
295 if (!safeStrCmp(viewtype, "mobile_data")) {
296 int status = SETTING_ON_OFF_BTN_OFF;
298 setting_get_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA, &status, &err);
302 setting_create_popup_with_btn(ad, ad->win_get,
303 _(KeyStr_Network_Turn_Off_Mobile_Data),
304 _(KeyStr_Network_Mobile_Data_Has_Been_Disabled_Msg),
305 ___popup_view_resp_cb,
306 0, 2, keyStr_OK, keyStr_CANCEL);
311 setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
312 SETTING_ON_OFF_BTN_ON, &err);*/
314 setting_create_popup_with_btn(ad, ad->win_get,
315 NULL, _(Data_packet_Popup_desc),
316 ___popup_view_resp_cb,
317 0, 2, _("IDS_ST_SK_YES"), _("IDS_ST_SK_NO"));
327 static void *setting_network_ug_on_create(ui_gadget_h ug,
328 enum ug_mode mode, app_control_h service,
331 setting_retvm_if((!priv), NULL, "!priv");
333 SettingNetworkUG *networkUG = priv;
336 networkUG->win_main_layout = (Evas_Object *) ug_get_parent_layout(ug);
337 networkUG->win_get = (Evas_Object *) ug_get_window();
339 evas_object_show(networkUG->win_main_layout);
340 networkUG->evas = evas_object_evas_get(networkUG->win_main_layout);
342 setting_retvm_if(networkUG->win_main_layout == NULL, NULL,
343 "cannot get main window ");
345 Evas_Object *popup_view = ___load_popup_view(ug, mode, service, priv);
354 /*pass NULL to let TAPI access default module */
355 networkUG->handle = tel_init(NULL);
356 if (!networkUG->handle) {
357 SETTING_TRACE_DEBUG("%s*** [ERR] tel_init. ***%s",
358 SETTING_FONT_RED, SETTING_FONT_BLACK);
361 if (CONNECTION_ERROR_NONE != connection_create(&(networkUG->connection))) {
362 SETTING_TRACE_ERROR("***Failed to connection_create.***");
365 setting_set_i18n(SETTING_PACKAGE, SETTING_LOCALEDIR);
367 networkUG->view_type_string = NULL;
368 app_control_get_extra_data(service, "viewtype", &(networkUG->view_type_string));
369 networkUG->view_to_load = __get_network_view_to_load(networkUG, service);
370 /*SETTING_TRACE("ad->whitelist_doc:%p", networkUG->whitelist_doc); */
371 /*SETTING_TRACE("ad->whitelist_root_node:%p", networkUG->whitelist_root_node); */
373 /*Read information from vconf, need not check whitelist in Settings */
374 /*load_XML(WHITELIST_DIR_PATH, "whiteLists", &(networkUG->whitelist_doc),&(networkUG->whitelist_root_node)); */
376 /*SETTING_TRACE("ad->whitelist_doc:%p", networkUG->whitelist_doc); */
377 /*SETTING_TRACE("ad->whitelist_root_node:%p", networkUG->whitelist_root_node); */
379 /* creating a view. */
380 setting_view_node_set_cur_view(networkUG->view_to_load);
381 /*fix load network ug repeatedly issue */
382 if (networkUG->view_to_load == &setting_view_network_main
383 && networkUG->view_to_load->is_create) {
384 networkUG->view_to_load->is_create = 0;
386 setting_view_create(networkUG->view_to_load, (void *)networkUG);
389 /* register view node table */
391 if (tel_get_network_mode(networkUG->handle, setting_tapi_get_band_cb, networkUG) != TAPI_API_SUCCESS) {
392 SETTING_TRACE_ERROR("*** [ERR] tel_get_network_band. ***");
396 if (tel_get_network_selection_mode(networkUG->handle, setting_tapi_get_plmn_mode_cb, networkUG) != TAPI_API_SUCCESS) {
397 SETTING_TRACE_ERROR("*** [ERR] tel_get_network_selection_mode. ***");
400 if (tel_get_network_serving(networkUG->handle, setting_tapi_get_serving_network_cb, networkUG) != TAPI_API_SUCCESS) {
401 SETTING_TRACE_ERROR("*** [ERR] tel_get_network_serving. ***");
404 evas_object_event_callback_add(networkUG->win_main_layout, EVAS_CALLBACK_RESIZE, setting_network_ug_cb_resize, networkUG);
406 (void)vconf_notify_key_changed(VCONFKEY_TELEPHONY_NWNAME, __selected_network_change_cb, networkUG);
407 (void)vconf_notify_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, __selected_network_change_cb, networkUG);
408 (void)vconf_notify_key_changed(VCONFKEY_TELEPHONY_SPN_NAME, __selected_network_change_cb, networkUG);
409 (void)vconf_notify_key_changed(VCONFKEY_TELEPHONY_SVCTYPE, __selected_network_change_cb, networkUG);
410 (void)vconf_notify_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, __selected_network_change_cb, networkUG);
412 return networkUG->ly_main;
416 static void setting_network_ug_on_start(ui_gadget_h ug, app_control_h service,
419 setting_retm_if((!priv), "!priv");
421 SettingNetworkUG *ad = priv;
422 ad->apn_internet = __get_profile_name(CONNECTION_CELLULAR_SERVICE_TYPE_INTERNET, ad);
423 ad->apn_MMS = __get_profile_name(CONNECTION_CELLULAR_SERVICE_TYPE_MMS, ad);
427 static void setting_network_ug_on_pause(ui_gadget_h ug, app_control_h service,
432 static void setting_network_ug_on_resume(ui_gadget_h ug, app_control_h service,
437 static void setting_network_ug_on_destroy(ui_gadget_h ug, app_control_h service,
441 setting_retm_if((!priv), "!priv");
442 SettingNetworkUG *networkUG = priv;
443 /*unload_XML(&(networkUG->whitelist_doc), &(networkUG->whitelist_root_node)); */
445 (void)vconf_ignore_key_changed(VCONFKEY_TELEPHONY_NWNAME, __selected_network_change_cb);
446 (void)vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, __selected_network_change_cb);
447 (void)vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SPN_NAME, __selected_network_change_cb);
448 (void)vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVCTYPE, __selected_network_change_cb);
449 (void)vconf_ignore_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, __selected_network_change_cb);
451 evas_object_event_callback_del(networkUG->win_main_layout, EVAS_CALLBACK_RESIZE, setting_network_ug_cb_resize); /* fix flash issue for gallery */
454 if (networkUG->view_type_string)
455 FREE(networkUG->view_type_string);
456 G_FREE(networkUG->ed_pxy_addr_desc);
457 G_FREE(networkUG->ed_pxy_port_desc);
458 FREE(networkUG->sel_network);
459 FREE(networkUG->access_name);
460 FREE(networkUG->con_name);
461 FREE(networkUG->apn_internet);
462 FREE(networkUG->apn_MMS);
464 ecore_imf_shutdown();
466 /* unregister dnet client */
467 if (networkUG->connection) {
468 connection_destroy(networkUG->connection);
469 networkUG->connection = NULL;
472 if (networkUG->handle && tel_deinit(networkUG->handle) != TAPI_API_SUCCESS) {
474 ("%s*** [ERR] setting_network_unsubscribe_tapi_events. ***%s",
475 SETTING_FONT_RED, SETTING_FONT_BLACK);
477 if (networkUG->profile_list != NULL) {
478 eina_list_free(networkUG->profile_list);
479 networkUG->profile_list = NULL;
482 setting_network_popup_delete(networkUG);
483 /* delete the allocated objects. */
484 setting_view_destroy(&setting_view_network_select_network, networkUG);
485 setting_view_destroy(&setting_view_network_main_help, networkUG);
487 setting_view_destroy(&setting_view_network_con, networkUG);
488 setting_view_destroy(&setting_view_network_con_list, networkUG);
489 setting_view_destroy(&setting_view_network_connection_create,
491 setting_view_destroy(&setting_view_network_profile_delete,
493 setting_view_destroy(&setting_view_network_3gcon, networkUG);
495 setting_view_destroy(&setting_view_network_preferred_network, networkUG);
496 setting_view_destroy(&setting_view_network_preferred_network_list, networkUG);
497 setting_view_destroy(&setting_view_network_preferred_network_new, networkUG);
498 setting_view_destroy(&setting_view_network_preferred_network_edit, networkUG);
499 setting_view_destroy(&setting_view_network_preferred_network_delete, networkUG);
500 setting_view_destroy(&setting_view_network_main, networkUG);
502 if (NULL != ug_get_layout(networkUG->ug)) {
503 evas_object_hide((Evas_Object *) ug_get_layout(networkUG->ug));
504 evas_object_del((Evas_Object *) ug_get_layout(networkUG->ug));
510 static void setting_network_ug_on_message(ui_gadget_h ug, app_control_h msg,
511 app_control_h service, void *priv)
515 static void __update_mobile_data_on_popup(void *data)
518 setting_retm_if(NULL == data, "data is NULL");
519 SettingNetworkUG *ad = (SettingNetworkUG *) data;
520 ret_if(NULL == ad->popup_data_on);
522 elm_object_text_set(ad->popup_data_on, _(Data_packet_Popup_desc));
525 static void __update_mobile_data_off_popup(void *data)
528 setting_retm_if(NULL == data, "data is NULL");
529 SettingNetworkUG *ad = (SettingNetworkUG *) data;
530 ret_if(NULL == ad->popup_data_off);
532 char *pop_info = NULL;
533 char *pop_title = NULL;
535 pop_info = (char *)g_strdup(_(KeyStr_Network_Mobile_Data_Has_Been_Disabled_Msg));
536 pop_title = (char *)g_strdup(_(KeyStr_Network_Turn_Off_Mobile_Data));
538 elm_object_text_set(ad->popup_data_off, _(pop_info));
541 elm_object_part_text_set(ad->popup_data_off, "title,text", _(pop_title));
546 static void setting_network_ug_on_event(ui_gadget_h ug,
547 enum ug_event event, app_control_h service,
551 SettingNetworkUG *ad = (SettingNetworkUG *) priv;
554 case UG_EVENT_LOW_MEMORY:
556 case UG_EVENT_LOW_BATTERY:
558 case UG_EVENT_LANG_CHANGE:
559 if (ad->genlist && setting_view_network_main.is_create) {
561 elm_genlist_realized_items_update(ad->genlist);
562 Elm_Object_Item *item = NULL;
563 Setting_GenGroupItem_Data *item_data = NULL;
564 if (ad->data_use_packet) {
565 item = elm_genlist_item_next_get(ad->data_use_packet->item);
567 item = elm_genlist_item_next_get(item);
570 item_data = (Setting_GenGroupItem_Data *)elm_object_item_data_get(item);
574 const char *title = Data_packet_Sub_desc;
575 item_data->keyStr = strdup(title);
576 elm_object_item_data_set(item_data->item, item_data);
577 elm_genlist_item_update(item_data->item);
581 if (ad->handle && tel_get_network_mode(ad->handle, setting_tapi_get_band_cb, ad) != TAPI_API_SUCCESS) {
582 SETTING_TRACE_ERROR("*** [ERR] tel_get_network_band. ***");
584 setting_network_update_sel_network(ad);
587 Elm_Object_Item *navi_it = elm_naviframe_bottom_item_get(ad->navi_bar);
589 elm_object_item_text_set(navi_it, _("IDS_ST_BODY_NETWORK"));
591 __update_mobile_data_on_popup(ad);
592 __update_mobile_data_off_popup(ad);
595 case UG_EVENT_ROTATE_PORTRAIT:
597 case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
599 case UG_EVENT_ROTATE_LANDSCAPE:
601 case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
603 case UG_EVENT_REGION_CHANGE:
610 static void setting_network_ug_on_key_event(ui_gadget_h ug,
611 enum ug_key_event event,
612 app_control_h service, void *priv)
615 SettingNetworkUG *ad = (SettingNetworkUG *) priv;
618 case UG_KEY_EVENT_END: {
619 /* setting_network_popup_delete(ad); */
620 if (elm_naviframe_top_item_get(ad->navi_bar) ==
621 elm_naviframe_bottom_item_get(ad->navi_bar)) {
624 /* elm_naviframe_item_pop(ad->navi_bar); */
625 setting_view_cb_at_endKey(ad);
634 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
637 SettingNetworkUG *networkUG = calloc(1, sizeof(SettingNetworkUG));
638 setting_retvm_if(!networkUG, -1, "Create SettingNetworkUG obj failed");
640 #if SUPPORT_TETHERING
641 networkUG->th_main = NULL;
642 networkUG->th_connections = NULL;
643 networkUG->th_conlists = NULL;
644 networkUG->th_concreate = NULL;
647 ops->create = setting_network_ug_on_create;
648 ops->start = setting_network_ug_on_start;
649 ops->pause = setting_network_ug_on_pause;
650 ops->resume = setting_network_ug_on_resume;
651 ops->destroy = setting_network_ug_on_destroy;
652 ops->message = setting_network_ug_on_message;
653 ops->event = setting_network_ug_on_event;
654 ops->key_event = setting_network_ug_on_key_event;
655 ops->priv = networkUG;
656 ops->opt = UG_OPT_INDICATOR_ENABLE;
661 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
664 struct SettingNetworkUG *networkUG;
665 setting_retm_if(!ops, "ops == NULL");
667 networkUG = ops->priv;
671 /* ***************************************************
675 ***************************************************/
676 void setting_network_popup_delete(void *data)
680 retm_if(data == NULL,
681 "setting_network_tapi_popup_create Data parameter is NULL");
682 SettingNetworkUG *ad = (SettingNetworkUG *) data;
683 if (ad->network_select_registering_pop != NULL) {
684 evas_object_del(ad->network_select_registering_pop);
685 ad->network_select_registering_pop = NULL;
687 if (ad->network_ug_pop != NULL) {
688 evas_object_del(ad->network_ug_pop);
689 ad->network_ug_pop = NULL;
691 if (ad->popup != NULL) {
692 evas_object_del(ad->popup);
697 /* ***************************************************
701 ***************************************************/
704 * @see also setting_tapi_set_band_cb
705 * @see also tel_get_network_mode
707 void setting_tapi_get_band_cb(TapiHandle *handle, int result, void *data, void *user_data)
710 SETTING_TRACE(" - result = 0x%x", result);
712 SettingNetworkUG *ad = user_data;
714 if (ad->network_ug_pop) {
715 evas_object_del(ad->network_ug_pop);
716 ad->network_ug_pop = NULL;
719 if (result == TAPI_NETWORK_NO_ERR) {
721 int temp_net_mode = 0;
722 memcpy(&band, data, sizeof(int));
724 SETTING_TRACE("tel_get_network_mode() callback received, band=%d", band);
726 temp_net_mode = band;
728 /* ***BEGIN*** Fixed the problem of word twinkle SAMSUNG 2010/7/21 modify */
729 ad->net_mode = temp_net_mode;
731 const char *sub_desc = NULL;
733 char *szCscFeatureValue = "all_numeric";
735 switch (ad->net_mode) {
736 case TAPI_NETWORK_MODE_AUTO:
737 case TAPI_NETWORK_MODE_LTE|TAPI_NETWORK_MODE_WCDMA|TAPI_NETWORK_MODE_GSM:
738 if (is_lte_on_feature(ad)) {
739 if (strcmp(szCscFeatureValue, "all_numeric") == 0)
740 sub_desc = _("IDS_ST_OPT_4G_3G_2G_HAUTO_CONNECT");
742 sub_desc = _("IDS_ST_OPT_LTE_WCDMA_GSM_HAUTO_CONNECT");
745 case TAPI_NETWORK_MODE_WCDMA|TAPI_NETWORK_MODE_GSM:
746 if (strcmp(szCscFeatureValue, "all_numeric") == 0)
747 sub_desc = _("IDS_ST_OPT_3G_2G_HAUTO_CONNECT");
749 sub_desc = _("IDS_ST_OPT_WCDMA_GSM_HAUTO_CONNECT");
751 case TAPI_NETWORK_MODE_WCDMA:
752 if (strcmp(szCscFeatureValue, "all_numeric") == 0)
753 sub_desc = _("IDS_ST_BODY_3G_ONLY");
755 sub_desc = _("IDS_ST_MBODY_WCDMA_ONLY");
757 case TAPI_NETWORK_MODE_GSM:
758 if (strcmp(szCscFeatureValue, "all_numeric") == 0)
759 sub_desc = _("IDS_ST_OPT_2G_ONLY");
761 sub_desc = _("IDS_ST_MBODY_GSM_ONLY");
764 case TAPI_NETWORK_MODE_LTE|TAPI_NETWORK_MODE_WCDMA:
765 sub_desc = _(Keystr_NetBrand_LTE_WCDMA);
771 if (ad->data_net_mode) {
772 ad->data_net_mode->sub_desc = (char *)g_strdup(sub_desc);
773 elm_object_item_data_set(ad->data_net_mode->item, ad->data_net_mode);
774 elm_genlist_item_update(ad->data_net_mode->item);
775 elm_genlist_item_expanded_set(ad->data_net_mode->item, FALSE);
778 vconf_set_int(VCONFKEY_SETAPPL_NETWORK_MODE_INT, ad->net_mode);
780 /* ****END**** Fixed the problem of word twinkle SAMSUNG 2010/7/21 modify */
782 SETTING_TRACE("tel_get_network_mode() callback error(%d)", result);
787 * @see also tel_set_network_mode : registers this callback function
789 void setting_tapi_set_band_cb(TapiHandle *handle, int result, void *data, void *user_data)
792 SETTING_TRACE(" - result = 0x%x , %d", result, result);
794 SettingNetworkUG *ad = user_data;
795 ret_if(NULL == ad->data_net_mode);
796 if (ad->network_ug_pop) {
797 evas_object_del(ad->network_ug_pop);
798 ad->network_ug_pop = NULL;
801 if (tel_get_network_mode(ad->handle, setting_tapi_get_band_cb, ad) != TAPI_API_SUCCESS) {
802 SETTING_TRACE_ERROR("*** [ERR] tel_get_network_band. ***");
806 void __back_to_previous_cb(void *data, Evas_Object *obj, void *event_info)
809 retm_if(data == NULL, "Data parameter is NULL");
810 SettingNetworkUG *ad = (SettingNetworkUG *) data;
813 evas_object_del(obj);
817 /*go back to previous view if set successfully */
819 &setting_view_network_select_network,
820 &setting_view_network_main, ad);
824 * @see also __register_network
826 void setting_tapi_set_plmn_mode_cb(TapiHandle *handle, int result, void *data, void *user_data)
829 SETTING_TRACE(" - result = 0x%x", result);
831 SettingNetworkUG *ad = user_data;
833 setting_network_popup_delete(ad);
835 if ((TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == ad->sel_net
836 && !ad->b_set_auto_network) ||
837 (TAPI_NETWORK_SELECTIONMODE_MANUAL == ad->sel_net
838 && !ad->b_set_manul_network)) {
839 /*The requeset has already been canceled, return directly*/
840 SETTING_TRACE("The requeset has already been canceled, return directly");
844 if (result != TAPI_NETWORK_NO_ERR) { /*roolback..*/
845 if (TAPI_NETWORK_SELECTIONMODE_MANUAL == ad->sel_net
846 && ad->data_auto_network_item && !ad->data_auto_network_item->chk_status) {
847 SETTING_TRACE("Need refreshing");
848 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(keyStr_Failed_Select_Network), NULL, 2 * POPUP_INTERVAL, FALSE, FALSE);
850 /*for issue P130920-01974, do not re-search network if failed */
853 tapi_ret = tel_search_network(ad->handle, setting_tapi_search_network_cb, ad); /*ASYNC API - TAPI_EVENT_NETWORK_SEARCH_CNF */
854 if (tapi_ret != TAPI_API_SUCCESS) { /* error handling.. */
855 SETTING_TRACE_DEBUG("%s*** [ERR] tel_search_network. tapi_ret=%d ***%s", SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
856 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(STR_SETTING_OPERATION_FAILED), NULL, POPUP_INTERVAL, FALSE, FALSE);
857 /* put error handler on the end of this function. */
860 ad->b_searching_network = TRUE;
862 Elm_Object_Item *item = elm_genlist_last_item_get(ad->genlist_sel_network);
863 Setting_GenGroupItem_Data *data_item = NULL;
865 data_item = elm_object_item_data_get(item);
866 if (data_item && 0 == safeStrCmp(data_item->keyStr, "IDS_ST_BODY_SELECT_AUTOMATICALLY")) {
870 elm_object_item_del(item);
872 item = elm_genlist_last_item_get(ad->genlist_sel_network);
874 /*no service case: */
875 ad->data_search_network_item = setting_create_Gendial_field_1radio(
876 ad->genlist_sel_network,
879 SWALLOW_Type_1RADIO_1SEARCH,
880 ad->chk_sel, -1, NULL, NULL);
881 __BACK_POINTER_SET(ad->data_search_network_item);
882 elm_genlist_item_select_mode_set(ad->data_search_network_item->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
883 setting_genlist_item_groupstyle_set(ad->data_search_network_item, SETTING_GROUP_STYLE_BOTTOM);
885 elm_radio_value_set(ad->chk_sel, -2);
887 /*setting_create_popup_without_btn(ad, ad->win_get, NULL, _("Network selection failed"), NULL, 2*POPUP_INTERVAL, FALSE, FALSE); */
890 /*rollback sel_act and sel_net in setting_view_network_select_network.destroy() */
891 if (ad->handle) tel_get_network_selection_mode(ad->handle, setting_tapi_get_plmn_mode_cb, ad);
894 &setting_view_network_select_network,
895 &setting_view_network_main, ad);*/
901 if (0 != vconf_set_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, ad->sel_net)) {
902 SETTING_TRACE_ERROR("vconf[%s] set failed");
904 if (0 != vconf_set_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, ad->sel_act)) {
905 SETTING_TRACE_ERROR("vconf[%s] set failed");
908 ad->b_set_auto_network = FALSE;
909 ad->b_set_manul_network = FALSE;
910 setting_network_update_sel_network(ad);
912 Evas_Object *popup = elm_popup_add(ad->win_get);
913 ea_object_event_callback_add(popup, EA_CALLBACK_BACK, ea_popup_back_cb, NULL);
914 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
916 char r_str_text[128] = { 0, };
917 snprintf(r_str_text, 128, "<align=left>");
918 g_strlcat(r_str_text, _("IDS_ST_POP_REGISTERED"), 128);
919 g_strlcat(r_str_text, "</align>", 128);
920 elm_object_text_set(popup, r_str_text);
921 elm_popup_timeout_set(popup, 2.0);
922 evas_object_smart_callback_add(popup, "timeout", __back_to_previous_cb, ad);
923 evas_object_show(popup);
926 void setting_tapi_get_plmn_mode_cb(TapiHandle *handle, int result, void *data, void *user_data)
929 SETTING_TRACE(" - result = 0x%x", result);
931 SettingNetworkUG *ad = user_data;
933 if (result == TAPI_NETWORK_NO_ERR) {
934 TelNetworkSelectionMode_t sel;
935 memcpy(&sel, data, sizeof(TelNetworkSelectionMode_t));
936 SETTING_TRACE_DEBUG("ad->sel_net[%d] %s sel[%d]", ad->sel_net, ad->sel_net == sel ? "==" : "!=", sel);
937 if (ad->sel_net != sel) {
939 vconf_set_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, ad->sel_net);
940 setting_network_update_sel_network(ad);
946 #define DOCOMO_PLMN_ID "44010"
950 void ___sort_merge_handle(void *usrdata, TelNetworkPlmnList_t *list)
953 SettingNetworkUG *ad = usrdata;
955 ad->plmn_info.networks_count = list->networks_count;
956 SETTING_TRACE("list->networks_count:%d", list->networks_count);
958 for (idx = 0; idx < list->networks_count; idx++) {
959 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,
960 list->network_list[idx].service_provider_name,
961 list->network_list[idx].plmn, list->network_list[idx].plmn_id,
962 list->network_list[idx].type_of_plmn,
963 list->network_list[idx].access_technology);
965 SETTING_TRACE("*****************************************************");
968 bool alread_exist = FALSE;
969 for (idx = 0; idx < list->networks_count; idx++) {
970 alread_exist = FALSE;
971 for (j = 0; j < cnt; j++) {
972 if (0 == safeStrCmp(ad->plmn_info.network_list[j].network_name, list->network_list[idx].network_name)
973 || 0 == safeStrCmp(ad->plmn_info.network_list[j].plmn, list->network_list[idx].plmn)) {
981 memcpy(&(ad->plmn_info.network_list[cnt++]), &(list->network_list[idx]), sizeof(TelNetworkIdentity_t));
984 SETTING_TRACE("cnt:%d, list->networks_count=%d", cnt, list->networks_count);
985 SETTING_TRACE("*****************************************************");
986 SETTING_TRACE("After Sorted:");
987 ad->plmn_info.networks_count = list->networks_count = cnt;
988 for (idx = 0; idx < list->networks_count; idx++) {
989 SETTING_TRACE("[%d]:network_name=%s,plmn=%s,plmn_id=%d,access_technology=%d", idx,
990 ad->plmn_info.network_list[idx].network_name, ad->plmn_info.network_list[idx].plmn, ad->plmn_info.network_list[idx].plmn_id, ad->plmn_info.network_list[idx].access_technology);
994 /*special process for char '&', such as AT&T */
995 void __process_special_char(char *dst, const char *src)
997 char *temp1 = (char *)src;
998 char *temp2 = strchr(temp1, '&');
1001 while (NULL != temp2) {
1002 if (0 == safeStrNCmp(temp2, "&", strlen("&"))) {
1004 if ('\0' == temp[0]) {
1007 temp2 = strchr(temp, '&');
1009 g_strlcat(dst, temp1, temp2 - temp1 + 1);
1010 g_strlcat(dst, "&", MAX_SPECIALIZITION_LEN);
1012 if ('\0' == temp1[0]) {
1015 temp2 = strchr(temp1, '&');
1018 if ('\0' != temp1[0]) {
1019 g_strlcat(dst, temp1, MAX_SPECIALIZITION_LEN);
1024 * async api call - searching network list
1026 * @see also tel_search_network
1028 void setting_tapi_search_network_cb(TapiHandle *handle, int result, void *data, void *user_data)
1030 ret_if(!data || !user_data);
1031 SettingNetworkUG *ad = user_data;
1032 SETTING_TRACE_BEGIN;
1033 SETTING_TRACE(" - result = %d", result);
1034 setting_network_popup_delete(ad);
1036 if (!ad->b_searching_network) {
1037 /*The requeset has already been canceled, don't do detail process*/
1041 if (ad->data_search_network_item) {
1043 elm_object_item_del(ad->data_search_network_item->item);
1044 ad->data_search_network_item = NULL;
1047 #if 0 /*do when exit the searching view to avid this case:failed switch selected network when use packet data on */
1049 if (ad->b_restore_3g_status) {
1050 /*changing of USE_PACKET_DATA was trigged by betwork searching */
1051 ad->b_trigged_by_searching = TRUE;
1053 ad->b_restore_3g_status = FALSE;/* reset for next time */
1054 setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
1055 SETTING_ON_OFF_BTN_ON, &err);
1056 setting_update_gl_item_chk_status(ad->data_use_packet, 1);
1059 /* should set data_roming as same as status of use_packet_data */
1060 if (ad->b_restore_roaming_status) {
1061 ad->b_restore_roaming_status = FALSE;/* reset for next time */
1062 setting_set_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING,
1063 SETTING_ON_OFF_BTN_ON, &err);
1064 setting_update_gl_item_chk_status(ad->data_roaming, 1);
1068 ad->b_searching_network = FALSE;
1070 if (result == TAPI_NETWORK_NO_ERR) {
1072 #if 0 /*for connstructing test data */
1073 TelNetworkPlmnList_t tl;
1074 tl.networks_count = 9;
1076 safeCopyStr(tl.network_list[i].network_name, "AAA", TAPI_NETWORK_NAME_LEN_MAX);
1077 safeCopyStr(tl.network_list[i].plmn, "112", 3);
1078 tl.network_list[i++].access_technology = TAPI_NETWORK_SYSTEM_GSM;
1080 safeCopyStr(tl.network_list[i].network_name, "BBB", TAPI_NETWORK_NAME_LEN_MAX);
1081 safeCopyStr(tl.network_list[i].plmn, "113", 3);
1082 tl.network_list[i++].access_technology = TAPI_NETWORK_SYSTEM_LTE;
1084 safeCopyStr(tl.network_list[i].network_name, "AT&T", TAPI_NETWORK_NAME_LEN_MAX);
1085 safeCopyStr(tl.network_list[i].plmn, "117", 3);
1086 tl.network_list[i++].access_technology = TAPI_NETWORK_SYSTEM_UMTS;
1088 safeCopyStr(tl.network_list[i].network_name, "DDD", TAPI_NETWORK_NAME_LEN_MAX);
1089 safeCopyStr(tl.network_list[i].plmn, "113", 3);
1090 tl.network_list[i++].access_technology = TAPI_NETWORK_SYSTEM_LTE;
1092 safeCopyStr(tl.network_list[i].network_name, "EEE", TAPI_NETWORK_NAME_LEN_MAX);
1093 safeCopyStr(tl.network_list[i].plmn, "118", 3);
1094 tl.network_list[i++].access_technology = TAPI_NETWORK_SYSTEM_GSM;
1096 safeCopyStr(tl.network_list[i].network_name, "FFF", TAPI_NETWORK_NAME_LEN_MAX);
1097 safeCopyStr(tl.network_list[i].plmn, "110", 3);
1098 tl.network_list[i++].access_technology = TAPI_NETWORK_SYSTEM_LTE;
1100 safeCopyStr(tl.network_list[i].network_name, "NTT DOCOMO", TAPI_NETWORK_NAME_LEN_MAX);
1101 /*tl.network_list[i].plmn_id = DOCOMO_PLMN_ID; */
1102 safeCopyStr(tl.network_list[i].plmn, DOCOMO_PLMN_ID, sizeof(DOCOMO_PLMN_ID));
1103 tl.network_list[i++].access_technology = TAPI_NETWORK_SYSTEM_UMTS;
1105 safeCopyStr(tl.network_list[i].network_name, "NTT DOCOMO", TAPI_NETWORK_NAME_LEN_MAX);
1106 /*tl.network_list[i].plmn_id = DOCOMO_PLMN_ID; */
1107 safeCopyStr(tl.network_list[i].plmn, DOCOMO_PLMN_ID, sizeof(DOCOMO_PLMN_ID));
1108 tl.network_list[i++].access_technology = TAPI_NETWORK_SYSTEM_HSDPA;
1110 safeCopyStr(tl.network_list[i].network_name, "NTT DOCOMO", TAPI_NETWORK_NAME_LEN_MAX);
1111 /*tl.network_list[i].plmn_id = DOCOMO_PLMN_ID; */
1112 safeCopyStr(tl.network_list[i].plmn, DOCOMO_PLMN_ID, sizeof(DOCOMO_PLMN_ID));
1113 tl.network_list[i++].access_technology = TAPI_NETWORK_SYSTEM_LTE;
1114 ___sort_merge_handle(ad, &tl);
1116 ___sort_merge_handle(ad, data);
1119 Setting_GenGroupItem_Data *item_data = NULL;
1121 const char *pa_net_name = get_pa_select_network();
1122 char *cur_plmn = NULL;
1123 tel_get_property_string(ad->handle, TAPI_PROP_NETWORK_PLMN, &cur_plmn);
1124 SETTING_TRACE("VCONFKEY_TELEPHONY_NWNAME:pa_net_name:%s", pa_net_name);
1125 SETTING_TRACE("cur_plmn:%s", cur_plmn);
1127 char name[MAX_COMMON_BUFFER_LEN] = {0, };
1128 while (cnt < ad->plmn_info.networks_count) {
1129 SETTING_TRACE("network name from TAPI[%d]:%s --%s --(plmn=%s,plmn_id=%d,at=%s)", cnt,
1130 ad->plmn_info.network_list[cnt].network_name,
1131 ad->plmn_info.network_list[cnt].service_provider_name,
1132 ad->plmn_info.network_list[cnt].plmn,
1133 ad->plmn_info.network_list[cnt].plmn_id,
1134 setting_network_get_act_str(ad->plmn_info.network_list[cnt].access_technology));
1136 if (TAPI_FORBIDDEN_PLMN == ad->plmn_info.network_list[cnt].type_of_plmn) {
1142 /* Because of displaying selected PLMN.
1143 if (TAPI_NETWORK_SELECTIONMODE_MANUAL == ad->sel_net
1144 && 0 == safeStrCmp(pa_net_name, ad->plmn_info.network_list[cnt].network_name)
1146 //already displayed.
1152 if (isSpaceStr(ad->plmn_info.network_list[cnt].network_name)) {
1153 /*skip empty string. */
1158 memset(name, 0, MAX_COMMON_BUFFER_LEN);
1159 /* Because of displaying selected PLMN.
1160 if (TAPI_NETWORK_SELECTIONMODE_MANUAL == ad->sel_net
1161 && 0 == safeStrCmp(cur_plmn, ad->plmn_info.network_list[cnt].plmn)
1162 && 0 != safeStrCmp(_(pa_net_name), "Emergency calls only")
1163 && 0 != safeStrCmp(_(pa_net_name), _("IDS_CALL_POP_CALLING_EMERG_ONLY"))
1164 && 0 != safeStrCmp(_(pa_net_name), "No service")
1165 && 0 != safeStrCmp(_(pa_net_name), "EMERGENCY")
1168 //cur plmn has the filter function only when it is in Manual Mode and its current network is avaliable(not "No service" ot "Emergency calls only")
1169 //already displayed.
1175 snprintf(name, MAX_COMMON_BUFFER_LEN, "%s",
1176 ad->plmn_info.network_list[cnt].network_name);
1177 /*SETTING_TRACE("name:%s", name); */
1178 char speciliztion[MAX_COMMON_BUFFER_LEN] = {0, };
1179 __process_special_char(speciliztion, name);
1181 SETTING_TRACE("name:%s", speciliztion);
1182 setting_genlist_item_groupstyle_set(ad->data_auto_network_item, SETTING_GROUP_STYLE_TOP);
1183 item_data = setting_create_Gendial_field_1radio(
1184 ad->genlist_sel_network,
1185 &itc_multiline_1text_1icon,
1186 setting_network_Gendial_select_plmn_cb,
1188 /*SWALLOW_Type_1RADIO, */
1189 SWALLOW_Type_1RADIO_1TEXT,
1191 TAPI_NETWORK_SELECTIONMODE_MANUAL + valid_cnt + 1,
1193 setting_network_select_network_chk_changed);
1194 setting_genlist_item_groupstyle_set(item_data, SETTING_GROUP_STYLE_CENTER);
1195 if (NULL == item_data) {
1196 SETTING_TRACE_ERROR("Failed to calloc memory");
1200 item_data->userdata = ad;
1201 if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC != ad->sel_net
1202 && 0 == safeStrCmp(pa_net_name, ad->plmn_info.network_list[cnt].network_name)
1203 && ad->plmn_info.network_list[cnt].access_technology == ad->sel_act) {
1205 elm_radio_value_set(ad->chk_sel, item_data->chk_status);/*let select nothing */
1210 setting_genlist_item_groupstyle_set(item_data, SETTING_GROUP_STYLE_BOTTOM);
1213 SETTING_TRACE("Found %d valid networks in total[%d]", valid_cnt, cnt);
1214 /*valid_cnt = 0; for test.. */
1215 if (valid_cnt > 0) {
1217 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(keyStr_Searched), NULL, POPUP_INTERVAL, FALSE, FALSE);
1218 } else { /*there is no invalid plmn nearby */
1220 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(keyStr_No_Other_Network), NULL, POPUP_INTERVAL, FALSE, FALSE);
1224 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(keyStr_Failed_Searched), NULL, POPUP_INTERVAL, FALSE, FALSE);
1226 if (0 == valid_cnt && TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == ad->sel_net && ad->data_auto_network_item) {
1229 ad->data_auto_network_item->chk_status = TRUE;
1230 /*elm_object_item_data_set(ad->data_auto_network_item->item, ad->data_auto_network_item); */
1231 /*elm_genlist_item_item_class_update(ad->data_auto_network_item->item, &(itc_2text_1icon_6)); */
1232 char *sub_text = setting_customize_text(ad->data_auto_network_item->sub_desc, 0, BLUE_COLOR, NULL);
1233 ad->data_auto_network_item->sub_desc = (char *)g_strdup(sub_text);
1235 elm_object_item_data_set(ad->data_auto_network_item->item, ad->data_auto_network_item);
1236 elm_genlist_item_update(ad->data_auto_network_item->item);
1241 void setting_tapi_get_serving_network_cb(TapiHandle *handle, int result, void *data, void *user_data)
1243 SETTING_TRACE_BEGIN;
1244 SETTING_TRACE(" - result = 0x%x", result);
1245 ret_if(!user_data || !data);
1246 SettingNetworkUG *ad = user_data;
1247 TelNetworkServing_t *srv_nt = data;
1249 if (result == TAPI_NETWORK_NO_ERR) {
1250 ad->sel_act = srv_nt->act;
1251 vconf_set_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, ad->sel_act);
1253 FREE(ad->sel_network);
1254 /*ad->sel_network = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME); */
1255 ad->sel_network = get_pa_select_network();
1256 if (!ad->sel_network) {
1257 ad->sel_network = strndup(Keystr_UNKNOWN_NETWORK, strlen(Keystr_UNKNOWN_NETWORK) + 1);
1259 setting_network_update_sel_network(ad);
1261 /*if failed, do nothing.. */
1268 void setting_tapi_cancel_manual_search_cb(TapiHandle *handle, int result, void *data, void *user_data)
1270 SETTING_TRACE_BEGIN;
1271 SETTING_TRACE(" - result = 0x%x", result);
1273 /*SettingNetworkUG *ad = user_data; */
1276 void setting_tapi_set_preferred_plmn_cb(TapiHandle *handle, int result, void *data, void *user_data)
1278 SETTING_TRACE_BEGIN;
1279 SETTING_TRACE(" - result = 0x%x", result);
1281 SettingNetworkUG *ad = user_data;
1282 setting_network_popup_delete(ad);
1284 if (result != TAPI_NETWORK_NO_ERR) {
1285 switch (ad->op_type) {
1286 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE: {
1287 setting_network_preferred_network_delete_failed(ad);
1291 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_ST_POP_ERROR"), NULL, POPUP_INTERVAL, FALSE, FALSE);
1296 int tapi_ret = TAPI_API_SUCCESS;
1297 switch (ad->op_type) {
1298 case SETTING_NETWORK_PREFERRED_NETWORK_NEW: {
1299 setting_view_change(&setting_view_network_preferred_network_new, &setting_view_network_preferred_network, ad);
1300 tapi_ret = tel_get_network_preferred_plmn(ad->handle, setting_tapi_get_preferred_plmn_cb, ad);
1304 case SETTING_NETWORK_PREFERRED_NETWORK_LIST: {
1306 setting_view_change(&setting_view_network_preferred_network_list, &setting_view_network_preferred_network, ad);
1307 tapi_ret = tel_get_network_preferred_plmn(ad->handle, setting_tapi_get_preferred_plmn_cb, ad);
1311 case SETTING_NETWORK_PREFERRED_NETWORK_EDIT: {
1312 setting_view_change(&setting_view_network_preferred_network_edit, &setting_view_network_preferred_network,
1314 tapi_ret = tel_get_network_preferred_plmn(ad->handle, setting_tapi_get_preferred_plmn_cb, ad);
1317 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE: {
1318 setting_network_preferred_network_delete_ok
1324 (" Unknown prederred network type");
1332 ("*** [ERR] tel_get_network_preferred_plmn. err=%d ***",
1339 void setting_tapi_get_preferred_plmn_cb(TapiHandle *handle, int result, void *data, void *user_data)
1341 SETTING_TRACE_BEGIN;
1342 SETTING_TRACE(" - result = 0x%x", result);
1344 SettingNetworkUG *ad = user_data;
1346 SETTING_TRACE_DEBUG("Case: TAPI_EVENT_NETWORK_GETPREFFEREDPLMN_CNF");
1347 setting_network_popup_delete(ad);
1349 if (result == TAPI_NETWORK_NO_ERR) {
1350 memcpy(&(ad->pref_list), data, sizeof(TelNetworkPreferredPlmnList_t));
1352 SETTING_TRACE("*********** ad->op_type = %d", ad->op_type);
1353 SETTING_TRACE("ad->pref_list.NumOfPrefPlmns:%d", ad->pref_list.NumOfPrefPlmns);
1354 switch (ad->op_type) {
1355 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE: {
1356 setting_network_preferred_network_delete_draw_network_list(ad);
1360 setting_network_preferred_network_refresh_view
1362 char info[MAX_DISPLAY_NAME_LEN_ON_UI] = { 0 };
1363 if (ad->pref_list.NumOfPrefPlmns > 1) {
1364 snprintf(info, sizeof(info), "Get %d preferred networks",
1365 ad->pref_list.NumOfPrefPlmns);
1367 snprintf(info, sizeof(info), "Get %d preferred network",
1368 ad->pref_list.NumOfPrefPlmns);
1370 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(info), NULL, POPUP_INTERVAL, FALSE, FALSE);
1375 switch (ad->op_type) {
1376 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE: {
1377 setting_network_preferred_network_delete_failed
1382 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(keyStr_Failed_Get_PreferNetwork), NULL, POPUP_INTERVAL, FALSE, FALSE);
1389 void __register_network(Setting_GenGroupItem_Data *list_item)
1391 SETTING_TRACE_BEGIN;
1392 ret_if(list_item == NULL);
1393 SETTING_TRACE("process item [%s]", list_item->keyStr);
1394 SettingNetworkUG *ad = list_item->userdata;
1397 int tapi_ret = TAPI_API_INVALID_INPUT;
1399 /*cancel the searching operation */
1401 if (ad->data_search_network_item) {
1402 elm_object_item_del(ad->data_search_network_item->item);
1403 ad->data_search_network_item = NULL;
1406 if (ad->b_searching_network) {
1407 SETTING_TRACE("Sending tel_cancel_network_manual_search..");
1408 tapi_ret = tel_cancel_network_manual_search(ad->handle, setting_tapi_cancel_manual_search_cb, ad);
1409 if (tapi_ret != TAPI_API_SUCCESS) {
1410 SETTING_TRACE_ERROR("*** [ERR] tel_cancel_network_manual_search. "\
1411 "tapi_ret=%d ***", tapi_ret);
1413 ad->b_searching_network = FALSE;
1417 if (0 == safeStrCmp(list_item->keyStr, "IDS_ST_BODY_SELECT_AUTOMATICALLY")) {
1418 ad->sel_net = TAPI_NETWORK_SELECTIONMODE_AUTOMATIC;
1419 SETTING_TRACE("Sending tel_select_network_automatic..");
1420 tapi_ret = tel_select_network_automatic(ad->handle, setting_tapi_set_plmn_mode_cb, ad);
1421 if (tapi_ret != TAPI_API_SUCCESS) {
1422 SETTING_TRACE_DEBUG("*** [ERR] tel_select_network_automatic."\
1423 " tapi_ret=%d ***", tapi_ret);
1426 /* Display 'Registering' popup when automatic */
1427 SETTING_TRACE("Automatic selection, Registering..")
1429 if (ad->network_select_registering_pop != NULL) {
1430 evas_object_del(ad->network_select_registering_pop);
1431 ad->network_select_registering_pop = NULL;
1434 ad->network_select_registering_pop = __create_registering_popup(list_item);
1435 if (ad->network_select_registering_pop) {
1436 SETTING_TRACE("Registering popup appeared");
1438 SETTING_TRACE("Registering popup failed");
1441 if (ad->data_auto_network_item) {
1442 /*ad->data_auto_network_item->sub_desc = (char *)g_strdup("...."); */
1443 /*elm_genlist_item_item_class_update(ad->data_auto_network_item->item, &(itc_2text_1icon_6)); */
1444 char *sub_text = setting_customize_text("....", 0, BLUE_COLOR, NULL);
1445 ad->data_auto_network_item->sub_desc = (char *)g_strdup(sub_text);
1447 elm_object_item_data_set(ad->data_auto_network_item->item, ad->data_auto_network_item);
1448 elm_genlist_item_update(ad->data_auto_network_item->item);
1451 ad->b_set_manul_network = FALSE;
1452 ad->b_set_auto_network = TRUE;
1453 ad->sel_act = -1;/*means "Automatic" */
1456 ad->sel_net = TAPI_NETWORK_SELECTIONMODE_MANUAL;
1457 ad->b_set_manul_network = TRUE;
1458 ad->b_set_auto_network = FALSE;
1461 SETTING_TRACE("ad->plmn_info.networks_count:%d",
1462 ad->plmn_info.networks_count);
1463 char name[MAX_COMMON_BUFFER_LEN] = {0, };
1464 for (; cnt < ad->plmn_info.networks_count; cnt++) {
1465 SETTING_TRACE("ad->plmn_info.network_list[cnt].network_name:%s",
1466 ad->plmn_info.network_list[cnt].network_name);
1467 memset(name, 0, MAX_COMMON_BUFFER_LEN);
1468 snprintf(name, MAX_COMMON_BUFFER_LEN, "%s",
1469 ad->plmn_info.network_list[cnt].network_name);
1470 /*SETTING_TRACE("name:%s", name); */
1472 char speciliztion[MAX_COMMON_BUFFER_LEN] = {0, };
1473 __process_special_char(speciliztion, name);
1475 SETTING_TRACE(" name:%s", speciliztion);
1477 if (!safeStrCmp(list_item->keyStr, speciliztion)) {
1478 SETTING_TRACE("find the right item");
1483 SETTING_TRACE_DEBUG("*** [Selected PLMN] name=%s, "\
1484 "srv provider=%s, PLMN ID=%s, type=%d, "\
1485 "access tech=%d ***",
1486 ad->plmn_info.network_list[cnt].network_name,
1487 ad->plmn_info.network_list[cnt].service_provider_name,
1488 ad->plmn_info.network_list[cnt].plmn,
1489 (int)(ad->plmn_info.network_list[cnt].type_of_plmn),
1490 (int)(ad->plmn_info.network_list[cnt].access_technology));
1492 /*ASYNC API - TAPI_EVENT_NETWORK_SELECT_CNF */
1493 SETTING_TRACE("Sending tel_select_network_manual..");
1494 tapi_ret = tel_select_network_manual(ad->handle,
1495 ad->plmn_info.network_list[cnt].plmn,
1496 ad->plmn_info.network_list[cnt].access_technology,
1497 setting_tapi_set_plmn_mode_cb, ad);
1498 if (tapi_ret != TAPI_API_SUCCESS) {
1499 SETTING_TRACE_DEBUG("%s*** [ERR] "\
1500 "tel_select_network_manual. "\
1501 "tapi_ret=%d ***%s", SETTING_FONT_RED,
1502 tapi_ret, SETTING_FONT_BLACK);
1503 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_ST_BODY_FAILED_TO_SELECT_NETWORK"), NULL, POPUP_INTERVAL, FALSE, FALSE);
1507 /* Display 'Registering' popup when manual */
1508 SETTING_TRACE("Manual selection, Registering..")
1510 if (ad->network_select_registering_pop != NULL) {
1511 evas_object_del(ad->network_select_registering_pop);
1512 ad->network_select_registering_pop = NULL;
1515 ad->network_select_registering_pop = __create_registering_popup(list_item);
1516 if (ad->network_select_registering_pop) {
1517 SETTING_TRACE("Registering popup appeared");
1519 SETTING_TRACE("Registering popup failed");
1522 ad->sel_act = ad->plmn_info.network_list[cnt].access_technology;
1523 FREE(ad->sel_network);
1524 ad->sel_network = strdup(ad->plmn_info.network_list[cnt].network_name);
1529 static void __ignore_back_key_cb(void *data, Evas_Object *obj, void *event_info)
1531 SETTING_TRACE_BEGIN;
1535 static Evas_Object *__create_registering_popup(void *data)
1537 SETTING_TRACE_BEGIN;
1539 retv_if(!data, NULL);
1541 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
1542 SettingNetworkUG *ad = list_item->userdata;
1544 Evas_Object *popup = elm_popup_add(ad->win_get);
1545 ea_object_event_callback_add(popup, EA_CALLBACK_BACK, __ignore_back_key_cb, list_item);
1547 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1549 Evas_Object *box = elm_box_add(popup);
1551 elm_box_horizontal_set(box, EINA_TRUE);
1552 elm_box_align_set(box, 0.5, 0.5);
1553 elm_box_padding_set(box, 16, 0);
1555 Evas_Object *progressbar = elm_progressbar_add(popup);
1556 elm_object_style_set(progressbar, PROGRESSBAR_STYLE);
1557 elm_progressbar_pulse(progressbar, EINA_TRUE);
1558 evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5);
1559 evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1560 elm_progressbar_pulse(progressbar, EINA_TRUE);
1561 evas_object_show(progressbar);
1562 elm_box_pack_end(box, progressbar);
1564 Evas_Object *label = elm_label_add(popup);
1565 elm_object_text_set(label, _("IDS_ST_POP_REGISTERING_ING"));
1566 evas_object_show(label);
1567 elm_box_pack_end(box, label);
1569 /*evas_object_show(box); */
1570 /*elm_object_content_set(popup, box); */
1572 Evas_Object *table = elm_table_add(popup);
1573 evas_object_show(table);
1574 elm_table_homogeneous_set(table, EINA_FALSE);
1576 Evas_Object *rect_up;
1577 rect_up = evas_object_rectangle_add(evas_object_evas_get(popup));
1578 evas_object_size_hint_min_set(rect_up, ELM_SCALE_SIZE(170), ELM_SCALE_SIZE(34));
1580 Evas_Object *rect_down;
1581 rect_down = evas_object_rectangle_add(evas_object_evas_get(popup));
1582 evas_object_size_hint_min_set(rect_down, ELM_SCALE_SIZE(100), ELM_SCALE_SIZE(34));
1584 elm_table_pack(table, rect_up, 0, 0, 2, 1);/* rect as a padding */
1585 elm_table_pack(table, box, 1, 1, 1, 1);
1586 elm_table_pack(table, rect_down, 2, 2, 2, 1);/* rect as a padding */
1588 evas_object_show(box);
1590 elm_object_content_set(popup, table);
1592 evas_object_show(popup);
1598 * Cancel for searching network
1600 static void __search_network_cancel_cb(void *data, Evas_Object *obj,
1603 SETTING_TRACE_BEGIN;
1605 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
1606 SettingNetworkUG *ad = list_item->userdata;
1609 evas_object_del(ad->popup);
1612 if (ad->b_searching_network) {
1613 SETTING_TRACE("Sending tel_cancel_network_manual_search..");
1614 int tapi_ret = tel_cancel_network_manual_search(ad->handle, setting_tapi_cancel_manual_search_cb, ad);
1615 if (tapi_ret != TAPI_API_SUCCESS) {
1616 SETTING_TRACE_ERROR("*** [ERR] tel_cancel_network_manual_search. "\
1617 "tapi_ret=%d ***", tapi_ret);
1619 ad->b_searching_network = FALSE;
1623 /* Restore selection automatically */
1626 vconf_get_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, &sel_net);
1627 SETTING_TRACE("Previous selection after searching network:%d", sel_net);
1629 if (sel_net == TAPI_NETWORK_SELECTIONMODE_AUTOMATIC) {
1630 list_item->chk_status = 1;
1631 elm_genlist_item_update(list_item->item);
1635 Evas_Object *__create_searching_popup(void *data)
1637 SETTING_TRACE_BEGIN;
1638 retv_if(!data, NULL);
1639 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
1640 SettingNetworkUG *ad = list_item->userdata;
1642 Evas_Object *popup = elm_popup_add(ad->ly_main);
1643 ea_object_event_callback_add(popup, EA_CALLBACK_BACK, __search_network_cancel_cb, list_item);
1644 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
1647 Evas_Object *box = elm_box_add(popup);
1649 elm_box_horizontal_set(box, EINA_TRUE);
1650 elm_box_align_set(box, 0.5, 0.5);
1651 elm_box_padding_set(box, 16, 0);
1653 Evas_Object *progressbar = elm_progressbar_add(popup);
1654 elm_object_style_set(progressbar, PROGRESSBAR_STYLE);
1655 elm_progressbar_pulse(progressbar, EINA_TRUE);
1656 evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5);
1657 evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1658 elm_progressbar_pulse(progressbar, EINA_TRUE);
1659 evas_object_show(progressbar);
1660 elm_box_pack_end(box, progressbar);
1662 Evas_Object *label = elm_label_add(popup);
1663 elm_object_text_set(label, _("IDS_ST_POP_NETWORKSERVICES_SEARCHING"));
1664 evas_object_show(label);
1665 elm_box_pack_end(box, label);
1667 /*evas_object_show(box); */
1668 /*elm_object_content_set(popup, box); */
1670 Evas_Object *table = elm_table_add(popup);
1671 evas_object_show(table);
1672 elm_table_homogeneous_set(table, EINA_FALSE);
1674 Evas_Object *rect_up;
1675 rect_up = evas_object_rectangle_add(evas_object_evas_get(popup));
1676 evas_object_size_hint_min_set(rect_up, ELM_SCALE_SIZE(170), ELM_SCALE_SIZE(34));
1678 Evas_Object *rect_down;
1679 rect_down = evas_object_rectangle_add(evas_object_evas_get(popup));
1680 evas_object_size_hint_min_set(rect_down, ELM_SCALE_SIZE(100), ELM_SCALE_SIZE(34));
1682 elm_table_pack(table, rect_up, 0, 0, 2, 1);/* rect as a padding */
1683 elm_table_pack(table, box, 1, 1, 1, 1);
1684 elm_table_pack(table, rect_down, 2, 2, 2, 1);/* rect as a padding */
1686 evas_object_show(box);
1688 elm_object_content_set(popup, table);
1690 evas_object_show(popup);
1695 static Eina_Bool __search_net_on_timer(void *data)
1698 SETTING_TRACE_BEGIN;
1699 retv_if(data == NULL, EINA_FALSE);
1700 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
1701 SettingNetworkUG *ad = list_item->userdata;
1702 retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "ad is NULL");
1707 evas_object_del(ad->popup);
1714 tapi_ret = tel_search_network(ad->handle, setting_tapi_search_network_cb, ad); /*ASYNC API - TAPI_EVENT_NETWORK_SEARCH_CNF */
1715 if (tapi_ret != TAPI_API_SUCCESS) { /* error handling.. */
1716 SETTING_TRACE_ERROR("%s*** [ERR] tel_search_network. tapi_ret=%d ***%s", SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
1717 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(STR_SETTING_OPERATION_FAILED), NULL, POPUP_INTERVAL, FALSE, FALSE);
1719 /* put error handler on the end of this function. */
1721 setting_update_gl_item_chk_status(ad->data_auto_network_item, 1);
1722 return ECORE_CALLBACK_CANCEL;
1725 ad->b_searching_network = TRUE;
1727 setting_genlist_item_groupstyle_set(ad->data_auto_network_item, SETTING_GROUP_STYLE_TOP);
1728 ad->data_search_network_item = setting_create_Gendial_field_1radio(
1729 ad->genlist_sel_network,
1732 SWALLOW_Type_1RADIO_1SEARCH,
1733 ad->chk_sel, -1, NULL, NULL);
1734 elm_genlist_item_select_mode_set(ad->data_search_network_item->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1735 setting_genlist_item_groupstyle_set(ad->data_search_network_item, SETTING_GROUP_STYLE_BOTTOM);
1738 evas_object_del(ad->popup);
1741 ad->popup = __create_searching_popup(list_item);
1742 if (ad->data_auto_network_item) {
1743 /*elm_genlist_item_item_class_update(ad->data_auto_network_item->item, &(itc_2text_1icon_7)); */
1745 char *sub_text = setting_customize_text(ad->data_auto_network_item->sub_desc, 0, GRAY_COLOR, NULL);
1746 ad->data_auto_network_item->sub_desc = (char *)g_strdup(sub_text);
1748 elm_object_item_data_set(ad->data_auto_network_item->item, ad->data_auto_network_item);
1749 elm_genlist_item_update(ad->data_auto_network_item->item);
1752 /*ecore_timer_del(ad->timer); */
1754 return ECORE_CALLBACK_CANCEL;
1757 void __switch_automatic_on_resp_cb(void *data, Evas_Object *obj,
1760 SETTING_TRACE_BEGIN;
1761 retm_if(data == NULL, "Data parameter is NULL");
1763 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
1764 SettingNetworkUG *ad = list_item->userdata;
1765 int response_type = btn_type(obj);
1767 evas_object_del(ad->popup);
1771 if (POPUP_RESPONSE_OK == response_type) {
1773 /* Not used, Searching network directly.
1774 //changing of USE_PACKET_DATA was trigged by betwork searching
1775 ad->b_trigged_by_searching = TRUE;
1778 ad->popup = setting_create_popup_with_progressbar(ad, ad->win_get,
1780 NULL, NULL, NULL, 0, TRUE, FALSE);
1783 ecore_timer_del(ad->timer);
1786 ad->timer = ecore_timer_add(TIME_TO_TURN_OFF_3G, __search_net_on_timer, list_item);
1789 __search_net_on_timer(list_item);
1791 } else if (POPUP_RESPONSE_CANCEL == response_type) {
1793 /* Restore selection automatically */
1794 int sel_net, chk_status;
1796 vconf_get_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, &sel_net);
1797 SETTING_TRACE("Previous selection after searching network:%d", sel_net);
1799 if (sel_net == TAPI_NETWORK_SELECTIONMODE_AUTOMATIC)
1804 setting_update_gl_item_chk_status(ad->data_auto_network_item, chk_status);
1808 void __switch_automatic_network(Setting_GenGroupItem_Data *list_item)
1810 SETTING_TRACE_BEGIN;
1811 ret_if(!list_item || !list_item->userdata || !list_item->keyStr);
1812 ret_if(0 != safeStrCmp(list_item->keyStr, "IDS_ST_BODY_SELECT_AUTOMATICALLY"));
1813 SettingNetworkUG *ad = list_item->userdata;
1814 SETTING_TRACE("The value of toogle changes to be %d", list_item->chk_status);
1815 if (list_item->chk_status) {
1816 /* Automatic selected */
1817 Elm_Object_Item *last_item = elm_genlist_last_item_get(ad->genlist_sel_network);
1818 SETTING_TRACE("ad->data_auto_network_item->item:%p", ad->data_auto_network_item->item);
1820 last_item = elm_genlist_last_item_get(ad->genlist_sel_network);
1821 SETTING_TRACE("last_item:%p", last_item);
1822 if (last_item == ad->data_auto_network_item->item) {
1825 elm_object_item_del(last_item);
1828 __register_network(list_item);
1829 setting_genlist_item_groupstyle_set(ad->data_auto_network_item, SETTING_GROUP_STYLE_NONE);
1831 setting_network_searching_network(list_item);
1836 * Network selection / Searching network
1839 setting_network_searching_network(Setting_GenGroupItem_Data *list_item)
1841 SETTING_TRACE_BEGIN;
1843 SettingNetworkUG *ad = list_item->userdata;
1845 /* Manual selected */
1846 /*__register_network(list_item); */
1848 int value_use_packet;
1849 vconf_get_int(VCONFKEY_DNET_STATE, &value_use_packet);
1851 SETTING_TRACE("ad->sel_net:%d", ad->sel_net);
1852 if (value_use_packet != VCONFKEY_DNET_OFF) {
1854 setting_create_popup_with_btn(list_item, ad->ly_main,
1855 NULL, _(SETTING_NETWORK_SEARCH_3G_ON_DESC),
1856 __switch_automatic_on_resp_cb,
1857 0, 2, _("IDS_ST_BUTTON_OK"), _("IDS_ST_BUTTON_CANCEL_ABB"));
1858 /*0, 2, _("IDS_ST_BUTTON_DISCONNECT"),_("IDS_ST_BUTTON_CANCEL_ABB")); */
1864 tapi_ret = tel_search_network(ad->handle, setting_tapi_search_network_cb, ad); /*ASYNC API - TAPI_EVENT_NETWORK_SEARCH_CNF */
1865 if (tapi_ret != TAPI_API_SUCCESS) { /* error handling.. */
1866 SETTING_TRACE_ERROR("%s*** [ERR] tel_search_network. tapi_ret=%d ***%s", SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
1867 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(STR_SETTING_OPERATION_FAILED), NULL, POPUP_INTERVAL, FALSE, FALSE);
1869 /* put error handler on the end of this function. */
1871 setting_update_gl_item_chk_status(list_item, 1);
1875 ad->b_searching_network = TRUE;
1876 /*latest UI: show progress popup instead of progress item
1877 setting_genlist_item_groupstyle_set(ad->data_auto_network_item, SETTING_GROUP_STYLE_TOP);
1878 ad->data_search_network_item = setting_create_Gendial_field_1radio(
1879 ad->genlist_sel_network,
1882 SWALLOW_Type_1RADIO_1SEARCH,
1883 ad->chk_sel, -1, NULL, NULL);
1884 elm_genlist_item_select_mode_set(ad->data_search_network_item->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1885 setting_genlist_item_groupstyle_set(ad->data_search_network_item, SETTING_GROUP_STYLE_BOTTOM);
1888 evas_object_del(ad->popup);
1891 ad->popup = __create_searching_popup(list_item);
1892 if (ad->data_auto_network_item) {
1893 /*elm_genlist_item_item_class_update(ad->data_auto_network_item->item, &(itc_2text_1icon_7)); */
1895 char *sub_text = setting_customize_text(ad->data_auto_network_item->sub_desc, 0, GRAY_COLOR, NULL);
1896 ad->data_auto_network_item->sub_desc = (char *)g_strdup(sub_text);
1898 elm_object_item_data_set(ad->data_auto_network_item->item, ad->data_auto_network_item);
1899 elm_genlist_item_update(ad->data_auto_network_item->item);
1905 void setting_network_select_network_chk_changed(void *data, Evas_Object *obj, void *event_info)
1907 SETTING_TRACE_BEGIN;
1908 retm_if(data == NULL || obj == NULL, "Parameter is NULL");
1909 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
1910 if (0 == safeStrCmp(list_item->keyStr, "IDS_ST_BODY_SELECT_AUTOMATICALLY")) {
1911 list_item->chk_status = elm_check_state_get(obj);
1912 __switch_automatic_network(list_item);
1913 } else { /*"IDS_ST_BODY_SELECT_AUTOMATICALLY" */
1914 list_item->chk_status = elm_radio_value_get(obj);
1915 SETTING_TRACE("[Radio index:%d] Radio checked", list_item->chk_status);
1917 __register_network(list_item);
1923 void setting_network_Gendial_select_plmn_cb(void *data, Evas_Object *obj, void *event_info)
1925 SETTING_TRACE_BEGIN;
1926 retm_if(data == NULL || event_info == NULL, "Parameter is NULL");
1928 SettingNetworkUG *ad = (SettingNetworkUG *)data;
1929 Elm_Object_Item *item = (Elm_Object_Item *)event_info;
1930 elm_genlist_item_selected_set(item, 0);
1931 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)elm_object_item_data_get(item);
1932 setting_retm_if(NULL == list_item, "list_item is NULL");
1934 SETTING_TRACE("list_item->keyStr:%s", list_item->keyStr);
1935 if (0 == safeStrCmp(list_item->keyStr, "IDS_ST_BODY_SELECT_AUTOMATICALLY")) {
1936 setting_update_gl_item_chk_status(list_item, !(list_item->chk_status));
1937 __switch_automatic_network(list_item);
1940 if (ad->b_searching_network) {
1941 SETTING_TRACE("Searching poup displaying, Cannot select");
1945 int chk_status = elm_radio_value_get(ad->chk_sel);
1946 if (chk_status != list_item->chk_status) {
1947 SETTING_TRACE("[List index:%d] List selected (radio index:%d)", list_item->chk_status, chk_status);
1948 elm_radio_value_set(ad->chk_sel, list_item->chk_status);
1949 __register_network(list_item);
1951 SETTING_TRACE("[List index:%d] Skip becuase radio checked (radio index:%d)", list_item->chk_status, chk_status);
1959 void setting_network_update_sel_network(void *data)
1961 /*SETTING_TRACE_BEGIN; */
1962 SettingNetworkUG *ad = data;
1963 /*SETTING_TRACE("ad->sel_net:%d", ad->sel_net); */
1964 /*SETTING_TRACE("ad->sel_network:%s", ad->sel_network); */
1965 /*SETTING_TRACE("sel_act = [%s(%d)]", setting_network_get_act_str(ad->sel_act),ad->sel_act); */
1967 if (ad->data_auto_network_item) {
1968 if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == ad->sel_net) {
1969 /*SETTING_TRACE_DEBUG("After set as Automatic, update " */
1970 /* "ad->data_auto_network_item to be [%s]", */
1971 /* ad->sel_network); */
1972 /*ad->data_auto_network_item->sub_desc = (char *)g_strdup(_(ad->sel_network)); */
1973 char *sub_text = setting_customize_text(_(ad->sel_network), 0, BLUE_COLOR, NULL);
1974 SETTING_TRACE("sub_text:%s", sub_text);
1975 G_FREE(ad->data_auto_network_item->sub_desc);
1976 ad->data_auto_network_item->sub_desc = (char *)g_strdup(sub_text);
1977 elm_object_item_data_set(ad->data_auto_network_item->item, ad->data_auto_network_item);
1978 elm_genlist_item_update(ad->data_auto_network_item->item);
1979 elm_genlist_item_fields_update(ad->data_auto_network_item->item, "*", ELM_GENLIST_ITEM_FIELD_TEXT);
1985 if (ad->data_sel_net) { /*it indicates TAPI is not responsed in time */
1986 char sel_network_desc[MAX_COMMON_BUFFER_LEN] = { 0, };
1987 if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == ad->sel_net) {
1988 snprintf(sel_network_desc, MAX_COMMON_BUFFER_LEN,
1989 "%s, %s", _("IDS_ST_BODY_ANSWERINGMODE_AUTOMATIC"), _(ad->sel_network));
1992 snprintf(sel_network_desc, MAX_COMMON_BUFFER_LEN,
1993 "%s, %s", _("IDS_ST_BODY_MANUAL"), _(ad->sel_network));
1996 /*SETTING_TRACE("sel_network_desc:%s", sel_network_desc); */
1998 G_FREE(ad->data_sel_net->sub_desc);
1999 ad->data_sel_net->sub_desc = (char *)g_strdup(_(sel_network_desc));
2001 elm_object_item_data_set(ad->data_sel_net->item, ad->data_sel_net);
2002 elm_genlist_item_update(ad->data_sel_net->item);
2006 const char *setting_network_get_act_str(TelNetworkSystemType_t type)
2009 case TAPI_NETWORK_SYSTEM_NO_SRV: /*0 */
2010 return "NO SERVICE";
2011 case TAPI_NETWORK_SYSTEM_GSM: /*1 */
2013 case TAPI_NETWORK_SYSTEM_GPRS: /*2 */
2015 case TAPI_NETWORK_SYSTEM_EGPRS: /*3 */
2017 case TAPI_NETWORK_SYSTEM_PCS1900: /*4 */
2019 case TAPI_NETWORK_SYSTEM_UMTS: /*5 */
2021 case TAPI_NETWORK_SYSTEM_GSM_AND_UMTS:
2023 case TAPI_NETWORK_SYSTEM_HSDPA:
2025 case TAPI_NETWORK_SYSTEM_IS95A:
2027 case TAPI_NETWORK_SYSTEM_IS95B:
2029 case TAPI_NETWORK_SYSTEM_CDMA_1X:
2031 case TAPI_NETWORK_SYSTEM_EVDO_REV_0:
2032 return "EV-DO rev0";
2033 case TAPI_NETWORK_SYSTEM_1X_EVDO_REV_0_HYBRID:
2034 return "1X and EV-DO rev0";
2035 case TAPI_NETWORK_SYSTEM_EVDO_REV_A:
2036 return "EV-DO revA";
2037 case TAPI_NETWORK_SYSTEM_1X_EVDO_REV_A_HYBRID:
2038 return "1X and EV-DO revA";
2039 case TAPI_NETWORK_SYSTEM_EVDV:
2041 case TAPI_NETWORK_SYSTEM_LTE:
2044 return "NO SERVICE";
2048 bool setting_network_equal_profile(connection_profile_h pf1, connection_profile_h pf2)
2051 SETTING_TRACE("Both profile are NULL, return TRUE");
2053 } else if (!pf1 || !pf2) {
2054 SETTING_TRACE("One profile is NULL, one is not, return FALSE");
2058 connection_profile_type_e type1, type2;
2059 connection_cellular_service_type_e srvtype1, srvtype2;
2060 char *apn1, *apn2, *name1, *name2;
2061 type1 = type2 = srvtype1 = srvtype2 = 0; /*intialize */
2062 apn1 = apn2 = name1 = name2 = NULL;
2064 (void)connection_profile_get_type(pf1, &type1);
2065 (void)connection_profile_get_type(pf2, &type2);
2066 (void)connection_profile_get_cellular_service_type(pf1, &srvtype1);
2067 (void)connection_profile_get_cellular_service_type(pf2, &srvtype2);
2069 (void)connection_profile_get_cellular_apn(pf1, &apn1);
2070 (void)connection_profile_get_cellular_apn(pf2, &apn2);
2071 (void)connection_profile_get_name(pf1, &name1);
2072 (void)connection_profile_get_name(pf2, &name2);
2075 && srvtype1 == srvtype2
2076 && 0 == safeStrCmp(apn1, apn2)
2077 && 0 == safeStrCmp(name1, name1)) {
2078 SETTING_TRACE("They have same key fields, return TRUE.");
2083 SETTING_TRACE("They don't have same key fields, return FALSE.");
2090 #define MAX_ID_LEN 512
2091 static int __profile_item_sort_cb(const void *d1, const void *d2)
2093 SETTING_TRACE_BEGIN;
2094 connection_profile_h pf1 = (connection_profile_h)d1;
2095 connection_profile_h pf2 = (connection_profile_h)d2;
2103 char *id_str1 = NULL;
2104 char *id_str2 = NULL;
2105 connection_profile_get_id(pf1, &id_str1);
2106 connection_profile_get_id(pf2, &id_str2);
2110 connection_profile_get_name(pf1, &name1);
2111 connection_profile_get_name(pf2, &name2);
2113 if (isEmptyStr(id_str1)) {
2119 if (isEmptyStr(id_str2)) {
2125 char str1[MAX_ID_LEN] = {0,};
2126 char str2[MAX_ID_LEN] = {0,};
2127 safeCopyStr(str1, id_str1, MAX_ID_LEN);
2128 safeCopyStr(str2, id_str2, MAX_ID_LEN);
2131 /*SETTING_TRACE("str1:%s, name1:%s", str1, name1); */
2132 /*SETTING_TRACE("str2:%s, name2:%s", str2, name2); */
2136 p = safeStrRStr(str1, "_");
2141 p = safeStrRStr(str1, "_");
2147 /*SETTING_TRACE("id1:%d", id1); */
2150 p = safeStrRStr(str2, "_");
2155 p = safeStrRStr(str2, "_");
2162 /*SETTING_TRACE("id2:%d", id2); */
2166 void setting_network_reget_profile_list(void *cb)
2168 SETTING_TRACE_BEGIN;
2170 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
2171 if (ad->profile_list != NULL) {
2172 eina_list_free(ad->profile_list);
2173 ad->profile_list = NULL;
2175 connection_profile_iterator_h profile_iter = NULL;
2176 connection_profile_h profile_h = NULL;
2177 int rv = connection_get_profile_iterator(ad->connection, CONNECTION_ITERATOR_TYPE_REGISTERED, &profile_iter);
2178 if (rv != CONNECTION_ERROR_NONE) {
2179 SETTING_TRACE_ERROR("Fail to get profile iterator [%d]", rv);
2180 /*elm_object_disabled_set(del_btn, EINA_TRUE); */
2185 connection_profile_type_e profile_type = CONNECTION_PROFILE_TYPE_CELLULAR;
2186 connection_cellular_service_type_e service_type = CONNECTION_CELLULAR_SERVICE_TYPE_UNKNOWN;
2188 while (connection_profile_iterator_has_next(profile_iter)) {
2189 if (cnt >= MAX_PROFILE_NUM) {
2192 if (connection_profile_iterator_next(profile_iter, &profile_h) != CONNECTION_ERROR_NONE) {
2193 SETTING_TRACE_ERROR("Fail to get profile handle");
2197 if (connection_profile_get_type(profile_h, &profile_type) != CONNECTION_ERROR_NONE) {
2198 SETTING_TRACE_ERROR("Fail to get profile type");
2201 if (connection_profile_get_cellular_service_type(profile_h, &service_type) != CONNECTION_ERROR_NONE) {
2202 SETTING_TRACE_ERROR("Fail to get service type");
2207 if (CONNECTION_PROFILE_TYPE_CELLULAR != profile_type || ad->profile_service_type != service_type) {
2210 ad->profile_list = eina_list_sorted_insert(ad->profile_list, __profile_item_sort_cb, profile_h);
2211 /*if (cnt > 1) break;//for test */
2216 int is_lte_on_feature(void *data)
2218 SETTING_TRACE_BEGIN;
2222 vconf_get_int(VCONF_KEY_PRIVATE_LTE_ON, &ret);
2223 SETTING_TRACE("LTE feature status: %d", ret);
2227 static Setting_Cfg_Node_T s_cfg_node_array[] = {
2228 {"IDS_ST_MBODY_MOBILE_DATA", NULL, "viewtype:frontpage;tab:first;keyword:IDS_ST_MBODY_MOBILE_DATA", 0, 0, 0, Cfg_Item_View_Node, NULL, NULL, NULL, NULL},
2229 {"IDS_ST_BODY_DATA_ROAMING", NULL, "viewtype:frontpage;tab:first;keyword:IDS_ST_BODY_DATA_ROAMING", 0, 0, 0, Cfg_Item_View_Node, NULL, NULL, NULL, NULL},
2230 {"IDS_COM_BODY_NETWORK_OPERATORS", NULL, "viewtype:frontpage;tab:first;keyword:IDS_COM_BODY_NETWORK_OPERATORS", 0, 0, 0, Cfg_Item_View_Node, NULL, NULL, NULL, NULL},
2231 {"IDS_ST_BODY_NETWORK_MODE", NULL, "viewtype:frontpage;tab:first;keyword:IDS_ST_BODY_NETWORK_MODE", 0, 0, 0, Cfg_Item_View_Node, NULL, NULL, NULL, NULL},
2232 {"IDS_ST_BODY_CONNECTIONS", NULL, "viewtype:frontpage;tab:first;keyword:IDS_ST_BODY_CONNECTIONS", 0, 0, 0, Cfg_Item_View_Node, NULL, NULL, NULL, NULL},
2235 UG_MODULE_API int setting_plugin_search_init(app_control_h service, void *priv, char **applocale)
2237 SETTING_TRACE_BEGIN;
2238 SETTING_TRACE(">> setting-network-efl DB search code");
2240 *applocale = strdup("setting:/usr/apps/org.tizen.setting/res/locale");
2242 Eina_List **pplist = (Eina_List **)priv;
2244 int size = sizeof(s_cfg_node_array) / sizeof(s_cfg_node_array[0]);
2245 for (i = 0; i < size; i++) {
2246 Setting_Cfg_Node_T *node = setting_plugin_search_item_subindex_add(s_cfg_node_array[i].key_name, s_cfg_node_array[i].ug_args, IMG_Network, s_cfg_node_array[i].item_type, s_cfg_node_array[i].data, "Network");
2247 *pplist = eina_list_append(*pplist, node);