Tizen release 1.0
[apps/home/settings.git] / setting-network / src / setting-network.c
1 /*
2  * setting
3  *
4  * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
5  *
6  * This file is part of org.tizen.setting
7  * Written by Hyejin Kim <hyejin0906.kim@samsung.com>
8  *
9  * PROPRIETARY/CONFIDENTIAL
10  * 
11  * This software is the confidential and proprietary information of 
12  * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
13  * disclose such Confidential Information and shall use it only in
14  * accordance with the terms of the license agreement you entered
15  * into with SAMSUNG ELECTRONICS.
16  *
17  * SAMSUNG make no representations or warranties about the suitability 
18  * of the software, either express or implied, including but not limited
19  * to the implied warranties of merchantability, fitness for a particular
20  * purpose, or non-infringement. SAMSUNG shall not be liable for any
21  * damages suffered by licensee as a result of using, modifying or
22  * distributing this software or its derivatives.
23  *
24  */
25 #include <setting-network.h>
26 #include <setting-network-preferred-network-delete.h>
27 #include <setting-network-preferred-network.h>
28
29 #ifndef UG_MODULE_API
30 #define UG_MODULE_API __attribute__ ((visibility("default")))
31 #endif
32 int setting_network_subscribe_tapi_events(void *data);
33 int setting_network_unsubscribe_tapi_events(void *data);
34
35 static void __selected_network_change_cb(keynode_t *key, void *data)
36 {
37         SETTING_TRACE_BEGIN;
38         setting_retm_if(!data, "!data");
39         SettingNetworkUG *ad = data;
40         char *value = vconf_keynode_get_str(key);
41         char *vconf_name = vconf_keynode_get_name(key);
42         if (!safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_NWNAME)) {
43                 if (NULL == value) {
44                     value = "IDS_ST_BODY_NOSERVICE";
45                 }
46                 SETTING_TRACE("value:%s", value);
47
48                 if (ad->data_auto_network_item) {
49                         if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == ad->sel_net)
50                         {
51                            elm_genlist_item_item_class_update(
52                                 ad->data_auto_network_item->item, 
53                                 &ad->itc_2text_2icon_3);
54                 
55                            ad->data_auto_network_item->sub_desc = 
56                                 (char *)g_strdup(_(value));
57                             elm_object_item_data_set( ad->data_auto_network_item->item, ad->data_auto_network_item);
58                             elm_genlist_item_update( ad->data_auto_network_item->item);
59                         }  
60                 }
61                 char sub_desc[MAX_COMMON_BUFFER_LEN] = { 0, };
62                 if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == ad->sel_net) {
63                         snprintf(sub_desc, MAX_COMMON_BUFFER_LEN, 
64                                  "%s. %s", _("IDS_COM_BODY_AUTOMATIC"),
65                                  _(value));
66                         
67                 } else {
68                         snprintf(sub_desc, MAX_COMMON_BUFFER_LEN, 
69                                  "%s. %s", _("IDS_COM_BODY_MANUAL"),
70                                  _(value));
71                 }
72                 if (ad->data_sel_net && !isEmptyStr(sub_desc)) {
73                     ad->data_sel_net->sub_desc = 
74                                 (char *)g_strdup(sub_desc);
75                     elm_object_item_data_set(ad->data_sel_net->item, ad->data_sel_net);
76                     elm_genlist_item_update(ad->data_sel_net->item);
77                 }
78
79         }
80 }
81
82
83 static void setting_network_ug_cb_resize(void *data, Evas *e,
84                                          Evas_Object *obj, void *event_info)
85 {
86         SettingNetworkUG *ad = (SettingNetworkUG *) data;
87         setting_view_update(&setting_view_network_main, ad);
88 }
89
90 void __network_evt_cb(net_event_info_t *event_cb, void *data)
91 {
92         SETTING_TRACE_BEGIN;
93         ret_if(!event_cb || !data);
94
95         SETTING_TRACE("event_cb->Event:%d", event_cb->Event);
96         SETTING_TRACE("event_cb->ProfileName:%s", event_cb->ProfileName);
97         SETTING_TRACE("event_cb->Error:%d", event_cb->Error);
98 }
99 static void *setting_network_ug_on_create(struct ui_gadget *ug,
100                                           enum ug_mode mode, bundle *data,
101                                           void *priv)
102 {
103         setting_retvm_if((!ug || !priv), NULL, "!ug || !priv");
104
105         SettingNetworkUG *networkUG = priv;
106         networkUG->ug = ug;
107
108         networkUG->win_main_layout = (Evas_Object *) ug_get_parent_layout(ug);
109         networkUG->win_get = (Evas_Object *) ug_get_window();
110         evas_object_show(networkUG->win_main_layout);
111         networkUG->evas = evas_object_evas_get(networkUG->win_main_layout);
112
113         setting_retvm_if(networkUG->win_main_layout == NULL, NULL,
114                          "cannot get main window ");
115
116
117         /* init */
118         ecore_imf_init();
119
120         /* subscribe tapi events */
121         if (setting_network_subscribe_tapi_events(networkUG) != SETTING_RETURN_SUCCESS) {
122                 SETTING_TRACE_DEBUG
123                     ("%s*** [ERR] setting_network_subscribe_tapi_events. ***%s",
124                      SETTING_FONT_RED, SETTING_FONT_BLACK);
125         }
126
127         int err_code = -1;
128         err_code = net_register_client((net_event_cb_t)__network_evt_cb, networkUG);
129         if (err_code != NET_ERR_NONE) {
130                 SETTING_TRACE_DEBUG
131                     ("%s*** [ERR] net_register_client. err=%d ***%s",
132                      SETTING_FONT_RED, err_code, SETTING_FONT_BLACK);
133         }
134
135         /* register view node table */
136         setting_view_node_table_intialize();
137         setting_view_node_table_register(&setting_view_network_main, NULL);
138         setting_view_node_table_register(&setting_view_network_select_network,
139                                          &setting_view_network_main);
140         setting_view_node_table_register(&setting_view_network_main_help,
141                                          &setting_view_network_main);
142         setting_view_node_table_register
143             (&setting_view_network_connection_create,
144              &setting_view_network_main);
145         setting_view_node_table_register(&setting_view_network_3gcon,
146                                          &setting_view_network_main);
147
148         setting_view_node_table_register
149             (&setting_view_network_preferred_network,
150              &setting_view_network_main);
151         setting_view_node_table_register
152             (&setting_view_network_preferred_network_list,
153              &setting_view_network_preferred_network);
154         setting_view_node_table_register
155             (&setting_view_network_preferred_network_new,
156              &setting_view_network_preferred_network);
157         setting_view_node_table_register
158             (&setting_view_network_preferred_network_edit,
159              &setting_view_network_preferred_network);
160         setting_view_node_table_register
161             (&setting_view_network_preferred_network_delete,
162              &setting_view_network_preferred_network);
163
164         setting_create_Gendial_itc("dialogue/1text.1icon.2",
165                                    &(networkUG->itc_1text_1icon_2));
166         setting_create_Gendial_itc("dialogue/1text", &(networkUG->itc_1text));
167         setting_create_Gendial_itc("dialogue/2text.3",
168                                    &(networkUG->itc_2text_2));
169         setting_create_Gendial_itc("dialogue/title",
170                                    &(networkUG->itc_group_item));
171         setting_create_Gendial_itc("dialogue/1text.1icon",
172                                    &(networkUG->itc_1text_1icon));
173         setting_create_Gendial_itc("select_all", &(networkUG->itc_sel_all));
174         setting_create_Gendial_itc("1text.1icon.2",
175                                    &(networkUG->itc_1icon_1text));
176
177         setting_create_Gendial_itc("dialogue/1icon",
178                                    &(networkUG->itc_variable_height));
179         setting_create_Gendial_itc("multiline/1text",
180                                    &(networkUG->itc_bg_1icon));
181         networkUG->itc_seperator.item_style = "dialogue/separator/21/with_line";
182         networkUG->itc_seperator.func.text_get = NULL;
183         networkUG->itc_seperator.func.content_get = NULL;
184         networkUG->itc_seperator.func.state_get = NULL;
185         networkUG->itc_seperator.func.del = NULL;
186
187         setting_create_Gendial_itc("dialogue/2text.3/expandable",
188                                    &(networkUG->itc_2text_3_parent));
189         setting_create_Gendial_itc("dialogue/1text.1icon/expandable2",
190                                    &(networkUG->itc_1icon_1text_sub));
191         setting_create_Gendial_itc("dialogue/1text.2icon.2", 
192                                 &(networkUG->itc_1text_2icon));
193         setting_create_Gendial_itc("dialogue/2text.2icon.3", 
194                                 &(networkUG->itc_2text_2icon_3));
195
196         /*  creating a view. */
197         setting_view_node_set_cur_view(&setting_view_network_main);
198         setting_view_create(&setting_view_network_main, (void *)networkUG);
199         evas_object_event_callback_add(networkUG->win_main_layout,
200                                        EVAS_CALLBACK_RESIZE,
201                                        setting_network_ug_cb_resize, networkUG);
202         
203         (void)vconf_notify_key_changed(VCONFKEY_TELEPHONY_NWNAME,
204                                      __selected_network_change_cb, networkUG);
205         return networkUG->ly_main;
206 }
207
208
209 static void setting_network_ug_on_start(struct ui_gadget *ug, bundle *data,
210                                         void *priv)
211 {
212 }
213
214 static void setting_network_ug_on_pause(struct ui_gadget *ug, bundle *data,
215                                         void *priv)
216 {
217 }
218
219 static void setting_network_ug_on_resume(struct ui_gadget *ug, bundle *data,
220                                          void *priv)
221 {
222 }
223
224 static void setting_network_ug_on_destroy(struct ui_gadget *ug, bundle *data,
225                                           void *priv)
226 {
227         SETTING_TRACE_BEGIN;
228         setting_retm_if((!ug || !priv), "!ug || !priv");
229         SettingNetworkUG *networkUG = priv;
230         
231         (void)vconf_ignore_key_changed(VCONFKEY_TELEPHONY_NWNAME,
232                                        __selected_network_change_cb);
233         evas_object_event_callback_del(networkUG->win_main_layout, EVAS_CALLBACK_RESIZE, setting_network_ug_cb_resize); /* fix flash issue for gallery */
234         networkUG->ug = ug;
235         FREE(networkUG->prof_list);
236         /* release */
237         ecore_imf_shutdown();
238
239         /*  unregister dnet client */
240         int err_code = net_deregister_client();
241         if (err_code != NET_ERR_NONE) {
242                 SETTING_TRACE_DEBUG
243                     ("%s*** [ERR] net_deregister_client. err=%d ***%s",
244                      SETTING_FONT_RED, err_code, SETTING_FONT_BLACK);
245         }
246         /* unsubscribe sim events */
247         if (setting_network_unsubscribe_tapi_events(networkUG) != SETTING_RETURN_SUCCESS) {
248                 SETTING_TRACE_DEBUG
249                     ("%s*** [ERR] setting_network_unsubscribe_tapi_events. ***%s",
250                      SETTING_FONT_RED, SETTING_FONT_BLACK);
251         }
252         SETTING_TRACE("Unsubscribing TAPI event is succeeded");
253
254         setting_network_popup_delete(networkUG);
255         /*  delete the allocated objects. */
256         setting_view_destroy(&setting_view_network_select_network, networkUG);
257         setting_view_destroy(&setting_view_network_main_help, networkUG);
258         setting_view_destroy(&setting_view_network_connection_create,
259                              networkUG);
260         setting_view_destroy(&setting_view_network_3gcon, networkUG);
261
262         setting_view_destroy(&setting_view_network_preferred_network,
263                              networkUG);
264         setting_view_destroy(&setting_view_network_preferred_network_list,
265                              networkUG);
266         setting_view_destroy(&setting_view_network_preferred_network_new,
267                              networkUG);
268         setting_view_destroy(&setting_view_network_preferred_network_edit,
269                              networkUG);
270         setting_view_destroy(&setting_view_network_preferred_network_delete,
271                              networkUG);
272         setting_view_destroy(&setting_view_network_main, networkUG);
273
274         if (NULL != ug_get_layout(networkUG->ug)) {
275                 evas_object_hide((Evas_Object *) ug_get_layout(networkUG->ug));
276                 evas_object_del((Evas_Object *) ug_get_layout(networkUG->ug));
277         }
278
279         SETTING_TRACE_END;
280 }
281
282 static void setting_network_ug_on_message(struct ui_gadget *ug, bundle *msg,
283                                           bundle *data, void *priv)
284 {
285         SETTING_TRACE_BEGIN;
286 }
287
288 static void setting_network_ug_on_event(struct ui_gadget *ug,
289                                         enum ug_event event, bundle *data,
290                                         void *priv)
291 {
292         SETTING_TRACE_BEGIN;
293         switch (event) {
294         case UG_EVENT_LOW_MEMORY:
295                 break;
296         case UG_EVENT_LOW_BATTERY:
297                 break;
298         case UG_EVENT_LANG_CHANGE:
299                 break;
300         case UG_EVENT_ROTATE_PORTRAIT:
301                 break;
302         case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
303                 break;
304         case UG_EVENT_ROTATE_LANDSCAPE:
305                 break;
306         case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
307                 break;
308         case UG_EVENT_REGION_CHANGE:
309                 break;
310         default:
311                 break;
312         }
313 }
314
315 static void setting_network_ug_on_key_event(struct ui_gadget *ug,
316                                             enum ug_key_event event,
317                                             bundle *data, void *priv)
318 {
319         SETTING_TRACE_BEGIN;
320         SettingNetworkUG *ad = (SettingNetworkUG *) priv;
321         if (!ug)
322                 return;
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                                 setting_view_cb_at_endKey(ad);
333                         }
334                 }
335                 break;
336         default:
337                 break;
338         }
339 }
340
341 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
342 {
343         SETTING_TRACE_BEGIN;
344         SettingNetworkUG *networkUG = calloc(1, sizeof(SettingNetworkUG));
345         setting_retvm_if(!networkUG, -1, "Create SettingNetworkUG obj failed");
346
347         ops->create = setting_network_ug_on_create;
348         ops->start = setting_network_ug_on_start;
349         ops->pause = setting_network_ug_on_pause;
350         ops->resume = setting_network_ug_on_resume;
351         ops->destroy = setting_network_ug_on_destroy;
352         ops->message = setting_network_ug_on_message;
353         ops->event = setting_network_ug_on_event;
354         ops->key_event = setting_network_ug_on_key_event;
355         ops->priv = networkUG;
356         ops->opt = UG_OPT_INDICATOR_ENABLE;
357
358         return 0;
359 }
360
361 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
362 {
363         SETTING_TRACE_BEGIN;
364         struct SettingNetworkUG *networkUG;
365         setting_retm_if(!ops, "ops == NULL");
366
367         networkUG = ops->priv;
368         FREE(networkUG);
369 }
370
371 /* ***************************************************
372  *
373  *general func
374  *
375  ***************************************************/
376
377
378 int setting_network_subscribe_tapi_events(void *data)
379 {
380         SETTING_TRACE_BEGIN;
381         retv_if(data == NULL, SETTING_TAPI_REG_EVENT_ECORE_ERR);
382         SettingNetworkUG *ad = (SettingNetworkUG *) data;
383         
384         int i = 0;
385         int ret = SETTING_RETURN_SUCCESS;
386         int iNumOfSSEvt = 0;
387         int tapi_ret = TAPI_API_SUCCESS;
388
389         int EvtList[] = {
390                 TAPI_EVENT_NETWORK_SEARCH_CNF,
391                 TAPI_EVENT_NETWORK_SELECT_CNF,
392                 TAPI_EVENT_NETWORK_SETNWBAND_CNF,
393                 TAPI_EVENT_NETWORK_GETNWBAND_CNF,
394                 TAPI_EVENT_NETWORK_GETSELECTIONMODE_CNF,
395                 TAPI_EVENT_NETWORK_GETPREFFEREDPLMN_CNF,
396                 TAPI_EVENT_NETWORK_SETPREFFEREDPLMN_CNF
397         };
398
399         if (tel_init() != TAPI_API_SUCCESS) {
400                 SETTING_TRACE_DEBUG("%s*** [ERR] tel_init. ***%s",
401                                     SETTING_FONT_RED, SETTING_FONT_BLACK);
402                 return SETTING_TAPI_INIT_ECORE_ERR;
403         }
404         /* iNumOfSSEvt = sizeof(EvtList)/sizeof(TelTapiEventType_t); */
405         iNumOfSSEvt = sizeof(EvtList) / sizeof(int);
406
407         for (i = 0; i < iNumOfSSEvt; i++) {
408                 tapi_ret =
409                     tel_register_event(EvtList[i], &(ad->subs_id_net[i]),
410                                        (TelAppCallback) &
411                                        setting_network_tapi_event_callback,
412                                        data);
413                 if (tapi_ret != TAPI_API_SUCCESS)
414                         SETTING_TRACE_ERROR
415                             ("passing event[%d] to invoke tel_register_event failed[%d]",
416                              ad->subs_id_net[i], tapi_ret);
417         }
418
419         if (tel_register_app_name("org.tizen.setting") != TAPI_API_SUCCESS) {
420                 SETTING_TRACE_ERROR("tel_register_app_name failed[tapi_ret=%d]",
421                                     tapi_ret);
422                 return SETTING_TAPI_REG_EVENT_ECORE_ERR;
423         }
424
425         return ret;
426 }
427
428 int setting_network_unsubscribe_tapi_events(void *data)
429 {
430         SETTING_TRACE_BEGIN;
431         retv_if(data == NULL, SETTING_TAPI_DEREG_EVENT_ECORE_ERR);
432         SettingNetworkUG *ad = (SettingNetworkUG *) data;
433
434         int i = 0;
435         int ret = SETTING_RETURN_SUCCESS;
436         int iNumOfSSEvt = 0;
437         int tapi_ret = TAPI_API_SUCCESS;
438
439         int EvtList[] = {
440                 TAPI_EVENT_NETWORK_SEARCH_CNF,
441                 TAPI_EVENT_NETWORK_SELECT_CNF,
442                 TAPI_EVENT_NETWORK_SETNWBAND_CNF,
443                 TAPI_EVENT_NETWORK_GETNWBAND_CNF,
444                 TAPI_EVENT_NETWORK_GETSELECTIONMODE_CNF,
445                 TAPI_EVENT_NETWORK_GETPREFFEREDPLMN_CNF,
446                 TAPI_EVENT_NETWORK_SETPREFFEREDPLMN_CNF
447         };
448
449         iNumOfSSEvt = sizeof(EvtList) / sizeof(int);
450
451         for (i = 0; i < iNumOfSSEvt; i++) {
452                 tapi_ret = tel_deregister_event(ad->subs_id_net[i]);
453
454                 if (tapi_ret != TAPI_API_SUCCESS) {
455                         SETTING_TRACE_ERROR
456                             ("*** [ERR] tel_deregister_event. subs_id_net=%d, tapi_ret=%d ***",
457                              ad->subs_id_net[i], tapi_ret);
458                         continue;
459                 }
460         }
461
462         tapi_ret = tel_deinit();
463         if (tapi_ret != TAPI_API_SUCCESS) {
464                 SETTING_TRACE_ERROR("tel_deinit failed[tapi_ret = %d]",
465                                     tapi_ret);
466                 return SETTING_TAPI_DEREG_EVENT_ECORE_ERR;
467         }
468         return ret;
469 }
470
471 static void
472 setting_network_popup_response_cb(void *data, Evas_Object *obj,
473                                   void *event_info)
474 {
475         SETTING_TRACE_BEGIN;
476         if (obj) {
477                 evas_object_del(obj);
478                 obj = NULL;
479         }
480         SettingNetworkUG *ad = (SettingNetworkUG *) data;
481         ad->pop_del = NULL;
482         ad->pop_reg = NULL;
483         ad->pop_save = NULL;
484         ad->network_ug_pop = NULL;
485         SETTING_TRACE_END;
486 }
487
488 void setting_network_popup_delete(void *data)
489 {
490         SETTING_TRACE_BEGIN;
491         /* error check */
492         retm_if(data == NULL,
493                 "setting_network_tapi_popup_create Data parameter is NULL");
494         SettingNetworkUG *ad = (SettingNetworkUG *) data;
495         if (ad->network_ug_pop != NULL) {
496                 evas_object_del(ad->network_ug_pop);
497                 ad->network_ug_pop = NULL;
498         }
499 }
500
501 void setting_network_popup_create(void *data, char *str_content, bool keep)
502 {
503         SETTING_TRACE_BEGIN;
504         /* error check */
505         retm_if(data == NULL,
506                 "setting_network_tapi_popup_create Data parameter is NULL");
507         SettingNetworkUG *ad = (SettingNetworkUG *) data;
508         if (ad->network_ug_pop != NULL) {
509                 elm_popup_timeout_set(ad->network_ug_pop, 0);
510                 setting_network_popup_update(data, str_content, keep);
511         } else {
512                 ad->network_ug_pop =
513                     setting_create_popup_without_btn(ad, ad->win_get, str_content, NULL,
514                                          setting_network_popup_response_cb,
515                                          0.0);
516                 if (!keep) {
517                         elm_popup_timeout_set(ad->network_ug_pop, 2.0);
518                 }
519         }
520 }
521
522 void setting_network_popup_update(void *data, char *str_content, bool keep)
523 {
524         SETTING_TRACE_BEGIN;
525         /* error check */
526         retm_if(data == NULL,
527                 "setting_network_tapi_popup_create Data parameter is NULL");
528         SettingNetworkUG *ad = (SettingNetworkUG *) data;
529         if (ad->network_ug_pop == NULL) {
530                 setting_network_popup_create(ad, str_content, keep);
531                 return;
532         }
533         if (str_content) {
534                 char r_str_text[HELP_MSG_BUFF_SIZE] = { 0, };
535                 snprintf(r_str_text, HELP_MSG_BUFF_SIZE-1-strlen("</align>"), "<align=center>%s", str_content);
536                 g_strlcat(r_str_text, "</align>", HELP_MSG_BUFF_SIZE);
537                 elm_object_text_set(ad->network_ug_pop, r_str_text);
538         }
539         if (!keep) {
540                 elm_popup_timeout_set(ad->network_ug_pop, 2.0);
541         }
542 }
543
544 Evas_Object *setting_network_create_register_popup(void *data)
545 {
546         SETTING_TRACE_BEGIN;
547         /* error check */
548         retvm_if(data == NULL, NULL,
549                  "[Setting > Network] Data parameter is NULL");
550
551         SettingNetworkUG *ad = (SettingNetworkUG *) data;
552         Evas_Object *popup = NULL;
553         popup =
554             setting_create_popup_without_btn(ad, ad->win_get, _("Registering"), NULL,
555                                  setting_network_popup_response_cb, POPUP_INTERVAL);
556         ad->pop_reg = popup;
557         return popup;
558 }
559
560 Evas_Object *setting_network_preferred_network_create_save_popup(void *data)
561 {
562         SETTING_TRACE_BEGIN;
563         /* error check */
564         retvm_if(data == NULL, NULL,
565                  "[Setting > Network] Data parameter is NULL");
566
567         SettingNetworkUG *ad = (SettingNetworkUG *) data;
568         Evas_Object *popup = NULL;
569         popup =
570             setting_create_popup_without_btn(ad, ad->win_get, _("IDS_ST_POP_SAVING"), NULL,
571                                  setting_network_popup_response_cb, POPUP_INTERVAL);
572         ad->pop_save = popup;
573         return popup;
574 }
575
576 Evas_Object *setting_network_preferred_network_create_delete_popup(void *data)
577 {
578         SETTING_TRACE_BEGIN;
579         /* error check */
580         retvm_if(data == NULL, NULL,
581                  "[Setting > Network] Data parameter is NULL");
582
583         SettingNetworkUG *ad = (SettingNetworkUG *) data;
584         Evas_Object *popup = NULL;
585         popup =
586             setting_create_popup_without_btn(ad, ad->win_get, _("IDS_COM_SK_DELETE"), NULL,
587                                  setting_network_popup_response_cb, 0);
588         ad->pop_del = popup;
589         return popup;
590 }
591
592 Evas_Object *setting_network_select_network_create_search_popup(void *data)
593 {
594         SETTING_TRACE_BEGIN;
595         /* error check */
596         retv_if(data == NULL, NULL);
597
598         SettingNetworkUG *ad = (SettingNetworkUG *) data;
599         Evas_Object *popup = NULL;
600         popup =
601             setting_create_popup_without_btn(ad, ad->win_get, _("IDS_COM_POP_SEARCHING"),
602                                  NULL, NULL, 0);
603         ad->pop_sch = popup;
604         return popup;
605 }
606
607 void setting_network_preferred_network_create_isf(Evas_Object *entry)
608 {
609         SETTING_TRACE_BEGIN;
610         ecore_imf_init();
611         SETTING_TRACE_DEBUG
612             ("Given focus to the entry and then soft keyboard will be shown automatically !");
613         elm_object_focus_set(entry, EINA_TRUE);
614 }
615
616 /* ***************************************************
617  *
618  *call back func
619  *
620  ***************************************************/
621
622 #ifdef Status
623 #undef Status
624 #endif
625
626 void setting_network_tapi_event_callback(TelTapiEvent_t *event, void *data)
627 {
628         SETTING_TRACE_BEGIN;
629         ret_if(data == NULL || event == NULL);
630         SETTING_TRACE("event->EventClass=\t%d", (int)(event->EventClass));
631         SETTING_TRACE("event->EventType=\t%d", event->EventType);
632         SETTING_TRACE("event->Status=\t%d", event->Status);
633         SETTING_TRACE("event->RequestId=\t%d", event->RequestId);
634         SettingNetworkUG *ad = (SettingNetworkUG *) data;
635
636         switch (event->EventClass) {
637         case TAPI_EVENT_CLASS_NETWORK:
638         {
639                 switch (event->EventType) {
640                 /* search network list */
641                 case TAPI_EVENT_NETWORK_SEARCH_CNF:
642                 {
643                     SETTING_TRACE_DEBUG("Case: TAPI_EVENT_NETWORK_SEARCH_CNF");
644
645                     setting_network_popup_delete(ad);
646                     ad->pop_sch = NULL;
647                     
648                     if (!ad->b_searching_network) {
649                         /*The requeset has already been canceled, don't do detail process*/
650                         return;
651                     }
652                     bool need_reset_flag = FALSE;
653                     if (ad->data_search_network_item)
654                     {
655                         if (ad->data_search_network_item->chk_status == 
656                             elm_radio_value_get(ad->chk_sel)) {
657                             elm_radio_value_set(ad->chk_sel, -1);//let select nothing
658                             need_reset_flag = TRUE;
659                         }
660                         elm_object_item_del(ad->data_search_network_item->item);
661                         ad->data_search_network_item = NULL;
662                     }
663
664                     ad->b_searching_network = FALSE;
665                     
666                     if (event->Status == TAPI_NETWORK_NO_ERR) {
667                         int cnt = 0;
668                         int valid_cnt = 0;
669                         ret_if(NULL == event->pData);
670                         memcpy(&(ad->plmn_info), event->pData, 
671                                 sizeof(TelNetworkPlmnList_t));
672
673                         Setting_GenGroupItem_Data *item_data = NULL;
674                         
675                         const char *pa_net_name = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
676                         SETTING_TRACE("VCONFKEY_TELEPHONY_NWNAME:pa_net_name:%s", pa_net_name);
677                         //SETTING_TRACE("Selected network name:%s",ad->data_selected_network_item->keyStr);
678                         while(cnt < ad->plmn_info.networks_count) {
679                                 SETTING_TRACE("network name from TAPI[%d]:%s", cnt, ad->plmn_info.network_list[cnt].network_name);
680                                 if (TAPI_FORBIDDEN_PLMN == 
681                                    ad->plmn_info.network_list[cnt].type_of_plmn) {
682                                         cnt++;
683                                         continue;
684                                 }
685                                 
686                                 if (ad->data_selected_network_item && 
687                                     0 == safeStrCmp(ad->data_selected_network_item->keyStr,
688                                                     ad->plmn_info.network_list[cnt].network_name)) {
689                                         cnt++;
690                                         continue;
691                                 }
692                                 item_data = setting_create_Gendial_field_1radio(
693                                                         ad->genlist_sel_network,
694                                                         &(ad->itc_1text_2icon), 
695                                                         setting_network_Gendial_select_plmn_cb, 
696                                                         ad,
697                                                         SWALLOW_Type_1RADIO,
698                                                         ad->chk_sel, 
699                                                         TAPI_NETWORK_SELECTIONMODE_MANUAL+valid_cnt+1,
700                                                         ad->plmn_info.network_list[cnt].network_name, 
701                                                         setting_network_select_network_chk_changed);
702                                 if (NULL == item_data)
703                                 {
704                                         SETTING_TRACE_ERROR("Failed to calloc memory");
705                                         cnt++;
706                                         continue;
707                                 }
708                                 item_data->userdata = ad;
709                                 if (need_reset_flag &&
710                                     0 == safeStrCmp(pa_net_name, ad->plmn_info.network_list[cnt].network_name))
711                                 {
712                                         elm_radio_value_set(ad->chk_sel, item_data->chk_status);//let select nothing
713                                 }
714                                 cnt++;
715                                 valid_cnt++;
716                         }
717                         FREE(pa_net_name);              
718         
719                         SETTING_TRACE("Found %d valid networks in total[%d]", valid_cnt, cnt);
720                         setting_network_popup_update(ad, _("Searched"), FALSE);
721                     } else {                                                            
722                         setting_network_popup_update(ad, _("Searching network failed"), FALSE);
723                     }
724                     break;
725                 }
726                 /*set plmn*/
727                 case TAPI_EVENT_NETWORK_SELECT_CNF:
728                 {
729                         SETTING_TRACE_DEBUG("Case: set plmn(ad->sel_net:%d)",
730                                             ad->sel_net);
731
732                         if ((TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == ad->sel_net
733                             && !ad->b_set_auto_network) || 
734                             (TAPI_NETWORK_SELECTIONMODE_MANUAL == ad->sel_net
735                             && !ad->b_set_manul_network))
736                         {
737                                 /*The requeset has already been canceled, return directly*/
738                                 return;
739                         }
740
741                         if(event->Status != TAPI_NETWORK_NO_ERR) {/*roolback..*/
742                                 setting_network_popup_update(ad, 
743                                         _("Select network failed"), FALSE);
744                                 if (0 != vconf_get_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, &ad->sel_net)) {
745                                         SETTING_TRACE_ERROR("vconf get failed");
746                                 }
747                                 
748                                 setting_view_change(
749                                         &setting_view_network_select_network,
750                                         &setting_view_network_main, ad);
751
752                                 return;
753
754                         }
755                         setting_finish_progress_genlist_item(ad->data_selected_network_item);
756                         
757                         setting_network_popup_update(ad, _("Saved!"), FALSE);
758                         if (0 != vconf_set_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, ad->sel_net)) {
759                                 SETTING_TRACE_ERROR("vconf[%s] set failed");
760                         }
761                         const char *pa_net_name = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
762                         SETTING_TRACE("sel_net_name:%s", pa_net_name);
763                         if (NULL == pa_net_name) {
764                             pa_net_name = "IDS_ST_BODY_NOSERVICE";
765                         }
766                         
767                         if (ad->data_auto_network_item) {
768                                 if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == ad->sel_net)
769                                 {
770                                    elm_genlist_item_item_class_update(
771                                         ad->data_auto_network_item->item, 
772                                         &ad->itc_2text_2icon_3);
773
774                                    SETTING_TRACE_DEBUG("After set as Automatic, update "\
775                                                    "ad->data_auto_network_item to be [%s]", 
776                                                    pa_net_name);
777                                    ad->data_auto_network_item->sub_desc = 
778                                         (char *)g_strdup(_(pa_net_name));
779                                     elm_object_item_data_set( ad->data_auto_network_item->item, ad->data_auto_network_item);
780                                     elm_genlist_item_update( ad->data_auto_network_item->item);
781                                 } else {
782                                         elm_genlist_item_item_class_update(
783                                             ad->data_auto_network_item->item, 
784                                             &ad->itc_1text_2icon);
785                                 }
786                         }
787                         char sub_desc[MAX_COMMON_BUFFER_LEN] = { 0, };
788                         if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == ad->sel_net) {
789                                 snprintf(sub_desc, MAX_COMMON_BUFFER_LEN, 
790                                          "%s. %s", _("IDS_COM_BODY_AUTOMATIC"),
791                                          _(pa_net_name));
792                                 
793                         } else {
794                                 snprintf(sub_desc, MAX_COMMON_BUFFER_LEN, 
795                                          "%s. %s", _("IDS_COM_BODY_MANUAL"),
796                                          _(pa_net_name));
797                         }
798                         SETTING_TRACE_DEBUG("After set as Automatic, update "\
799                                 "ad->data_sel_net to be [%s]", sub_desc);
800                         if (ad->data_sel_net && !isEmptyStr(sub_desc)) {
801                             ad->data_sel_net->sub_desc = 
802                                         (char *)g_strdup(sub_desc);
803                             elm_object_item_data_set(ad->data_sel_net->item, ad->data_sel_net);
804                             elm_genlist_item_update(ad->data_sel_net->item);
805                         }
806                         ad->b_set_auto_network = FALSE;
807                         ad->b_set_manul_network = FALSE;
808
809                         FREE(pa_net_name);
810                         break;
811                 }
812                 /*get select network*/
813                 case TAPI_EVENT_NETWORK_GETSELECTIONMODE_CNF:
814                 {
815                         SETTING_TRACE_DEBUG("Case: get select network");
816
817                         
818                         if (event->Status == TAPI_NETWORK_NO_ERR) {
819                                 TelNetworkSelectionMode_t sel;
820                                 memcpy(&sel, event->pData,
821                                        sizeof(TelNetworkSelectionMode_t));
822                                 SETTING_TRACE_DEBUG("ad->sel_net[%d] %s sel[%d]", 
823                                                    ad->sel_net, 
824                                                    ad->sel_net == sel ? "==" : "!=",
825                                                    sel);
826                                 if (ad->sel_net != sel) {
827                                         char sub_desc[MAX_COMMON_BUFFER_LEN] = { 0, };
828                                         const char *pa_net_name = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
829                                         SETTING_TRACE("pa_net_name:%s", pa_net_name);
830                                         if (NULL == pa_net_name) {
831                                             pa_net_name = "IDS_ST_BODY_NOSERVICE";
832                                         } 
833
834                                         if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == sel) {
835                                                 snprintf(sub_desc, MAX_COMMON_BUFFER_LEN, 
836                                                          "%s. %s", _("IDS_COM_BODY_AUTOMATIC"),
837                                                          _(pa_net_name));
838                                                 
839                                         } else if(TAPI_NETWORK_SELECTIONMODE_MANUAL == sel) {
840                                                 snprintf(sub_desc, MAX_COMMON_BUFFER_LEN, 
841                                                          "%s. %s", _("IDS_COM_BODY_MANUAL"),
842                                                          _(pa_net_name));
843                                         }
844                                         SETTING_TRACE_DEBUG("Update "\
845                                                 "ad->data_sel_net to be [%s]", 
846                                                 sub_desc);
847                                         if (ad->data_sel_net && !isEmptyStr(sub_desc))
848                                         {
849                                             ad->data_sel_net->sub_desc = 
850                                                         (char *)g_strdup(sub_desc);
851                                             elm_object_item_data_set(ad->data_sel_net->item, ad->data_sel_net);
852                                             elm_genlist_item_update(ad->data_sel_net->item);
853                                         }
854
855                                         ad->sel_net = sel;
856                                 }
857                                 
858                         } else {
859                                 SETTING_TRACE
860                                     ("*** [ERR] TAPI_EVENT_NETWORK_GETSELECTIONMODE_CNF, STATUS=0x%x ***",
861                                      event->Status);
862                         }
863                         break;
864                 }
865                 /* get network mode */
866                 case TAPI_EVENT_NETWORK_GETNWBAND_CNF:
867                 {
868                         SETTING_TRACE_DEBUG("Case: TAPI_EVENT_NETWORK_GETNWBAND_CNF");
869
870                         if (event->Status ==
871                             TAPI_NETWORK_NO_ERR) {
872                                 TelNetworkBand_t band;
873                                 int temp_net_mode = 0;
874                                 memcpy(&band, event->pData,
875                                        sizeof
876                                        (TelNetworkBand_t));
877                                 temp_net_mode = (int)band;
878                                 /*  ***BEGIN***  Fixed the problem of word twinkle  SAMSUNG 2010/7/21 modify */
879                                 if (temp_net_mode !=
880                                     ad->net_mode) {
881                                         ad->net_mode =
882                                             temp_net_mode;
883                                         const char *sub_desc =
884                                             NULL;
885                                         switch (ad->net_mode) {
886                                         case TAPI_NETWORK_BAND_TYPE_ANY:
887                                                 sub_desc =
888                                                                     _("IDS_COM_BODY_AUTOMATIC");
889                                                 break;
890                                         case TAPI_NETWORK_BAND_TYPE_GSM_900_1800:
891                                                 sub_desc =
892                                                                     _(STR_SETTING_GSM_900_1800);
893                                                 break;
894                                         case TAPI_NETWORK_BAND_TYPE_GSM_850_1900:
895                                                 sub_desc =
896                                                                     _(STR_SETTING_GSM_850_1900);
897                                                 break;
898                                         case TAPI_NETWORK_BAND_TYPE_WCDMA:
899                                                 sub_desc =
900                                                                     _(STR_SETTING_UMTS);
901                                                 break;
902                                         default:
903                                                 break;
904                                         }
905                                         if (ad->data_net_mode) {
906                                                 ad->data_net_mode->sub_desc = (char *)g_strdup(sub_desc);
907                                                 elm_object_item_data_set (ad->data_net_mode->item, ad->data_net_mode);
908                                                 elm_genlist_item_update(ad->data_net_mode->item);
909
910                                         }
911                                         vconf_set_int
912                                             (VCONFKEY_SETAPPL_NETWORK_MODE_INT,
913                                              ad->net_mode);
914                                 }
915                                 /*  ****END****  Fixed the problem of word twinkle  SAMSUNG 2010/7/21 modify */
916                         } else {
917                                 SETTING_TRACE_ERROR
918                                     ("*** [ERR] TAPI_EVENT_NETWORK_GETNWBAND_CNF, STATUS=0x%x ***",
919                                      event->Status);
920                         }
921
922                         break;
923                 }
924                 /* set network mode */
925                 case TAPI_EVENT_NETWORK_SETNWBAND_CNF:
926                 {
927                         SETTING_TRACE_DEBUG("Case: TAPI_EVENT_NETWORK_SETNWBAND_CNF");
928
929                         int err;
930                         if (event->Status ==
931                             TAPI_NETWORK_NO_ERR) {
932                                 ret_if(NULL == ad->data_net_mode);
933                                 ad->net_mode = //get value from radio
934                                     elm_radio_value_get(ad->data_net_mode->rgd);
935                                 setting_set_int_slp_key(ad->data_net_mode->int_slp_setting_binded,
936                                                         ad->net_mode, &err);
937                                 char *sub_des = NULL;
938                                 
939                                 switch (ad->net_mode) {
940                                 case TAPI_NETWORK_BAND_TYPE_ANY:
941                                         sub_des = _("IDS_COM_BODY_AUTOMATIC");
942                                         break;
943                                 
944                                 case TAPI_NETWORK_BAND_TYPE_GSM_900_1800:
945                                         sub_des = _(STR_SETTING_GSM_900_1800);
946                                         break;
947                                 
948                                 case TAPI_NETWORK_BAND_TYPE_GSM_850_1900:
949                                         sub_des = _(STR_SETTING_GSM_850_1900);
950                                         break;
951                                 
952                                 case TAPI_NETWORK_BAND_TYPE_WCDMA:
953                                         sub_des = _(STR_SETTING_UMTS);
954                                         break;
955                                 default:
956                                         break;
957                                 }
958                                 if (ad->data_net_mode) {
959                                         ad->data_net_mode->sub_desc = (char *)g_strdup(sub_des);
960                                         elm_object_item_data_set(ad->data_net_mode->item, ad->data_net_mode);
961                                         elm_genlist_item_update(ad->data_net_mode->item);
962                                 }
963
964                                 
965                         } else {
966                                 SETTING_TRACE_ERROR
967                                     ("*** [ERR] TAPI_EVENT_NETWORK_SETNWBAND_CNF, STATUS=0x%x ***",
968                                      event->Status);
969                                 
970                                 //rollback
971                                 //get value from vconf
972                                 setting_get_int_slp_key(ad->data_net_mode->int_slp_setting_binded,
973                                                         &(ad->net_mode), &err);
974                                 elm_radio_value_set(ad->data_net_mode->rgd, ad->net_mode);
975                         }
976
977                         break;
978                 }
979                 /* get preferred network */
980                 case TAPI_EVENT_NETWORK_GETPREFFEREDPLMN_CNF:
981                 {
982                         SETTING_TRACE_DEBUG("Case: TAPI_EVENT_NETWORK_GETPREFFEREDPLMN_CNF");
983
984                         if (event->Status ==
985                             TAPI_NETWORK_NO_ERR) {
986                                 memset(&(ad->pref_list), 0x00,
987                                        sizeof
988                                        (TelNetworkPrefferedPlmnList_t));
989                                 memcpy(&(ad->pref_list),
990                                        event->pData,
991                                        sizeof
992                                        (TelNetworkPrefferedPlmnList_t));
993
994                                 SETTING_TRACE
995                                     ("*********** ad->op_type = %d",
996                                      ad->op_type);
997                                 SETTING_TRACE
998                                     ("ad->pref_list.NumOfPreffPlmns:%d",
999                                      ad->
1000                                      pref_list.NumOfPreffPlmns);
1001                                 switch (ad->op_type) {
1002                                 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE:
1003                                 {
1004                                         setting_network_preferred_network_delete_draw_network_list
1005                                             (ad);
1006                                         break;
1007                                 }
1008                                 default:
1009                                 {
1010                                         setting_network_preferred_network_refresh_view
1011                                             (ad);
1012                                         char info
1013                                             [MAX_DISPLAY_NAME_LEN_ON_UI]
1014                                             = { 0 };
1015                                         if (ad->pref_list.NumOfPreffPlmns > 1) {
1016                                                 snprintf(info, sizeof(info),
1017                                                      "Get %d preferred networks",
1018                                                      ad->pref_list.NumOfPreffPlmns);
1019                                         } else {
1020                                                 snprintf(info, sizeof(info),
1021                                                      "Get %d preferred network",
1022                                                      ad->pref_list.NumOfPreffPlmns);
1023                                         }
1024                                         setting_network_popup_update(ad, info,
1025                                                                      FALSE);
1026                                         break;
1027                                 }
1028                                 }
1029                         } else {
1030                                 switch (ad->op_type) {
1031                                 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE:
1032                                 {
1033                                         setting_network_preferred_network_delete_failed
1034                                             (ad);
1035                                         break;
1036                                 }
1037                                 default:
1038                                 {
1039                                         setting_network_popup_update(ad,
1040                                             _("Get preferred network failed"),
1041                                              FALSE);
1042                                         break;
1043                                 }
1044                                 }
1045                         }
1046                         break;
1047                 }
1048                 /* set preferred network */
1049                 case TAPI_EVENT_NETWORK_SETPREFFEREDPLMN_CNF:
1050                 {
1051                         SETTING_TRACE_DEBUG("Case: TAPI_EVENT_NETWORK_SETPREFFEREDPLMN_CNF");
1052
1053                         if (event->Status !=
1054                             TAPI_NETWORK_NO_ERR) {
1055                                 switch (ad->op_type) {
1056                                 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE:
1057                                 {
1058                                         setting_network_preferred_network_delete_failed
1059                                             (ad);
1060                                         break;
1061                                 }
1062                                 default:
1063                                 {
1064                                         setting_network_popup_update
1065                                             (ad, _("IDS_COM_POP_ERROR"),
1066                                              FALSE);
1067                                         break;
1068                                 }
1069                                 }
1070                         } else {
1071                                 int request_id = -1;
1072                                 int tapi_ret = TAPI_API_SUCCESS;
1073                                 switch (ad->op_type) {
1074                                 case SETTING_NETWORK_PREFERRED_NETWORK_NEW:
1075                                 {
1076                                         setting_view_change
1077                                             (&setting_view_network_preferred_network_new,
1078                                              &setting_view_network_preferred_network,
1079                                              ad);
1080                                         tapi_ret =
1081                                             tel_get_network_preferred_plmn
1082                                             (&request_id);
1083                                         break;
1084                                 }
1085
1086                                 case SETTING_NETWORK_PREFERRED_NETWORK_LIST:
1087                                 {
1088
1089                                         setting_view_change
1090                                             (&setting_view_network_preferred_network_list,
1091                                              &setting_view_network_preferred_network,
1092                                              ad);
1093                                         tapi_ret =
1094                                             tel_get_network_preferred_plmn
1095                                             (&request_id);
1096                                         break;
1097                                 }
1098
1099                                 case SETTING_NETWORK_PREFERRED_NETWORK_EDIT:
1100                                 {
1101                                         setting_view_change
1102                                             (&setting_view_network_preferred_network_edit,
1103                                              &setting_view_network_preferred_network,
1104                                              ad);
1105                                         tapi_ret =
1106                                             tel_get_network_preferred_plmn
1107                                             (&request_id);
1108                                         break;
1109                                 }
1110                                 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE:
1111                                 {
1112                                         setting_network_preferred_network_delete_ok
1113                                             (ad);
1114                                         return;
1115                                 }
1116                                 default:
1117                                 {
1118                                         SETTING_TRACE_DEBUG
1119                                             (" Unknown prederred network type");
1120                                         break;
1121                                 }
1122                                 }
1123
1124                                 if (tapi_ret !=
1125                                     TAPI_API_SUCCESS) {
1126                                         SETTING_TRACE_ERROR
1127                                             ("*** [ERR] tel_get_network_preferred_plmn. err=%d ***",
1128                                              tapi_ret);
1129                                 }
1130                         }
1131                         break;
1132                 }
1133                 default:
1134                 {
1135                         SETTING_TRACE_DEBUG
1136                             ("Unkonwn TAPI event");
1137                         break;
1138                 }
1139                 }
1140                 break;
1141         }
1142         default:
1143                 {
1144                         SETTING_TRACE_DEBUG("Unkonwn TAPI event class");
1145                         break;
1146                 }
1147         }
1148         SETTING_TRACE_END;
1149 }
1150
1151 void setting_network_register_network(Setting_GenGroupItem_Data* list_item)
1152 {
1153         SETTING_TRACE_BEGIN;
1154         ret_if(list_item == NULL);
1155         SETTING_TRACE("process item [%s]", list_item->keyStr);
1156         SettingNetworkUG *ad = list_item->userdata;
1157         ret_if(ad == NULL);
1158         
1159         int tapi_ret = TAPI_API_INVALID_INPUT;
1160         int request_id = 0;
1161
1162         //cancel the searching operation
1163         
1164         if (ad->data_search_network_item)
1165         {
1166             elm_object_item_del(ad->data_search_network_item->item);
1167             ad->data_search_network_item = NULL;
1168         }
1169
1170         setting_finish_progress_genlist_item(ad->data_selected_network_item);
1171         if (ad->b_searching_network) {
1172                 tapi_ret = tel_cancel_network_manual_search(&request_id);
1173                 if (tapi_ret != TAPI_API_SUCCESS) {
1174                         SETTING_TRACE_ERROR("*** [ERR] tel_search_network. "\
1175                                             "tapi_ret=%d ***", tapi_ret);
1176                 }
1177                 else
1178                 {
1179                         ad->b_searching_network = FALSE;
1180                 }
1181         }
1182
1183         if (0 == safeStrCmp(list_item->keyStr, "IDS_COM_BODY_AUTOMATIC")) {
1184                 ad->sel_net = TAPI_NETWORK_SELECTIONMODE_AUTOMATIC;
1185                 tapi_ret = tel_select_network_automatic(&request_id);
1186                 if (tapi_ret != TAPI_API_SUCCESS) {
1187                     SETTING_TRACE_DEBUG("*** [ERR] tel_select_network_automatic."\
1188                                             " tapi_ret=%d ***",tapi_ret);
1189                 } else {
1190                         setting_begin_progress_genlist_item(list_item);
1191                         ad->data_selected_network_item = list_item;
1192                         ad->b_set_manul_network = FALSE;
1193                         ad->b_set_auto_network = TRUE;
1194                 }
1195         } else {
1196                 ad->sel_net = TAPI_NETWORK_SELECTIONMODE_MANUAL;
1197                 ad->b_set_manul_network = TRUE;
1198                 ad->b_set_auto_network = FALSE;
1199
1200                 int cnt = 0;
1201                 SETTING_TRACE("ad->plmn_info.networks_count:%d", 
1202                                 ad->plmn_info.networks_count);
1203                 for(; cnt < ad->plmn_info.networks_count; cnt++)
1204                 {
1205                         SETTING_TRACE("ad->plmn_info.network_list[cnt].network_name:%s", 
1206                                         ad->plmn_info.network_list[cnt].network_name);
1207                         if(!safeStrCmp(list_item->keyStr,
1208                                       ad->plmn_info.network_list[cnt].network_name))
1209                         {
1210                                 break;
1211                         }
1212                 }       
1213
1214
1215                 SETTING_TRACE_DEBUG("%s*** [Selected PLMN] name=%s, "\
1216                                 "srv provider=%s, PLMN ID=%u, type=%d, "\
1217                                 "access tech=%d ***%s", SETTING_FONT_BGREEN,
1218                                 ad->plmn_info.network_list[cnt].network_name, 
1219                                 ad->plmn_info.network_list[cnt].service_provider_name, 
1220                                 ad->plmn_info.network_list[cnt].plmn_id,
1221                                 (int)(ad->plmn_info.network_list[cnt].type_of_plmn), 
1222                                 (int)(ad->plmn_info.network_list[cnt].access_technology), 
1223                                 SETTING_FONT_BLACK);
1224
1225                 //ASYNC API - TAPI_EVENT_NETWORK_SELECT_CNF
1226                 tapi_ret = tel_select_network_manual(
1227                                         ad->plmn_info.network_list[cnt].plmn_id, 
1228                                         &request_id); 
1229                 if(tapi_ret != TAPI_API_SUCCESS)
1230                 {
1231                         SETTING_TRACE_DEBUG("%s*** [ERR] "\
1232                                         "tel_select_network_manual. "\
1233                                         "tapi_ret=%d ***%s", SETTING_FONT_RED, 
1234                                         tapi_ret, SETTING_FONT_BLACK);
1235                         setting_network_popup_create(ad, 
1236                                                   _("IDS_ST_BODY_FAILED_TO_SELECT_NETWORK"), 
1237                                                   FALSE);
1238                         return;
1239                 }
1240                 else
1241                 {
1242                         ad->sel_net_plmn_id = 
1243                                 ad->plmn_info.network_list[cnt].plmn_id;
1244                         setting_begin_progress_genlist_item(list_item);
1245                         ad->data_selected_network_item = list_item;
1246                 }
1247         }
1248 }
1249
1250
1251 void setting_network_select_network_chk_changed(void *data, Evas_Object *obj, 
1252                                                 void *event_info)
1253 {
1254         SETTING_TRACE_BEGIN;
1255         retm_if(data == NULL || obj == NULL, "Parameter is NULL");
1256         Setting_GenGroupItem_Data* list_item = (Setting_GenGroupItem_Data *)data;
1257         
1258         list_item->chk_status = elm_radio_value_get(obj);
1259         SETTING_TRACE("The value of radio changes to be %d", 
1260                         list_item->chk_status);
1261         setting_network_register_network(list_item);
1262 }
1263
1264
1265 void setting_network_Gendial_select_plmn_cb(void *data, Evas_Object *obj, 
1266                                                 void *event_info)
1267 {
1268         SETTING_TRACE_BEGIN;
1269         retm_if(data == NULL || event_info == NULL, "Parameter is NULL");
1270                 
1271         SettingNetworkUG *ad = (SettingNetworkUG*)data;
1272         Elm_Object_Item *item = (Elm_Object_Item*)event_info;
1273         elm_genlist_item_selected_set(item, 0);
1274         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data*)elm_object_item_data_get(item);      
1275         
1276         int old_chk_status = elm_radio_value_get(ad->chk_sel);
1277         if (old_chk_status != list_item->chk_status)
1278         {
1279                 SETTING_TRACE("The value of radio changes to be %d", 
1280                                 list_item->chk_status);
1281                 elm_radio_value_set(ad->chk_sel, list_item->chk_status);
1282                 setting_network_register_network(list_item);
1283         }
1284 }
1285 /*****/
1286 UG_MODULE_API int setting_plugin_reset(bundle *data, void *priv)
1287 {
1288         SETTING_TRACE_BEGIN;
1289         int ret = 0;
1290         /* network         */
1291 #if SUPPORT_RUN_SYSTEM_COMMAND
1292         ret += excuteCmd(SETTING_POSTINST_FILE, 1, "network");
1293 #else
1294         ret += vconf_set_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, TAPI_NETWORK_SELECTIONMODE_AUTOMATIC);
1295         ret += vconf_set_int(VCONFKEY_SETAPPL_NETWORK_MODE_INT, TAPI_NETWORK_BAND_TYPE_ANY);
1296         ret += vconf_set_bool(VCONFKEY_3G_ENABLE, TRUE);
1297 #endif
1298
1299         if (net_register_client((net_event_cb_t)__network_evt_cb, NULL) != NET_ERR_NONE) {
1300                 SETTING_TRACE_ERROR("net_register_client. failed");
1301         }
1302         int request_id = 0;
1303         int tapi_ret = tel_select_network_automatic(&request_id);
1304         if (tapi_ret != TAPI_API_SUCCESS) {
1305                 ret++;
1306             SETTING_TRACE_ERROR("tel_select_network_automatic. tapi_ret=%d", tapi_ret);
1307         }
1308         
1309         request_id = 0;
1310         tapi_ret = tel_set_network_band(TAPI_NETWORK_BAND_MODE_ONLY, 
1311                                         TAPI_NETWORK_BAND_TYPE_ANY,
1312                                         &request_id);
1313         if (tapi_ret != TAPI_API_SUCCESS) {
1314                 ret++;
1315                 SETTING_TRACE_ERROR("tel_set_network_band. tapi_ret=%d", tapi_ret);
1316         }
1317
1318         if (net_deregister_client() != NET_ERR_NONE) {
1319                 ret++;
1320                 SETTING_TRACE_ERROR("net_deregister_client failed");
1321         }
1322         
1323         SETTING_TRACE_END;
1324         return ret;
1325 }