4 * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
6 * This file is part of org.tizen.setting
7 * Written by Hyejin Kim <hyejin0906.kim@samsung.com>
9 * PROPRIETARY/CONFIDENTIAL
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.
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.
25 #include <setting-network.h>
26 #include <setting-network-preferred-network-delete.h>
27 #include <setting-network-preferred-network.h>
30 #define UG_MODULE_API __attribute__ ((visibility("default")))
32 int setting_network_subscribe_tapi_events(void *data);
33 int setting_network_unsubscribe_tapi_events(void *data);
35 static void __selected_network_change_cb(keynode_t *key, void *data)
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)) {
44 value = "IDS_ST_BODY_NOSERVICE";
46 SETTING_TRACE("value:%s", value);
48 if (ad->data_auto_network_item) {
49 if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == ad->sel_net)
51 elm_genlist_item_item_class_update(
52 ad->data_auto_network_item->item,
53 &ad->itc_2text_2icon_3);
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);
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"),
68 snprintf(sub_desc, MAX_COMMON_BUFFER_LEN,
69 "%s. %s", _("IDS_COM_BODY_MANUAL"),
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);
83 static void setting_network_ug_cb_resize(void *data, Evas *e,
84 Evas_Object *obj, void *event_info)
86 SettingNetworkUG *ad = (SettingNetworkUG *) data;
87 setting_view_update(&setting_view_network_main, ad);
90 void __network_evt_cb(net_event_info_t *event_cb, void *data)
93 ret_if(!event_cb || !data);
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);
99 static void *setting_network_ug_on_create(struct ui_gadget *ug,
100 enum ug_mode mode, bundle *data,
103 setting_retvm_if((!ug || !priv), NULL, "!ug || !priv");
105 SettingNetworkUG *networkUG = priv;
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);
113 setting_retvm_if(networkUG->win_main_layout == NULL, NULL,
114 "cannot get main window ");
120 /* subscribe tapi events */
121 if (setting_network_subscribe_tapi_events(networkUG) != SETTING_RETURN_SUCCESS) {
123 ("%s*** [ERR] setting_network_subscribe_tapi_events. ***%s",
124 SETTING_FONT_RED, SETTING_FONT_BLACK);
128 err_code = net_register_client((net_event_cb_t)__network_evt_cb, networkUG);
129 if (err_code != NET_ERR_NONE) {
131 ("%s*** [ERR] net_register_client. err=%d ***%s",
132 SETTING_FONT_RED, err_code, SETTING_FONT_BLACK);
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);
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);
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));
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;
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));
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);
203 (void)vconf_notify_key_changed(VCONFKEY_TELEPHONY_NWNAME,
204 __selected_network_change_cb, networkUG);
205 return networkUG->ly_main;
209 static void setting_network_ug_on_start(struct ui_gadget *ug, bundle *data,
214 static void setting_network_ug_on_pause(struct ui_gadget *ug, bundle *data,
219 static void setting_network_ug_on_resume(struct ui_gadget *ug, bundle *data,
224 static void setting_network_ug_on_destroy(struct ui_gadget *ug, bundle *data,
228 setting_retm_if((!ug || !priv), "!ug || !priv");
229 SettingNetworkUG *networkUG = priv;
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 */
235 FREE(networkUG->prof_list);
237 ecore_imf_shutdown();
239 /* unregister dnet client */
240 int err_code = net_deregister_client();
241 if (err_code != NET_ERR_NONE) {
243 ("%s*** [ERR] net_deregister_client. err=%d ***%s",
244 SETTING_FONT_RED, err_code, SETTING_FONT_BLACK);
246 /* unsubscribe sim events */
247 if (setting_network_unsubscribe_tapi_events(networkUG) != SETTING_RETURN_SUCCESS) {
249 ("%s*** [ERR] setting_network_unsubscribe_tapi_events. ***%s",
250 SETTING_FONT_RED, SETTING_FONT_BLACK);
252 SETTING_TRACE("Unsubscribing TAPI event is succeeded");
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,
260 setting_view_destroy(&setting_view_network_3gcon, networkUG);
262 setting_view_destroy(&setting_view_network_preferred_network,
264 setting_view_destroy(&setting_view_network_preferred_network_list,
266 setting_view_destroy(&setting_view_network_preferred_network_new,
268 setting_view_destroy(&setting_view_network_preferred_network_edit,
270 setting_view_destroy(&setting_view_network_preferred_network_delete,
272 setting_view_destroy(&setting_view_network_main, networkUG);
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));
282 static void setting_network_ug_on_message(struct ui_gadget *ug, bundle *msg,
283 bundle *data, void *priv)
288 static void setting_network_ug_on_event(struct ui_gadget *ug,
289 enum ug_event event, bundle *data,
294 case UG_EVENT_LOW_MEMORY:
296 case UG_EVENT_LOW_BATTERY:
298 case UG_EVENT_LANG_CHANGE:
300 case UG_EVENT_ROTATE_PORTRAIT:
302 case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
304 case UG_EVENT_ROTATE_LANDSCAPE:
306 case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
308 case UG_EVENT_REGION_CHANGE:
315 static void setting_network_ug_on_key_event(struct ui_gadget *ug,
316 enum ug_key_event event,
317 bundle *data, void *priv)
320 SettingNetworkUG *ad = (SettingNetworkUG *) priv;
325 case UG_KEY_EVENT_END:
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)) {
332 setting_view_cb_at_endKey(ad);
341 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
344 SettingNetworkUG *networkUG = calloc(1, sizeof(SettingNetworkUG));
345 setting_retvm_if(!networkUG, -1, "Create SettingNetworkUG obj failed");
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;
361 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
364 struct SettingNetworkUG *networkUG;
365 setting_retm_if(!ops, "ops == NULL");
367 networkUG = ops->priv;
371 /* ***************************************************
375 ***************************************************/
378 int setting_network_subscribe_tapi_events(void *data)
381 retv_if(data == NULL, SETTING_TAPI_REG_EVENT_ECORE_ERR);
382 SettingNetworkUG *ad = (SettingNetworkUG *) data;
385 int ret = SETTING_RETURN_SUCCESS;
387 int tapi_ret = TAPI_API_SUCCESS;
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
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;
404 /* iNumOfSSEvt = sizeof(EvtList)/sizeof(TelTapiEventType_t); */
405 iNumOfSSEvt = sizeof(EvtList) / sizeof(int);
407 for (i = 0; i < iNumOfSSEvt; i++) {
409 tel_register_event(EvtList[i], &(ad->subs_id_net[i]),
411 setting_network_tapi_event_callback,
413 if (tapi_ret != TAPI_API_SUCCESS)
415 ("passing event[%d] to invoke tel_register_event failed[%d]",
416 ad->subs_id_net[i], tapi_ret);
419 if (tel_register_app_name("org.tizen.setting") != TAPI_API_SUCCESS) {
420 SETTING_TRACE_ERROR("tel_register_app_name failed[tapi_ret=%d]",
422 return SETTING_TAPI_REG_EVENT_ECORE_ERR;
428 int setting_network_unsubscribe_tapi_events(void *data)
431 retv_if(data == NULL, SETTING_TAPI_DEREG_EVENT_ECORE_ERR);
432 SettingNetworkUG *ad = (SettingNetworkUG *) data;
435 int ret = SETTING_RETURN_SUCCESS;
437 int tapi_ret = TAPI_API_SUCCESS;
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
449 iNumOfSSEvt = sizeof(EvtList) / sizeof(int);
451 for (i = 0; i < iNumOfSSEvt; i++) {
452 tapi_ret = tel_deregister_event(ad->subs_id_net[i]);
454 if (tapi_ret != TAPI_API_SUCCESS) {
456 ("*** [ERR] tel_deregister_event. subs_id_net=%d, tapi_ret=%d ***",
457 ad->subs_id_net[i], tapi_ret);
462 tapi_ret = tel_deinit();
463 if (tapi_ret != TAPI_API_SUCCESS) {
464 SETTING_TRACE_ERROR("tel_deinit failed[tapi_ret = %d]",
466 return SETTING_TAPI_DEREG_EVENT_ECORE_ERR;
472 setting_network_popup_response_cb(void *data, Evas_Object *obj,
477 evas_object_del(obj);
480 SettingNetworkUG *ad = (SettingNetworkUG *) data;
484 ad->network_ug_pop = NULL;
488 void setting_network_popup_delete(void *data)
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;
501 void setting_network_popup_create(void *data, char *str_content, bool keep)
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);
513 setting_create_popup_without_btn(ad, ad->win_get, str_content, NULL,
514 setting_network_popup_response_cb,
517 elm_popup_timeout_set(ad->network_ug_pop, 2.0);
522 void setting_network_popup_update(void *data, char *str_content, bool keep)
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);
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);
540 elm_popup_timeout_set(ad->network_ug_pop, 2.0);
544 Evas_Object *setting_network_create_register_popup(void *data)
548 retvm_if(data == NULL, NULL,
549 "[Setting > Network] Data parameter is NULL");
551 SettingNetworkUG *ad = (SettingNetworkUG *) data;
552 Evas_Object *popup = NULL;
554 setting_create_popup_without_btn(ad, ad->win_get, _("Registering"), NULL,
555 setting_network_popup_response_cb, POPUP_INTERVAL);
560 Evas_Object *setting_network_preferred_network_create_save_popup(void *data)
564 retvm_if(data == NULL, NULL,
565 "[Setting > Network] Data parameter is NULL");
567 SettingNetworkUG *ad = (SettingNetworkUG *) data;
568 Evas_Object *popup = NULL;
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;
576 Evas_Object *setting_network_preferred_network_create_delete_popup(void *data)
580 retvm_if(data == NULL, NULL,
581 "[Setting > Network] Data parameter is NULL");
583 SettingNetworkUG *ad = (SettingNetworkUG *) data;
584 Evas_Object *popup = NULL;
586 setting_create_popup_without_btn(ad, ad->win_get, _("IDS_COM_SK_DELETE"), NULL,
587 setting_network_popup_response_cb, 0);
592 Evas_Object *setting_network_select_network_create_search_popup(void *data)
596 retv_if(data == NULL, NULL);
598 SettingNetworkUG *ad = (SettingNetworkUG *) data;
599 Evas_Object *popup = NULL;
601 setting_create_popup_without_btn(ad, ad->win_get, _("IDS_COM_POP_SEARCHING"),
607 void setting_network_preferred_network_create_isf(Evas_Object *entry)
612 ("Given focus to the entry and then soft keyboard will be shown automatically !");
613 elm_object_focus_set(entry, EINA_TRUE);
616 /* ***************************************************
620 ***************************************************/
626 void setting_network_tapi_event_callback(TelTapiEvent_t *event, void *data)
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;
636 switch (event->EventClass) {
637 case TAPI_EVENT_CLASS_NETWORK:
639 switch (event->EventType) {
640 /* search network list */
641 case TAPI_EVENT_NETWORK_SEARCH_CNF:
643 SETTING_TRACE_DEBUG("Case: TAPI_EVENT_NETWORK_SEARCH_CNF");
645 setting_network_popup_delete(ad);
648 if (!ad->b_searching_network) {
649 /*The requeset has already been canceled, don't do detail process*/
652 bool need_reset_flag = FALSE;
653 if (ad->data_search_network_item)
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;
660 elm_object_item_del(ad->data_search_network_item->item);
661 ad->data_search_network_item = NULL;
664 ad->b_searching_network = FALSE;
666 if (event->Status == TAPI_NETWORK_NO_ERR) {
669 ret_if(NULL == event->pData);
670 memcpy(&(ad->plmn_info), event->pData,
671 sizeof(TelNetworkPlmnList_t));
673 Setting_GenGroupItem_Data *item_data = NULL;
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) {
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)) {
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,
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)
704 SETTING_TRACE_ERROR("Failed to calloc memory");
708 item_data->userdata = ad;
709 if (need_reset_flag &&
710 0 == safeStrCmp(pa_net_name, ad->plmn_info.network_list[cnt].network_name))
712 elm_radio_value_set(ad->chk_sel, item_data->chk_status);//let select nothing
719 SETTING_TRACE("Found %d valid networks in total[%d]", valid_cnt, cnt);
720 setting_network_popup_update(ad, _("Searched"), FALSE);
722 setting_network_popup_update(ad, _("Searching network failed"), FALSE);
727 case TAPI_EVENT_NETWORK_SELECT_CNF:
729 SETTING_TRACE_DEBUG("Case: set plmn(ad->sel_net:%d)",
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))
737 /*The requeset has already been canceled, return directly*/
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");
749 &setting_view_network_select_network,
750 &setting_view_network_main, ad);
755 setting_finish_progress_genlist_item(ad->data_selected_network_item);
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");
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";
767 if (ad->data_auto_network_item) {
768 if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == ad->sel_net)
770 elm_genlist_item_item_class_update(
771 ad->data_auto_network_item->item,
772 &ad->itc_2text_2icon_3);
774 SETTING_TRACE_DEBUG("After set as Automatic, update "\
775 "ad->data_auto_network_item to be [%s]",
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);
782 elm_genlist_item_item_class_update(
783 ad->data_auto_network_item->item,
784 &ad->itc_1text_2icon);
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"),
794 snprintf(sub_desc, MAX_COMMON_BUFFER_LEN,
795 "%s. %s", _("IDS_COM_BODY_MANUAL"),
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);
806 ad->b_set_auto_network = FALSE;
807 ad->b_set_manul_network = FALSE;
812 /*get select network*/
813 case TAPI_EVENT_NETWORK_GETSELECTIONMODE_CNF:
815 SETTING_TRACE_DEBUG("Case: get select network");
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]",
824 ad->sel_net == 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";
834 if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == sel) {
835 snprintf(sub_desc, MAX_COMMON_BUFFER_LEN,
836 "%s. %s", _("IDS_COM_BODY_AUTOMATIC"),
839 } else if(TAPI_NETWORK_SELECTIONMODE_MANUAL == sel) {
840 snprintf(sub_desc, MAX_COMMON_BUFFER_LEN,
841 "%s. %s", _("IDS_COM_BODY_MANUAL"),
844 SETTING_TRACE_DEBUG("Update "\
845 "ad->data_sel_net to be [%s]",
847 if (ad->data_sel_net && !isEmptyStr(sub_desc))
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);
860 ("*** [ERR] TAPI_EVENT_NETWORK_GETSELECTIONMODE_CNF, STATUS=0x%x ***",
865 /* get network mode */
866 case TAPI_EVENT_NETWORK_GETNWBAND_CNF:
868 SETTING_TRACE_DEBUG("Case: TAPI_EVENT_NETWORK_GETNWBAND_CNF");
871 TAPI_NETWORK_NO_ERR) {
872 TelNetworkBand_t band;
873 int temp_net_mode = 0;
874 memcpy(&band, event->pData,
877 temp_net_mode = (int)band;
878 /* ***BEGIN*** Fixed the problem of word twinkle SAMSUNG 2010/7/21 modify */
883 const char *sub_desc =
885 switch (ad->net_mode) {
886 case TAPI_NETWORK_BAND_TYPE_ANY:
888 _("IDS_COM_BODY_AUTOMATIC");
890 case TAPI_NETWORK_BAND_TYPE_GSM_900_1800:
892 _(STR_SETTING_GSM_900_1800);
894 case TAPI_NETWORK_BAND_TYPE_GSM_850_1900:
896 _(STR_SETTING_GSM_850_1900);
898 case TAPI_NETWORK_BAND_TYPE_WCDMA:
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);
912 (VCONFKEY_SETAPPL_NETWORK_MODE_INT,
915 /* ****END**** Fixed the problem of word twinkle SAMSUNG 2010/7/21 modify */
918 ("*** [ERR] TAPI_EVENT_NETWORK_GETNWBAND_CNF, STATUS=0x%x ***",
924 /* set network mode */
925 case TAPI_EVENT_NETWORK_SETNWBAND_CNF:
927 SETTING_TRACE_DEBUG("Case: TAPI_EVENT_NETWORK_SETNWBAND_CNF");
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,
937 char *sub_des = NULL;
939 switch (ad->net_mode) {
940 case TAPI_NETWORK_BAND_TYPE_ANY:
941 sub_des = _("IDS_COM_BODY_AUTOMATIC");
944 case TAPI_NETWORK_BAND_TYPE_GSM_900_1800:
945 sub_des = _(STR_SETTING_GSM_900_1800);
948 case TAPI_NETWORK_BAND_TYPE_GSM_850_1900:
949 sub_des = _(STR_SETTING_GSM_850_1900);
952 case TAPI_NETWORK_BAND_TYPE_WCDMA:
953 sub_des = _(STR_SETTING_UMTS);
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);
967 ("*** [ERR] TAPI_EVENT_NETWORK_SETNWBAND_CNF, STATUS=0x%x ***",
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);
979 /* get preferred network */
980 case TAPI_EVENT_NETWORK_GETPREFFEREDPLMN_CNF:
982 SETTING_TRACE_DEBUG("Case: TAPI_EVENT_NETWORK_GETPREFFEREDPLMN_CNF");
985 TAPI_NETWORK_NO_ERR) {
986 memset(&(ad->pref_list), 0x00,
988 (TelNetworkPrefferedPlmnList_t));
989 memcpy(&(ad->pref_list),
992 (TelNetworkPrefferedPlmnList_t));
995 ("*********** ad->op_type = %d",
998 ("ad->pref_list.NumOfPreffPlmns:%d",
1000 pref_list.NumOfPreffPlmns);
1001 switch (ad->op_type) {
1002 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE:
1004 setting_network_preferred_network_delete_draw_network_list
1010 setting_network_preferred_network_refresh_view
1013 [MAX_DISPLAY_NAME_LEN_ON_UI]
1015 if (ad->pref_list.NumOfPreffPlmns > 1) {
1016 snprintf(info, sizeof(info),
1017 "Get %d preferred networks",
1018 ad->pref_list.NumOfPreffPlmns);
1020 snprintf(info, sizeof(info),
1021 "Get %d preferred network",
1022 ad->pref_list.NumOfPreffPlmns);
1024 setting_network_popup_update(ad, info,
1030 switch (ad->op_type) {
1031 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE:
1033 setting_network_preferred_network_delete_failed
1039 setting_network_popup_update(ad,
1040 _("Get preferred network failed"),
1048 /* set preferred network */
1049 case TAPI_EVENT_NETWORK_SETPREFFEREDPLMN_CNF:
1051 SETTING_TRACE_DEBUG("Case: TAPI_EVENT_NETWORK_SETPREFFEREDPLMN_CNF");
1053 if (event->Status !=
1054 TAPI_NETWORK_NO_ERR) {
1055 switch (ad->op_type) {
1056 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE:
1058 setting_network_preferred_network_delete_failed
1064 setting_network_popup_update
1065 (ad, _("IDS_COM_POP_ERROR"),
1071 int request_id = -1;
1072 int tapi_ret = TAPI_API_SUCCESS;
1073 switch (ad->op_type) {
1074 case SETTING_NETWORK_PREFERRED_NETWORK_NEW:
1077 (&setting_view_network_preferred_network_new,
1078 &setting_view_network_preferred_network,
1081 tel_get_network_preferred_plmn
1086 case SETTING_NETWORK_PREFERRED_NETWORK_LIST:
1090 (&setting_view_network_preferred_network_list,
1091 &setting_view_network_preferred_network,
1094 tel_get_network_preferred_plmn
1099 case SETTING_NETWORK_PREFERRED_NETWORK_EDIT:
1102 (&setting_view_network_preferred_network_edit,
1103 &setting_view_network_preferred_network,
1106 tel_get_network_preferred_plmn
1110 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE:
1112 setting_network_preferred_network_delete_ok
1119 (" Unknown prederred network type");
1127 ("*** [ERR] tel_get_network_preferred_plmn. err=%d ***",
1136 ("Unkonwn TAPI event");
1144 SETTING_TRACE_DEBUG("Unkonwn TAPI event class");
1151 void setting_network_register_network(Setting_GenGroupItem_Data* list_item)
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;
1159 int tapi_ret = TAPI_API_INVALID_INPUT;
1162 //cancel the searching operation
1164 if (ad->data_search_network_item)
1166 elm_object_item_del(ad->data_search_network_item->item);
1167 ad->data_search_network_item = NULL;
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);
1179 ad->b_searching_network = FALSE;
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);
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;
1196 ad->sel_net = TAPI_NETWORK_SELECTIONMODE_MANUAL;
1197 ad->b_set_manul_network = TRUE;
1198 ad->b_set_auto_network = FALSE;
1201 SETTING_TRACE("ad->plmn_info.networks_count:%d",
1202 ad->plmn_info.networks_count);
1203 for(; cnt < ad->plmn_info.networks_count; cnt++)
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))
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);
1225 //ASYNC API - TAPI_EVENT_NETWORK_SELECT_CNF
1226 tapi_ret = tel_select_network_manual(
1227 ad->plmn_info.network_list[cnt].plmn_id,
1229 if(tapi_ret != TAPI_API_SUCCESS)
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"),
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;
1251 void setting_network_select_network_chk_changed(void *data, Evas_Object *obj,
1254 SETTING_TRACE_BEGIN;
1255 retm_if(data == NULL || obj == NULL, "Parameter is NULL");
1256 Setting_GenGroupItem_Data* list_item = (Setting_GenGroupItem_Data *)data;
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);
1265 void setting_network_Gendial_select_plmn_cb(void *data, Evas_Object *obj,
1268 SETTING_TRACE_BEGIN;
1269 retm_if(data == NULL || event_info == NULL, "Parameter is NULL");
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);
1276 int old_chk_status = elm_radio_value_get(ad->chk_sel);
1277 if (old_chk_status != list_item->chk_status)
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);
1286 UG_MODULE_API int setting_plugin_reset(bundle *data, void *priv)
1288 SETTING_TRACE_BEGIN;
1291 #if SUPPORT_RUN_SYSTEM_COMMAND
1292 ret += excuteCmd(SETTING_POSTINST_FILE, 1, "network");
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);
1299 if (net_register_client((net_event_cb_t)__network_evt_cb, NULL) != NET_ERR_NONE) {
1300 SETTING_TRACE_ERROR("net_register_client. failed");
1303 int tapi_ret = tel_select_network_automatic(&request_id);
1304 if (tapi_ret != TAPI_API_SUCCESS) {
1306 SETTING_TRACE_ERROR("tel_select_network_automatic. tapi_ret=%d", tapi_ret);
1310 tapi_ret = tel_set_network_band(TAPI_NETWORK_BAND_MODE_ONLY,
1311 TAPI_NETWORK_BAND_TYPE_ANY,
1313 if (tapi_ret != TAPI_API_SUCCESS) {
1315 SETTING_TRACE_ERROR("tel_set_network_band. tapi_ret=%d", tapi_ret);
1318 if (net_deregister_client() != NET_ERR_NONE) {
1320 SETTING_TRACE_ERROR("net_deregister_client failed");