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