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