Merge "[Feature] Hide some menus in emulator . ." into 2.0_beta
[apps/core/preloaded/settings.git] / setting-network / src / setting-network.c
1 /*
2  * setting
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
5  *
6  * Contact: MyoungJune Park <mj2004.park@samsung.com>
7  *
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
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
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.
19  *
20  */
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
26 #ifndef UG_MODULE_API
27 #define UG_MODULE_API __attribute__ ((visibility("default")))
28 #endif
29 int setting_network_subscribe_tapi_events(void *data);
30 int setting_network_unsubscribe_tapi_events(void *data);
31
32 static void __selected_network_change_cb(keynode_t *key, void *data)
33 {
34         SETTING_TRACE_BEGIN;
35         setting_retm_if(!data, "!data");
36         SettingNetworkUG *ad = data;
37         char *value = vconf_keynode_get_str(key);
38         char *vconf_name = vconf_keynode_get_name(key);
39         if (!safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_NWNAME)) {
40                 if (NULL == value) {
41                     value = "IDS_ST_BODY_NOSERVICE";
42                 }
43                 ad->sel_network = strdup(value);
44
45                 if (0 != vconf_set_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, ad->sel_net)) {
46                         SETTING_TRACE_ERROR("vconf[%s] set failed");
47                 }
48                 
49                 if (0 != vconf_set_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, ad->sel_act)) {
50                         SETTING_TRACE_ERROR("vconf[%s] set failed");
51                 }
52
53                 setting_network_update_sel_network(ad);
54         }
55 }
56
57
58 static void setting_network_ug_cb_resize(void *data, Evas *e,
59                                          Evas_Object *obj, void *event_info)
60 {
61         SettingNetworkUG *ad = (SettingNetworkUG *) data;
62         setting_view_update(&setting_view_network_main, ad);
63 }
64
65 void __network_evt_cb(net_event_info_t *event_cb, void *data)
66 {
67 }
68
69 #ifdef SUPPORT_MDM
70 static void __mdm_policy_roaming_sync_receiver_cb(int result, void *p_user_data)
71 {
72         SETTING_TRACE_BEGIN;
73         ret_if(p_user_data == NULL);
74         mdm_status_t policy_status = (mdm_status_t)result;
75         SettingNetworkUG *ad = (SettingNetworkUG*)p_user_data;
76
77         if(policy_status == MDM_ALLOWED)
78         {
79                 setting_enable_genlist_item(ad->data_roaming->item);
80         }
81         else if(policy_status == MDM_RESTRICTED)
82         {
83                 setting_disable_genlist_item(ad->data_roaming->item);
84                 setting_create_popup_without_btn(ad, ad->ly_main, NULL, MDM_POLICY_DATA_ROAMING_RESTRICTED_STR,
85                                           NULL,
86                                           POPUP_INTERVAL, FALSE, FALSE);
87         }
88 }
89 #endif
90 static void *setting_network_ug_on_create(ui_gadget_h ug,
91                                           enum ug_mode mode, service_h service,
92                                           void *priv)
93 {
94         setting_retvm_if((!priv), NULL, "!priv");
95
96         SettingNetworkUG *networkUG = priv;
97         networkUG->ug = ug;
98
99         networkUG->win_main_layout = (Evas_Object *) ug_get_parent_layout(ug);
100         networkUG->win_get = (Evas_Object *) ug_get_window();
101         evas_object_show(networkUG->win_main_layout);
102         networkUG->evas = evas_object_evas_get(networkUG->win_main_layout);
103
104         setting_retvm_if(networkUG->win_main_layout == NULL, NULL,
105                          "cannot get main window ");
106
107
108         /* init */
109         ecore_imf_init();
110
111 #ifdef SUPPORT_MDM
112         networkUG->mdm_server_state = mdm_get_service();
113         SETTING_TRACE("mdm server status: %d", networkUG->mdm_server_state);
114
115         if(networkUG->mdm_server_state == MDM_RESULT_SUCCESS)
116         {
117                 networkUG->mdm_handle = mdm_register_policy_receiver(MDM_POLICY_ON_ROAMING_SYNC, networkUG, __mdm_policy_roaming_sync_receiver_cb);
118                 if(networkUG->mdm_handle == -1)
119                         SETTING_TRACE_DEBUG("[ERR] failed to register mdm policy receiver");
120         }
121 #endif
122
123         //pass NULL to let TAPI access default module
124         networkUG->handle =  tel_init(NULL);
125         if (!networkUG->handle) {
126                 SETTING_TRACE_DEBUG("%s*** [ERR] tel_init. ***%s",
127                                     SETTING_FONT_RED, SETTING_FONT_BLACK);
128                 //return NULL;
129         }
130
131         int err_code = -1;
132         err_code = net_register_client((net_event_cb_t)__network_evt_cb, networkUG);
133         if (err_code != NET_ERR_NONE) {
134                 SETTING_TRACE_DEBUG
135                     ("%s*** [ERR] net_register_client. err=%d ***%s",
136                      SETTING_FONT_RED, err_code, SETTING_FONT_BLACK);
137         }
138
139         /* register view node table */
140         setting_view_node_table_intialize();
141         setting_view_node_table_register(&setting_view_network_main, NULL);
142         setting_view_node_table_register(&setting_view_network_select_network,
143                                          &setting_view_network_main);
144         setting_view_node_table_register(&setting_view_network_main_help,
145                                          &setting_view_network_main);
146
147         setting_view_node_table_register(&setting_view_network_con, &setting_view_network_main);
148         setting_view_node_table_register(&setting_view_network_connection_create, &setting_view_network_con);
149         setting_view_node_table_register(&setting_view_network_3gcon,
150                                          &setting_view_network_main);
151
152         setting_view_node_table_register
153             (&setting_view_network_preferred_network,
154              &setting_view_network_main);
155         setting_view_node_table_register
156             (&setting_view_network_preferred_network_list,
157              &setting_view_network_preferred_network);
158         setting_view_node_table_register
159             (&setting_view_network_preferred_network_new,
160              &setting_view_network_preferred_network);
161         setting_view_node_table_register
162             (&setting_view_network_preferred_network_edit,
163              &setting_view_network_preferred_network);
164         setting_view_node_table_register
165             (&setting_view_network_preferred_network_delete,
166              &setting_view_network_preferred_network);
167
168         if (tel_get_network_band(networkUG->handle, setting_tapi_get_band_cb, networkUG) != TAPI_API_SUCCESS) {
169                 SETTING_TRACE_ERROR("*** [ERR] tel_get_network_band. ***");
170         }
171
172         if (tel_get_network_selection_mode(networkUG->handle, setting_tapi_get_plmn_mode_cb, networkUG) != TAPI_API_SUCCESS) {
173                 SETTING_TRACE_ERROR("*** [ERR] tel_get_network_selection_mode. ***");
174         }
175         
176         if (tel_get_network_serving(networkUG->handle, setting_tapi_get_serving_network_cb, networkUG) != TAPI_API_SUCCESS) {
177                 SETTING_TRACE_ERROR("*** [ERR] tel_get_network_serving. ***");
178         }
179
180         /*  creating a view. */
181         setting_view_node_set_cur_view(&setting_view_network_main);
182         setting_view_create(&setting_view_network_main, (void *)networkUG);
183         evas_object_event_callback_add(networkUG->win_main_layout,
184                                        EVAS_CALLBACK_RESIZE,
185                                        setting_network_ug_cb_resize, networkUG);
186
187         (void)vconf_notify_key_changed(VCONFKEY_TELEPHONY_NWNAME,
188                                      __selected_network_change_cb, networkUG);
189
190         networkUG->view_type_string = NULL;
191         service_get_extra_data(service, "viewtype", &(networkUG->view_type_string));
192         if(networkUG->view_type_string) {
193                 SETTING_TRACE("viewtype:%s", networkUG->view_type_string);
194         }
195         return networkUG->ly_main;
196 }
197
198
199 static void setting_network_ug_on_start(ui_gadget_h ug, service_h service,
200                                         void *priv)
201 {
202 }
203
204 static void setting_network_ug_on_pause(ui_gadget_h ug, service_h service,
205                                         void *priv)
206 {
207 }
208
209 static void setting_network_ug_on_resume(ui_gadget_h ug, service_h service,
210                                          void *priv)
211 {
212 }
213
214 static void setting_network_ug_on_destroy(ui_gadget_h ug, service_h service,
215                                           void *priv)
216 {
217         SETTING_TRACE_BEGIN;
218         setting_retm_if((!priv), "!priv");
219         SettingNetworkUG *networkUG = priv;
220
221         (void)vconf_ignore_key_changed(VCONFKEY_TELEPHONY_NWNAME,
222                                        __selected_network_change_cb);
223         evas_object_event_callback_del(networkUG->win_main_layout, EVAS_CALLBACK_RESIZE, setting_network_ug_cb_resize); /* fix flash issue for gallery */
224         networkUG->ug = ug;
225
226         G_FREE(networkUG->ed_pxy_addr_desc);
227         G_FREE(networkUG->ed_pxy_port_desc);
228         FREE(networkUG->prof_list);
229         FREE(networkUG->sel_network);
230         /* release */
231         ecore_imf_shutdown();
232
233 #ifdef SUPPORT_MDM
234         if(networkUG->mdm_server_state == MDM_RESULT_SUCCESS)
235         {
236                 mdm_deregister_policy_receiver(networkUG->mdm_handle);
237                 mdm_release_service();
238         }
239 #endif
240
241         /*  unregister dnet client */
242         int err_code = net_deregister_client();
243         if (err_code != NET_ERR_NONE) {
244                 SETTING_TRACE_DEBUG
245                     ("%s*** [ERR] net_deregister_client. err=%d ***%s",
246                      SETTING_FONT_RED, err_code, SETTING_FONT_BLACK);
247         }
248
249         if (networkUG->handle && tel_deinit(networkUG->handle) != TAPI_API_SUCCESS) {
250                 SETTING_TRACE_DEBUG
251                     ("%s*** [ERR] setting_network_unsubscribe_tapi_events. ***%s",
252                      SETTING_FONT_RED, SETTING_FONT_BLACK);
253         }
254
255         setting_network_popup_delete(networkUG);
256         /*  delete the allocated objects. */
257         setting_view_destroy(&setting_view_network_select_network, networkUG);
258         setting_view_destroy(&setting_view_network_main_help, networkUG);
259
260         setting_view_destroy(&setting_view_network_con, networkUG);
261         setting_view_destroy(&setting_view_network_connection_create,
262                              networkUG);
263         setting_view_destroy(&setting_view_network_3gcon, networkUG);
264
265         setting_view_destroy(&setting_view_network_preferred_network,
266                              networkUG);
267         setting_view_destroy(&setting_view_network_preferred_network_list,
268                              networkUG);
269         setting_view_destroy(&setting_view_network_preferred_network_new,
270                              networkUG);
271         setting_view_destroy(&setting_view_network_preferred_network_edit,
272                              networkUG);
273         setting_view_destroy(&setting_view_network_preferred_network_delete,
274                              networkUG);
275         setting_view_destroy(&setting_view_network_main, networkUG);
276
277         if (NULL != ug_get_layout(networkUG->ug)) {
278                 evas_object_hide((Evas_Object *) ug_get_layout(networkUG->ug));
279                 evas_object_del((Evas_Object *) ug_get_layout(networkUG->ug));
280         }
281
282         SETTING_TRACE_END;
283 }
284
285 static void setting_network_ug_on_message(ui_gadget_h ug, service_h msg,
286                                           service_h service, void *priv)
287 {
288 }
289
290 static void setting_network_ug_on_event(ui_gadget_h ug,
291                                         enum ug_event event, service_h service,
292                                         void *priv)
293 {
294         SETTING_TRACE_BEGIN;
295         switch (event) {
296         case UG_EVENT_LOW_MEMORY:
297                 break;
298         case UG_EVENT_LOW_BATTERY:
299                 break;
300         case UG_EVENT_LANG_CHANGE:
301                 break;
302         case UG_EVENT_ROTATE_PORTRAIT:
303                 break;
304         case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
305                 break;
306         case UG_EVENT_ROTATE_LANDSCAPE:
307                 break;
308         case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
309                 break;
310         case UG_EVENT_REGION_CHANGE:
311                 break;
312         default:
313                 break;
314         }
315 }
316
317 static void setting_network_ug_on_key_event(ui_gadget_h ug,
318                                             enum ug_key_event event,
319                                             service_h service, void *priv)
320 {
321         SETTING_TRACE_BEGIN;
322         SettingNetworkUG *ad = (SettingNetworkUG *) priv;
323
324         switch (event) {
325         case UG_KEY_EVENT_END:
326                 {
327                         /* setting_network_popup_delete(ad); */
328                         if (elm_naviframe_top_item_get(ad->navi_bar) ==
329                            elm_naviframe_bottom_item_get(ad->navi_bar)) {
330                                 ug_destroy_me(ug);
331                         } else {
332                                 /* elm_naviframe_item_pop(ad->navi_bar); */
333                                 setting_view_cb_at_endKey(ad);
334                         }
335                 }
336                 break;
337         default:
338                 break;
339         }
340 }
341
342 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
343 {
344         SETTING_TRACE_BEGIN;
345         SettingNetworkUG *networkUG = calloc(1, sizeof(SettingNetworkUG));
346         setting_retvm_if(!networkUG, -1, "Create SettingNetworkUG obj failed");
347
348         ops->create = setting_network_ug_on_create;
349         ops->start = setting_network_ug_on_start;
350         ops->pause = setting_network_ug_on_pause;
351         ops->resume = setting_network_ug_on_resume;
352         ops->destroy = setting_network_ug_on_destroy;
353         ops->message = setting_network_ug_on_message;
354         ops->event = setting_network_ug_on_event;
355         ops->key_event = setting_network_ug_on_key_event;
356         ops->priv = networkUG;
357         ops->opt = UG_OPT_INDICATOR_ENABLE;
358
359         return 0;
360 }
361
362 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
363 {
364         SETTING_TRACE_BEGIN;
365         struct SettingNetworkUG *networkUG;
366         setting_retm_if(!ops, "ops == NULL");
367
368         networkUG = ops->priv;
369         FREE(networkUG);
370 }
371
372 /* ***************************************************
373  *
374  *general func
375  *
376  ***************************************************/
377 void setting_network_popup_delete(void *data)
378 {
379         SETTING_TRACE_BEGIN;
380         /* error check */
381         retm_if(data == NULL,
382                 "setting_network_tapi_popup_create Data parameter is NULL");
383         SettingNetworkUG *ad = (SettingNetworkUG *) data;
384         if (ad->network_ug_pop != NULL) {
385                 evas_object_del(ad->network_ug_pop);
386                 ad->network_ug_pop = NULL;
387         }
388 }
389
390 /* ***************************************************
391  *
392  *call back func
393  *
394  ***************************************************/
395
396 void setting_tapi_set_band_cb(TapiHandle *handle, int result, void *data, void *user_data)
397 {
398         SETTING_TRACE_BEGIN;
399         SETTING_TRACE(" - result = 0x%x", result);
400         ret_if(!user_data);
401         SettingNetworkUG *ad = user_data;
402         ret_if(NULL == ad->data_net_mode);
403
404         int err;
405         if (result == TAPI_NETWORK_NO_ERR) {
406                 ad->net_mode = elm_radio_value_get(ad->data_net_mode->rgd);//get value from radio
407                 setting_set_int_slp_key(ad->data_net_mode->int_slp_setting_binded,
408                                         ad->net_mode, &err);
409                 char *sub_des = NULL;
410
411                 switch (ad->net_mode) {
412                 case TAPI_NETWORK_BAND_TYPE_ANY:
413                         sub_des = _("IDS_COM_BODY_AUTOMATIC");
414                         break;
415
416                 case TAPI_NETWORK_BAND_TYPE_GSM_900_1800:
417                         sub_des = _(STR_SETTING_GSM_900_1800);
418                         break;
419
420                 case TAPI_NETWORK_BAND_TYPE_GSM_850_1900:
421                         sub_des = _(STR_SETTING_GSM_850_1900);
422                         break;
423
424                 case TAPI_NETWORK_BAND_TYPE_WCDMA:
425                         sub_des = _(STR_SETTING_UMTS);
426                         break;
427                 default:
428                         break;
429                 }
430                 if (ad->data_net_mode) {
431                         ad->data_net_mode->sub_desc = (char *)g_strdup(sub_des);
432                         elm_object_item_data_set(ad->data_net_mode->item, ad->data_net_mode);
433                         elm_genlist_item_update(ad->data_net_mode->item);
434                 }
435
436
437         } else {
438                 //rollback
439                 //get value from vconf
440                 setting_get_int_slp_key(ad->data_net_mode->int_slp_setting_binded,
441                                         &(ad->net_mode), &err);
442                 elm_radio_value_set(ad->data_net_mode->rgd, ad->net_mode);
443         }
444 }
445 void setting_tapi_get_band_cb(TapiHandle *handle, int result, void *data, void *user_data)
446 {
447         SETTING_TRACE_BEGIN;
448         SETTING_TRACE(" - result = 0x%x", result);
449         ret_if(!user_data);
450         SettingNetworkUG *ad = user_data;
451
452         if (result == TAPI_NETWORK_NO_ERR) {
453                 TelNetworkBand_t band;
454                 int temp_net_mode = 0;
455                 memcpy(&band, data, sizeof(TelNetworkBand_t));
456                 temp_net_mode = (int)band;
457                 /*  ***BEGIN***  Fixed the problem of word twinkle  SAMSUNG 2010/7/21 modify */
458                 if (temp_net_mode != ad->net_mode) {
459                         ad->net_mode = temp_net_mode;
460                         const char *sub_desc = NULL;
461                         switch (ad->net_mode) {
462                         case TAPI_NETWORK_BAND_TYPE_ANY:
463                                 sub_desc = _("IDS_COM_BODY_AUTOMATIC");
464                                 break;
465                         case TAPI_NETWORK_BAND_TYPE_GSM_900_1800:
466                                 sub_desc = _(STR_SETTING_GSM_900_1800);
467                                 break;
468                         case TAPI_NETWORK_BAND_TYPE_GSM_850_1900:
469                                 sub_desc = _(STR_SETTING_GSM_850_1900);
470                                 break;
471                         case TAPI_NETWORK_BAND_TYPE_WCDMA:
472                                 sub_desc = _(STR_SETTING_UMTS);
473                                 break;
474                         default:
475                                 break;
476                         }
477                         if (ad->data_net_mode) {
478                                 ad->data_net_mode->sub_desc = (char *)g_strdup(sub_desc);
479                                 elm_object_item_data_set (ad->data_net_mode->item, ad->data_net_mode);
480                                 elm_genlist_item_update(ad->data_net_mode->item);
481
482                         }
483                         vconf_set_int(VCONFKEY_SETAPPL_NETWORK_MODE_INT, ad->net_mode);
484                 }
485                 /*  ****END****  Fixed the problem of word twinkle  SAMSUNG 2010/7/21 modify */
486         } else {
487         }
488 }
489
490
491 void setting_tapi_set_plmn_mode_cb(TapiHandle *handle, int result, void *data, void *user_data)
492 {
493         SETTING_TRACE_BEGIN;
494         SETTING_TRACE(" - result = 0x%x", result);
495         ret_if(!user_data);
496         SettingNetworkUG *ad = user_data;
497
498         setting_network_popup_delete(ad);
499
500         if ((TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == ad->sel_net
501             && !ad->b_set_auto_network) ||
502             (TAPI_NETWORK_SELECTIONMODE_MANUAL == ad->sel_net
503             && !ad->b_set_manul_network))
504         {
505                 /*The requeset has already been canceled, return directly*/
506                 return;
507         }
508
509         if(result != TAPI_NETWORK_NO_ERR) {/*roolback..*/
510                 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(keyStr_Failed_Select_Network), NULL, POPUP_INTERVAL, FALSE, FALSE);
511
512                 //rollback sel_act and sel_net in setting_view_network_select_network.destroy()
513                 setting_view_change(
514                         &setting_view_network_select_network,
515                         &setting_view_network_main, ad);
516
517                 return;
518
519         }
520
521         setting_create_popup_without_btn(ad, ad->win_get, NULL, _(KeyStr_Saved), NULL, POPUP_INTERVAL, FALSE, FALSE);
522         if (0 != vconf_set_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, ad->sel_net)) {
523                 SETTING_TRACE_ERROR("vconf[%s] set failed");
524         }
525         if (0 != vconf_set_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, ad->sel_act)) {
526                 SETTING_TRACE_ERROR("vconf[%s] set failed");
527         }
528         
529         ad->b_set_auto_network = FALSE;
530         ad->b_set_manul_network = FALSE;
531         setting_network_update_sel_network(ad);
532 }
533 void setting_tapi_get_plmn_mode_cb(TapiHandle *handle, int result, void *data, void *user_data)
534 {
535         SETTING_TRACE_BEGIN;
536         SETTING_TRACE(" - result = 0x%x", result);
537         ret_if(!user_data);
538         SettingNetworkUG *ad = user_data;
539
540         if (result == TAPI_NETWORK_NO_ERR) {
541                 TelNetworkSelectionMode_t sel;
542                 memcpy(&sel, data, sizeof(TelNetworkSelectionMode_t));
543                 SETTING_TRACE_DEBUG("ad->sel_net[%d] %s sel[%d]", ad->sel_net, ad->sel_net == sel ? "==" : "!=", sel);
544                 if (ad->sel_net != sel) {
545                         ad->sel_net = sel;
546                         vconf_set_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, ad->sel_net);
547                         setting_network_update_sel_network(ad);
548                 }
549         } else {
550         }
551 }
552
553 void setting_tapi_search_network_cb(TapiHandle *handle, int result, void *data, void *user_data)
554 {
555         ret_if(!data || !user_data);
556         SettingNetworkUG *ad = user_data;
557         SETTING_TRACE_BEGIN;
558         SETTING_TRACE(" - result = %d", result);
559         setting_network_popup_delete(ad);
560
561         if (!ad->b_searching_network) {
562                 /*The requeset has already been canceled, don't do detail process*/
563                 return;
564         }
565         //setting_finish_progress_genlist_item(ad->data_selected_network_item);
566         if (ad->data_search_network_item)
567         {
568                 elm_object_item_del(ad->data_search_network_item->item);
569                 ad->data_search_network_item = NULL;
570         }
571
572         ad->b_searching_network = FALSE;
573         int valid_cnt = 0;
574         if (result == TAPI_NETWORK_NO_ERR) {
575                 int cnt = 0;
576                 memcpy(&(ad->plmn_info), data, sizeof(TelNetworkPlmnList_t));
577
578                 Setting_GenGroupItem_Data *item_data = NULL;
579
580                 const char *pa_net_name = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
581                 SETTING_TRACE("VCONFKEY_TELEPHONY_NWNAME:pa_net_name:%s", pa_net_name);
582
583                 char name[MAX_COMMON_BUFFER_LEN] = {0, };
584                 while(cnt < ad->plmn_info.networks_count) {
585                         SETTING_TRACE("network name from TAPI[%d]:%s(%s)", cnt,
586                                       ad->plmn_info.network_list[cnt].network_name,
587                                       setting_network_get_act_str(ad->plmn_info.network_list[cnt].access_technology));
588
589                         if (TAPI_FORBIDDEN_PLMN == ad->plmn_info.network_list[cnt].type_of_plmn) {
590                                 cnt++;
591                                 continue;
592                         }
593
594                         if (TAPI_NETWORK_SELECTIONMODE_MANUAL == ad->sel_net
595                             && 0 == safeStrCmp(pa_net_name, ad->plmn_info.network_list[cnt].network_name)
596                             && ad->plmn_info.network_list[cnt].access_technology == ad->sel_act)
597                         {
598                                 //already displayed.
599                                 cnt++;
600                                 continue;
601                         }
602                         
603                         memset(name, 0, MAX_COMMON_BUFFER_LEN);
604                         snprintf(name, MAX_COMMON_BUFFER_LEN, "%s (%s)",
605                                  ad->plmn_info.network_list[cnt].network_name,
606                                  setting_network_get_act_str(ad->plmn_info.network_list[cnt].access_technology));
607
608                         item_data = setting_create_Gendial_field_1radio(
609                                                 ad->genlist_sel_network,
610                                                 &itc_1text_2icon_2,
611                                                 setting_network_Gendial_select_plmn_cb,
612                                                 ad,
613                                                 SWALLOW_Type_1RADIO,
614                                                 ad->chk_sel,
615                                                 TAPI_NETWORK_SELECTIONMODE_MANUAL+valid_cnt+1,
616                                                 name,
617                                                 setting_network_select_network_chk_changed);
618                         if (NULL == item_data)
619                         {
620                                 SETTING_TRACE_ERROR("Failed to calloc memory");
621                                 cnt++;
622                                 continue;
623                         }
624                         item_data->userdata = ad;
625                         if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC != ad->sel_net
626                             && 0 == safeStrCmp(pa_net_name, ad->plmn_info.network_list[cnt].network_name)
627                             && ad->plmn_info.network_list[cnt].access_technology == ad->sel_act)
628                         {
629                                 elm_radio_value_set(ad->chk_sel, item_data->chk_status);//let select nothing
630                         }
631                         cnt++;
632                         valid_cnt++;
633                 }
634                 FREE(pa_net_name);
635
636                 SETTING_TRACE("Found %d valid networks in total[%d]", valid_cnt, cnt);
637                 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(keyStr_Searched), NULL, POPUP_INTERVAL, FALSE, FALSE);
638         } else {
639                 setting_create_popup_without_btn(ad, ad->win_get, NULL, _(keyStr_Failed_Searched), NULL, POPUP_INTERVAL, FALSE, FALSE);
640         }
641         if (0 == valid_cnt && TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == ad->sel_net && ad->data_auto_network_item)
642         {
643                 ad->data_auto_network_item->chk_status = TRUE;
644                 elm_object_item_data_set(ad->data_auto_network_item->item, ad->data_auto_network_item);
645                 elm_genlist_item_item_class_update(ad->data_auto_network_item->item, &(itc_2text_1icon_6));
646         }
647 }
648
649
650 void setting_tapi_get_serving_network_cb(TapiHandle *handle, int result, void *data, void *user_data)
651 {
652         SETTING_TRACE_BEGIN;
653         SETTING_TRACE(" - result = 0x%x", result);
654         ret_if(!user_data || !data);
655         SettingNetworkUG *ad = user_data;
656         TelNetworkServing_t *srv_nt = data;
657         
658         if (result == TAPI_NETWORK_NO_ERR)
659         {
660                 ad->sel_act = srv_nt->act;
661                 vconf_set_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, ad->sel_act);
662                 
663                 FREE(ad->sel_network);
664                 ad->sel_network = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
665                 if (NULL == ad->sel_network) {
666                     ad->sel_network = strndup("IDS_ST_BODY_NOSERVICE", strlen("IDS_ST_BODY_NOSERVICE")+1);
667                 }
668                 setting_network_update_sel_network(ad);
669         }
670         else
671         {
672                 //if failed, do nothing..
673         }
674         SETTING_TRACE_END;
675         
676 }
677
678
679 void setting_tapi_cancel_manual_search_cb(TapiHandle *handle, int result, void *data, void *user_data)
680 {
681         SETTING_TRACE_BEGIN;
682         SETTING_TRACE(" - result = 0x%x", result);
683         ret_if(!user_data);
684         //SettingNetworkUG *ad = user_data;
685 }
686
687 void setting_tapi_set_preferred_plmn_cb(TapiHandle *handle, int result, void *data, void *user_data)
688 {
689         SETTING_TRACE_BEGIN;
690         SETTING_TRACE(" - result = 0x%x", result);
691         ret_if(!user_data);
692         SettingNetworkUG *ad = user_data;
693         setting_network_popup_delete(ad);
694
695         if (result != TAPI_NETWORK_NO_ERR) {
696                 switch (ad->op_type) {
697                 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE:
698                 {
699                         setting_network_preferred_network_delete_failed(ad);
700                         break;
701                 }
702                 default:
703                 {
704                         setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_ERROR"), NULL, POPUP_INTERVAL, FALSE, FALSE);
705                         break;
706                 }
707                 }
708         } else {
709                 int tapi_ret = TAPI_API_SUCCESS;
710                 switch (ad->op_type) {
711                 case SETTING_NETWORK_PREFERRED_NETWORK_NEW:
712                 {
713                         setting_view_change
714                             (&setting_view_network_preferred_network_new,
715                              &setting_view_network_preferred_network,ad);
716                         tapi_ret =
717                             tel_get_network_preferred_plmn
718                             (ad->handle, setting_tapi_get_preferred_plmn_cb, ad);
719                         break;
720                 }
721
722                 case SETTING_NETWORK_PREFERRED_NETWORK_LIST:
723                 {
724
725                         setting_view_change
726                             (&setting_view_network_preferred_network_list,
727                              &setting_view_network_preferred_network,
728                              ad);
729                         tapi_ret =
730                             tel_get_network_preferred_plmn
731                             (ad->handle, setting_tapi_get_preferred_plmn_cb, ad);
732                         break;
733                 }
734
735                 case SETTING_NETWORK_PREFERRED_NETWORK_EDIT:
736                 {
737                         setting_view_change
738                             (&setting_view_network_preferred_network_edit,
739                              &setting_view_network_preferred_network,
740                              ad);
741                         tapi_ret =
742                             tel_get_network_preferred_plmn
743                             (ad->handle, setting_tapi_get_preferred_plmn_cb, ad);
744                         break;
745                 }
746                 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE:
747                 {
748                         setting_network_preferred_network_delete_ok
749                             (ad);
750                         return;
751                 }
752                 default:
753                 {
754                         SETTING_TRACE_DEBUG
755                             (" Unknown prederred network type");
756                         break;
757                 }
758                 }
759
760                 if (tapi_ret !=
761                     TAPI_API_SUCCESS) {
762                         SETTING_TRACE_ERROR
763                             ("*** [ERR] tel_get_network_preferred_plmn. err=%d ***",
764                              tapi_ret);
765                 }
766         }
767
768 }
769
770 void setting_tapi_get_preferred_plmn_cb(TapiHandle *handle, int result, void *data, void *user_data)
771 {
772         SETTING_TRACE_BEGIN;
773         SETTING_TRACE(" - result = 0x%x", result);
774         ret_if(!user_data);
775         SettingNetworkUG *ad = user_data;
776
777         SETTING_TRACE_DEBUG("Case: TAPI_EVENT_NETWORK_GETPREFFEREDPLMN_CNF");
778         setting_network_popup_delete(ad);
779
780         if (result == TAPI_NETWORK_NO_ERR) {
781                 memcpy(&(ad->pref_list), data,sizeof(TelNetworkPreferredPlmnList_t));
782
783                 SETTING_TRACE("*********** ad->op_type = %d",ad->op_type);
784                 SETTING_TRACE("ad->pref_list.NumOfPrefPlmns:%d",ad->pref_list.NumOfPrefPlmns);
785                 switch (ad->op_type) {
786                 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE:
787                 {
788                         setting_network_preferred_network_delete_draw_network_list(ad);
789                         break;
790                 }
791                 default:
792                 {
793                         setting_network_preferred_network_refresh_view
794                             (ad);
795                         char info[MAX_DISPLAY_NAME_LEN_ON_UI] = { 0 };
796                         if (ad->pref_list.NumOfPrefPlmns > 1) {
797                                 snprintf(info, sizeof(info), "Get %d preferred networks",
798                                      ad->pref_list.NumOfPrefPlmns);
799                         } else {
800                                 snprintf(info, sizeof(info), "Get %d preferred network",
801                                      ad->pref_list.NumOfPrefPlmns);
802                         }
803                         setting_create_popup_without_btn(ad, ad->win_get, NULL, _(info), NULL, POPUP_INTERVAL, FALSE, FALSE);
804                         break;
805                 }
806                 }
807         } else {
808                 switch (ad->op_type) {
809                 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE:
810                 {
811                         setting_network_preferred_network_delete_failed
812                             (ad);
813                         break;
814                 }
815                 default:
816                 {
817                         setting_create_popup_without_btn(ad, ad->win_get, NULL, _(keyStr_Failed_Get_PreferNetwork), NULL, POPUP_INTERVAL, FALSE, FALSE);
818                         break;
819                 }
820                 }
821         }
822 }
823
824 void __register_network(Setting_GenGroupItem_Data* list_item)
825 {
826         SETTING_TRACE_BEGIN;
827         ret_if(list_item == NULL);
828         SETTING_TRACE("process item [%s]", list_item->keyStr);
829         SettingNetworkUG *ad = list_item->userdata;
830         ret_if(ad == NULL);
831
832         int tapi_ret = TAPI_API_INVALID_INPUT;
833
834         //cancel the searching operation
835
836         if (ad->data_search_network_item)
837         {
838             elm_object_item_del(ad->data_search_network_item->item);
839             ad->data_search_network_item = NULL;
840         }
841
842         if (ad->b_searching_network) {
843                 SETTING_TRACE("Sending tel_cancel_network_manual_search..");
844                 tapi_ret = tel_cancel_network_manual_search(ad->handle, setting_tapi_cancel_manual_search_cb, ad);
845                 if (tapi_ret != TAPI_API_SUCCESS) {
846                         SETTING_TRACE_ERROR("*** [ERR] tel_cancel_network_manual_search. "\
847                                             "tapi_ret=%d ***", tapi_ret);
848                 }
849                 else
850                 {
851                         ad->b_searching_network = FALSE;
852                 }
853         }
854
855         if (0 == safeStrCmp(list_item->keyStr, "IDS_COM_BODY_AUTOMATIC")) {
856                 ad->sel_net = TAPI_NETWORK_SELECTIONMODE_AUTOMATIC;
857                 SETTING_TRACE("Sending tel_select_network_automatic..");
858                 tapi_ret = tel_select_network_automatic(ad->handle, setting_tapi_set_plmn_mode_cb, ad);
859                 if (tapi_ret != TAPI_API_SUCCESS) {
860                     SETTING_TRACE_DEBUG("*** [ERR] tel_select_network_automatic."\
861                                             " tapi_ret=%d ***",tapi_ret);
862                 } else {
863                         ad->network_ug_pop = setting_create_popup_without_btn(ad, ad->win_get, NULL,
864                                                          _("IDS_COM_POP_PROCESSING"), NULL,
865                                                          0.0, TRUE, TRUE);
866
867                         if (ad->data_auto_network_item)
868                         {
869                                 ad->data_auto_network_item->sub_desc = (char *)g_strdup("....");
870                                 elm_genlist_item_item_class_update(ad->data_auto_network_item->item, &(itc_2text_1icon_6));
871                         }
872
873                         ad->b_set_manul_network = FALSE;
874                         ad->b_set_auto_network = TRUE;
875                         ad->sel_act = -1;//means "Automatic"
876                 }
877         } else {
878                 ad->sel_net = TAPI_NETWORK_SELECTIONMODE_MANUAL;
879                 ad->b_set_manul_network = TRUE;
880                 ad->b_set_auto_network = FALSE;
881
882                 int cnt = 0;
883                 SETTING_TRACE("ad->plmn_info.networks_count:%d",
884                                 ad->plmn_info.networks_count);
885                 char name[MAX_COMMON_BUFFER_LEN] = {0, };
886                 for(; cnt < ad->plmn_info.networks_count; cnt++)
887                 {
888                         SETTING_TRACE("ad->plmn_info.network_list[cnt].network_name:%s",
889                                         ad->plmn_info.network_list[cnt].network_name);
890                         memset(name, 0, MAX_COMMON_BUFFER_LEN);
891                         snprintf(name, MAX_COMMON_BUFFER_LEN, "%s (%s)",
892                                  ad->plmn_info.network_list[cnt].network_name,
893                                  setting_network_get_act_str(ad->plmn_info.network_list[cnt].access_technology));
894
895                         if(!safeStrCmp(list_item->keyStr, name))
896                         {
897                                 break;
898                         }
899                 }
900
901
902                 SETTING_TRACE_DEBUG("*** [Selected PLMN] name=%s, "\
903                                 "srv provider=%s, PLMN ID=%u, type=%d, "\
904                                 "access tech=%d ***",
905                                 ad->plmn_info.network_list[cnt].network_name,
906                                 ad->plmn_info.network_list[cnt].service_provider_name,
907                                 ad->plmn_info.network_list[cnt].plmn_id,
908                                 (int)(ad->plmn_info.network_list[cnt].type_of_plmn),
909                                 (int)(ad->plmn_info.network_list[cnt].access_technology));
910
911                 //ASYNC API - TAPI_EVENT_NETWORK_SELECT_CNF
912                 SETTING_TRACE("Sending tel_select_network_manual..");
913                 char plmn_id[MAX_COMMON_BUFFER_LEN] = {0, };
914                 snprintf(plmn_id, MAX_COMMON_BUFFER_LEN, "%d", ad->plmn_info.network_list[cnt].plmn_id);
915
916                 tapi_ret = tel_select_network_manual(ad->handle,
917                                         plmn_id, ad->plmn_info.network_list[cnt].access_technology,
918                                         setting_tapi_set_plmn_mode_cb, ad);
919                 if(tapi_ret != TAPI_API_SUCCESS)
920                 {
921                         SETTING_TRACE_DEBUG("%s*** [ERR] "\
922                                         "tel_select_network_manual. "\
923                                         "tapi_ret=%d ***%s", SETTING_FONT_RED,
924                                         tapi_ret, SETTING_FONT_BLACK);
925                         setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_ST_BODY_FAILED_TO_SELECT_NETWORK"), NULL, POPUP_INTERVAL, FALSE, FALSE);
926
927                         return;
928                 }
929                 else
930                 {
931                         ad->network_ug_pop = setting_create_popup_without_btn(ad, ad->win_get, NULL,
932                                                          _("IDS_COM_POP_PROCESSING"), NULL,
933                                                          0.0, TRUE, TRUE);
934                         ad->sel_act = ad->plmn_info.network_list[cnt].access_technology;
935                         FREE(ad->sel_network);
936                         ad->sel_network = strdup(ad->plmn_info.network_list[cnt].network_name);
937                 }
938         }
939 }
940
941
942 void __switch_automatic_network(Setting_GenGroupItem_Data *list_item)
943 {
944         SETTING_TRACE_BEGIN;
945         ret_if(!list_item || !list_item->userdata || !list_item->keyStr);
946         ret_if(0 != safeStrCmp(list_item->keyStr, "IDS_COM_BODY_AUTOMATIC"));
947         SettingNetworkUG *ad = list_item->userdata;
948         SETTING_TRACE("The value of toogle changes to be %d", list_item->chk_status);
949         if (list_item->chk_status) //set automatic
950         {
951                 Elm_Object_Item *last_item = elm_genlist_last_item_get(ad->genlist_sel_network);
952                 SETTING_TRACE("ad->data_auto_network_item->item:%p", ad->data_auto_network_item->item);
953                 for (;;) {
954                         last_item = elm_genlist_last_item_get(ad->genlist_sel_network);
955                         SETTING_TRACE("last_item:%p", last_item);
956                         if (last_item == ad->data_auto_network_item->item) {
957                                 break;
958                         }
959                         elm_object_item_del(last_item);
960                 }
961
962                 __register_network(list_item);
963         }
964         else //select a plmn
965         {
966                 //__register_network(list_item);
967                 int tapi_ret;
968                 //searching list
969                 tapi_ret = tel_search_network(ad->handle, setting_tapi_search_network_cb, ad); //ASYNC API - TAPI_EVENT_NETWORK_SEARCH_CNF
970                 if(tapi_ret != TAPI_API_SUCCESS) { // error handling..
971                         SETTING_TRACE_ERROR("%s*** [ERR] tel_search_network. tapi_ret=%d ***%s", SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
972                         setting_create_popup_without_btn(ad, ad->win_get, NULL, _(STR_SETTING_OPERATION_FAILED), NULL, POPUP_INTERVAL, FALSE, FALSE);
973
974                         // put error handler on the end of this function.
975                         //rollback..
976                         list_item->chk_status = TRUE;
977                         elm_check_state_set(list_item->eo_check, list_item->chk_status);
978                         return;
979                 }
980                 ad->b_searching_network = TRUE;
981                 ad->data_search_network_item = setting_create_Gendial_field_1radio(
982                                                                 ad->genlist_sel_network,
983                                                                 &itc_1text_2icon_2,
984                                                                 NULL, NULL,
985                                                                 SWALLOW_Type_1RADIO_1SEARCH,
986                                                                 ad->chk_sel, -1, NULL, NULL);
987                 if (ad->data_auto_network_item)
988                 {
989                         elm_genlist_item_item_class_update(ad->data_auto_network_item->item, &(itc_2text_1icon_7));
990                 }
991         }
992 }
993
994 void setting_network_select_network_chk_changed(void *data, Evas_Object *obj, void *event_info)
995 {
996         SETTING_TRACE_BEGIN;
997         retm_if(data == NULL || obj == NULL, "Parameter is NULL");
998         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
999         if (0 == safeStrCmp(list_item->keyStr, "IDS_COM_BODY_AUTOMATIC"))
1000         {
1001                 list_item->chk_status = elm_check_state_get(obj);
1002                 __switch_automatic_network(list_item);
1003         }
1004         else //"IDS_COM_BODY_AUTOMATIC"
1005         {
1006                 list_item->chk_status = elm_radio_value_get(obj);
1007                 SETTING_TRACE("The value of radio changes to be %d", list_item->chk_status);
1008                 __register_network(list_item);
1009         }
1010
1011 }
1012
1013
1014 void setting_network_Gendial_select_plmn_cb(void *data, Evas_Object *obj, void *event_info)
1015 {
1016         SETTING_TRACE_BEGIN;
1017         retm_if(data == NULL || event_info == NULL, "Parameter is NULL");
1018
1019         SettingNetworkUG *ad = (SettingNetworkUG*)data;
1020         Elm_Object_Item *item = (Elm_Object_Item*)event_info;
1021         elm_genlist_item_selected_set(item, 0);
1022         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data*)elm_object_item_data_get(item);
1023
1024         SETTING_TRACE("list_item->keyStr:%s", list_item->keyStr);
1025         if (0 == safeStrCmp(list_item->keyStr, "IDS_COM_BODY_AUTOMATIC"))
1026         {
1027                 list_item->chk_status = !elm_check_state_get(list_item->eo_check);
1028                 elm_check_state_set(list_item->eo_check, list_item->chk_status);
1029                 __switch_automatic_network(list_item);
1030                 return;
1031         }
1032         else
1033         {
1034                 int old_chk_status = elm_radio_value_get(ad->chk_sel);
1035                 if (old_chk_status != list_item->chk_status)
1036                 {
1037                         SETTING_TRACE("The value of radio changes to be %d",
1038                                         list_item->chk_status);
1039                         elm_radio_value_set(ad->chk_sel, list_item->chk_status);
1040                         __register_network(list_item);
1041                 }
1042         }
1043 }
1044 void setting_network_update_sel_network(void *data)
1045 {
1046         SETTING_TRACE_BEGIN;
1047         SettingNetworkUG *ad = data;
1048         SETTING_TRACE("ad->sel_net:%d", ad->sel_net);
1049         SETTING_TRACE("ad->sel_network:%s", ad->sel_network);
1050         SETTING_TRACE("sel_act = [%s(%d)]", setting_network_get_act_str(ad->sel_act),ad->sel_act);
1051         
1052         if (ad->data_auto_network_item) {
1053                 if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == ad->sel_net)
1054                 {
1055                    SETTING_TRACE_DEBUG("After set as Automatic, update "\
1056                                    "ad->data_auto_network_item to be [%s]",
1057                                    ad->sel_network);
1058                    ad->data_auto_network_item->sub_desc = (char *)g_strdup(_(ad->sel_network));
1059                     elm_object_item_data_set( ad->data_auto_network_item->item, ad->data_auto_network_item);
1060                     elm_genlist_item_update( ad->data_auto_network_item->item);
1061                 } else {
1062                 }
1063         }
1064
1065         if (ad->data_sel_net)//it indicates TAPI is not responsed in time
1066         {
1067                 char sel_network_desc[MAX_COMMON_BUFFER_LEN] = { 0, };
1068                 if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == ad->sel_net) {
1069                         snprintf(sel_network_desc, MAX_COMMON_BUFFER_LEN,
1070                                  "%s. %s", _("IDS_COM_BODY_AUTOMATIC"), _(ad->sel_network));
1071                 
1072                 } else {
1073                         snprintf(sel_network_desc, MAX_COMMON_BUFFER_LEN,
1074                                  "%s. %s (%s)", _("IDS_COM_BODY_MANUAL"), _(ad->sel_network),
1075                                  setting_network_get_act_str(ad->sel_act));
1076                 }
1077                 
1078                 SETTING_TRACE("sel_network_desc:%s", sel_network_desc);
1079                 
1080                 G_FREE(ad->data_sel_net->sub_desc);
1081                 ad->data_sel_net->sub_desc = (char *)g_strdup(_(sel_network_desc));
1082                 
1083                 elm_object_item_data_set(ad->data_sel_net->item, ad->data_sel_net);
1084                 elm_genlist_item_update(ad->data_sel_net->item);
1085         }
1086 }
1087
1088 const char *setting_network_get_act_str(TelNetworkSystemType_t type)
1089 {
1090         switch (type)
1091         {
1092             case TAPI_NETWORK_SYSTEM_NO_SRV: //0
1093                 return "NO SERVICE";
1094             case TAPI_NETWORK_SYSTEM_GSM: //1
1095                 return "GSM";
1096             case TAPI_NETWORK_SYSTEM_GPRS: //2
1097                 return "GPRS";
1098             case TAPI_NETWORK_SYSTEM_EGPRS: //3
1099                 return "EGPRS";
1100             case TAPI_NETWORK_SYSTEM_PCS1900: //4
1101                 return "PCS1900";
1102             case TAPI_NETWORK_SYSTEM_UMTS: //5
1103                 return "UMTS";
1104             case TAPI_NETWORK_SYSTEM_GSM_AND_UMTS:
1105                 return "GSM and UMTS";
1106             case TAPI_NETWORK_SYSTEM_HSDPA:
1107                 return "HSDPA";
1108             case TAPI_NETWORK_SYSTEM_IS95A:
1109                 return "IS95A";
1110             case TAPI_NETWORK_SYSTEM_IS95B:
1111                 return "IS95B";
1112             case TAPI_NETWORK_SYSTEM_CDMA_1X:
1113                 return "CDMA 1X";
1114             case TAPI_NETWORK_SYSTEM_EVDO_REV_0:
1115                 return "EV-DO rev0";
1116             case TAPI_NETWORK_SYSTEM_1X_EVDO_REV_0_HYBRID:
1117                 return "1X and EV-DO rev0";
1118             case TAPI_NETWORK_SYSTEM_EVDO_REV_A:
1119                 return "EV-DO revA";
1120             case TAPI_NETWORK_SYSTEM_1X_EVDO_REV_A_HYBRID:
1121                 return "1X and EV-DO revA";
1122             case TAPI_NETWORK_SYSTEM_EVDV:
1123                 return "EV-DV";
1124             default:
1125                 return "NO SERVICE";
1126         }
1127 }
1128
1129
1130 void __default_tapi_response_cb(TapiHandle *handle, int result, void *data, void *user_data)
1131 {
1132 }
1133
1134
1135 UG_MODULE_API int setting_plugin_reset(service_h service, void *priv)
1136 {
1137         SETTING_TRACE_BEGIN;
1138         int ret = 0;
1139         /* network         */
1140 #if SUPPORT_RUN_SYSTEM_COMMAND
1141         ret += excuteCmd(SETTING_POSTINST_FILE, 1, "network");
1142 #else
1143         ret += vconf_set_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, TAPI_NETWORK_SELECTIONMODE_AUTOMATIC);
1144         ret += vconf_set_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, 0);
1145         ret += vconf_set_int(VCONFKEY_SETAPPL_NETWORK_MODE_INT, TAPI_NETWORK_BAND_TYPE_ANY);
1146         ret += vconf_set_bool(VCONFKEY_3G_ENABLE, TRUE);
1147         ret += vconf_set_bool(VCONFKEY_SETAPPL_STATE_DATA_ROAMING_BOOL, TRUE);
1148 #endif
1149
1150         if (net_register_client((net_event_cb_t)__network_evt_cb, NULL) != NET_ERR_NONE) {
1151                 SETTING_TRACE_ERROR("net_register_client. failed");
1152         }
1153
1154         TapiHandle *tapi_handle = tel_init(NULL);
1155         if (tapi_handle) {
1156                 SETTING_TRACE_DEBUG("tel_init sucessfull");
1157                 //1.tel_select_network_automatic
1158                 int tapi_ret = tel_select_network_automatic(tapi_handle, __default_tapi_response_cb, NULL);
1159                 if (tapi_ret != TAPI_API_SUCCESS) {
1160                         ret++;
1161                         SETTING_TRACE_ERROR("tel_select_network_automatic. tapi_ret=%d", tapi_ret);
1162                 }
1163
1164                 //2.tel_set_network_band
1165                 tapi_ret = tel_set_network_band(tapi_handle, TAPI_NETWORK_BAND_MODE_ONLY,
1166                                                 TAPI_NETWORK_BAND_TYPE_ANY,
1167                                                  __default_tapi_response_cb, NULL);
1168                 if (tapi_ret != TAPI_API_SUCCESS) {
1169                         ret++;
1170                         SETTING_TRACE_ERROR("tel_set_network_band. tapi_ret=%d", tapi_ret);
1171                 }
1172
1173                 //3.don't need to receive
1174                 if (tel_deinit(tapi_handle) == TAPI_API_SUCCESS) {
1175                         SETTING_TRACE_DEBUG("tel_deinit sucessfull");
1176                 }
1177
1178         }
1179
1180
1181
1182         if (net_deregister_client() != NET_ERR_NONE) {
1183                 ret++;
1184                 SETTING_TRACE_ERROR("net_deregister_client failed");
1185         }
1186
1187         //Reset connections info..
1188         ret += excuteCmd("/usr/bin/dbus-send", 1, NET_CON_RESET_DBUS_PARA);
1189
1190         SETTING_TRACE_END;
1191         return ret;
1192 }