2 * Copyright 2012 Samsung Electronics Co., Ltd
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
8 * http://www.tizenopensource.org/license
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.
18 #include <setting-network.h>
19 #include <setting-network-preferred-network-delete.h>
20 #include <setting-network-preferred-network.h>
23 #define UG_MODULE_API __attribute__ ((visibility("default")))
25 int setting_network_subscribe_tapi_events(void *data);
26 int setting_network_unsubscribe_tapi_events(void *data);
28 static void __selected_network_change_cb(keynode_t *key, void *data)
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)) {
37 value = "IDS_ST_BODY_NOSERVICE";
39 SETTING_TRACE("value:%s", value);
41 if (ad->data_auto_network_item) {
42 if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == ad->sel_net)
44 elm_genlist_item_item_class_update(
45 ad->data_auto_network_item->item,
46 &ad->itc_2text_2icon_3);
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);
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"),
61 snprintf(sub_desc, MAX_COMMON_BUFFER_LEN,
62 "%s. %s", _("IDS_COM_BODY_MANUAL"),
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);
76 static void setting_network_ug_cb_resize(void *data, Evas *e,
77 Evas_Object *obj, void *event_info)
79 SettingNetworkUG *ad = (SettingNetworkUG *) data;
80 setting_view_update(&setting_view_network_main, ad);
83 void __network_evt_cb(net_event_info_t *event_cb, void *data)
86 ret_if(!event_cb || !data);
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);
92 static void *setting_network_ug_on_create(struct ui_gadget *ug,
93 enum ug_mode mode, bundle *data,
96 setting_retvm_if((!ug || !priv), NULL, "!ug || !priv");
98 SettingNetworkUG *networkUG = priv;
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);
106 setting_retvm_if(networkUG->win_main_layout == NULL, NULL,
107 "cannot get main window ");
113 /* subscribe tapi events */
114 if (setting_network_subscribe_tapi_events(networkUG) != SETTING_RETURN_SUCCESS) {
116 ("%s*** [ERR] setting_network_subscribe_tapi_events. ***%s",
117 SETTING_FONT_RED, SETTING_FONT_BLACK);
121 err_code = net_register_client((net_event_cb_t)__network_evt_cb, networkUG);
122 if (err_code != NET_ERR_NONE) {
124 ("%s*** [ERR] net_register_client. err=%d ***%s",
125 SETTING_FONT_RED, err_code, SETTING_FONT_BLACK);
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);
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);
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));
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;
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));
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);
196 (void)vconf_notify_key_changed(VCONFKEY_TELEPHONY_NWNAME,
197 __selected_network_change_cb, networkUG);
198 return networkUG->ly_main;
202 static void setting_network_ug_on_start(struct ui_gadget *ug, bundle *data,
207 static void setting_network_ug_on_pause(struct ui_gadget *ug, bundle *data,
212 static void setting_network_ug_on_resume(struct ui_gadget *ug, bundle *data,
217 static void setting_network_ug_on_destroy(struct ui_gadget *ug, bundle *data,
221 setting_retm_if((!ug || !priv), "!ug || !priv");
222 SettingNetworkUG *networkUG = priv;
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 */
228 FREE(networkUG->prof_list);
230 ecore_imf_shutdown();
232 /* unregister dnet client */
233 int err_code = net_deregister_client();
234 if (err_code != NET_ERR_NONE) {
236 ("%s*** [ERR] net_deregister_client. err=%d ***%s",
237 SETTING_FONT_RED, err_code, SETTING_FONT_BLACK);
239 /* unsubscribe sim events */
240 if (setting_network_unsubscribe_tapi_events(networkUG) != SETTING_RETURN_SUCCESS) {
242 ("%s*** [ERR] setting_network_unsubscribe_tapi_events. ***%s",
243 SETTING_FONT_RED, SETTING_FONT_BLACK);
245 SETTING_TRACE("Unsubscribing TAPI event is succeeded");
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,
253 setting_view_destroy(&setting_view_network_3gcon, networkUG);
255 setting_view_destroy(&setting_view_network_preferred_network,
257 setting_view_destroy(&setting_view_network_preferred_network_list,
259 setting_view_destroy(&setting_view_network_preferred_network_new,
261 setting_view_destroy(&setting_view_network_preferred_network_edit,
263 setting_view_destroy(&setting_view_network_preferred_network_delete,
265 setting_view_destroy(&setting_view_network_main, networkUG);
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));
275 static void setting_network_ug_on_message(struct ui_gadget *ug, bundle *msg,
276 bundle *data, void *priv)
281 static void setting_network_ug_on_event(struct ui_gadget *ug,
282 enum ug_event event, bundle *data,
287 case UG_EVENT_LOW_MEMORY:
289 case UG_EVENT_LOW_BATTERY:
291 case UG_EVENT_LANG_CHANGE:
293 case UG_EVENT_ROTATE_PORTRAIT:
295 case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
297 case UG_EVENT_ROTATE_LANDSCAPE:
299 case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
301 case UG_EVENT_REGION_CHANGE:
308 static void setting_network_ug_on_key_event(struct ui_gadget *ug,
309 enum ug_key_event event,
310 bundle *data, void *priv)
313 SettingNetworkUG *ad = (SettingNetworkUG *) priv;
318 case UG_KEY_EVENT_END:
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)) {
325 setting_view_cb_at_endKey(ad);
334 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
337 SettingNetworkUG *networkUG = calloc(1, sizeof(SettingNetworkUG));
338 setting_retvm_if(!networkUG, -1, "Create SettingNetworkUG obj failed");
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;
354 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
357 struct SettingNetworkUG *networkUG;
358 setting_retm_if(!ops, "ops == NULL");
360 networkUG = ops->priv;
364 /* ***************************************************
368 ***************************************************/
371 int setting_network_subscribe_tapi_events(void *data)
374 retv_if(data == NULL, SETTING_TAPI_REG_EVENT_ECORE_ERR);
375 SettingNetworkUG *ad = (SettingNetworkUG *) data;
378 int ret = SETTING_RETURN_SUCCESS;
380 int tapi_ret = TAPI_API_SUCCESS;
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
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;
397 /* iNumOfSSEvt = sizeof(EvtList)/sizeof(TelTapiEventType_t); */
398 iNumOfSSEvt = sizeof(EvtList) / sizeof(int);
400 for (i = 0; i < iNumOfSSEvt; i++) {
402 tel_register_event(EvtList[i], &(ad->subs_id_net[i]),
404 setting_network_tapi_event_callback,
406 if (tapi_ret != TAPI_API_SUCCESS)
408 ("passing event[%d] to invoke tel_register_event failed[%d]",
409 ad->subs_id_net[i], tapi_ret);
412 if (tel_register_app_name("org.tizen.setting") != TAPI_API_SUCCESS) {
413 SETTING_TRACE_ERROR("tel_register_app_name failed[tapi_ret=%d]",
415 return SETTING_TAPI_REG_EVENT_ECORE_ERR;
421 int setting_network_unsubscribe_tapi_events(void *data)
424 retv_if(data == NULL, SETTING_TAPI_DEREG_EVENT_ECORE_ERR);
425 SettingNetworkUG *ad = (SettingNetworkUG *) data;
428 int ret = SETTING_RETURN_SUCCESS;
430 int tapi_ret = TAPI_API_SUCCESS;
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
442 iNumOfSSEvt = sizeof(EvtList) / sizeof(int);
444 for (i = 0; i < iNumOfSSEvt; i++) {
445 tapi_ret = tel_deregister_event(ad->subs_id_net[i]);
447 if (tapi_ret != TAPI_API_SUCCESS) {
449 ("*** [ERR] tel_deregister_event. subs_id_net=%d, tapi_ret=%d ***",
450 ad->subs_id_net[i], tapi_ret);
455 tapi_ret = tel_deinit();
456 if (tapi_ret != TAPI_API_SUCCESS) {
457 SETTING_TRACE_ERROR("tel_deinit failed[tapi_ret = %d]",
459 return SETTING_TAPI_DEREG_EVENT_ECORE_ERR;
465 setting_network_popup_response_cb(void *data, Evas_Object *obj,
470 evas_object_del(obj);
473 SettingNetworkUG *ad = (SettingNetworkUG *) data;
477 ad->network_ug_pop = NULL;
481 void setting_network_popup_delete(void *data)
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;
494 void setting_network_popup_create(void *data, char *str_content, bool keep)
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);
506 setting_create_popup_without_btn(ad, ad->win_get, str_content, NULL,
507 setting_network_popup_response_cb,
510 elm_popup_timeout_set(ad->network_ug_pop, 2.0);
515 void setting_network_popup_update(void *data, char *str_content, bool keep)
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);
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);
533 elm_popup_timeout_set(ad->network_ug_pop, 2.0);
537 Evas_Object *setting_network_create_register_popup(void *data)
541 retvm_if(data == NULL, NULL,
542 "[Setting > Network] Data parameter is NULL");
544 SettingNetworkUG *ad = (SettingNetworkUG *) data;
545 Evas_Object *popup = NULL;
547 setting_create_popup_without_btn(ad, ad->win_get, _("Registering"), NULL,
548 setting_network_popup_response_cb, POPUP_INTERVAL);
553 Evas_Object *setting_network_preferred_network_create_save_popup(void *data)
557 retvm_if(data == NULL, NULL,
558 "[Setting > Network] Data parameter is NULL");
560 SettingNetworkUG *ad = (SettingNetworkUG *) data;
561 Evas_Object *popup = NULL;
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;
569 Evas_Object *setting_network_preferred_network_create_delete_popup(void *data)
573 retvm_if(data == NULL, NULL,
574 "[Setting > Network] Data parameter is NULL");
576 SettingNetworkUG *ad = (SettingNetworkUG *) data;
577 Evas_Object *popup = NULL;
579 setting_create_popup_without_btn(ad, ad->win_get, _("IDS_COM_SK_DELETE"), NULL,
580 setting_network_popup_response_cb, 0);
585 Evas_Object *setting_network_select_network_create_search_popup(void *data)
589 retv_if(data == NULL, NULL);
591 SettingNetworkUG *ad = (SettingNetworkUG *) data;
592 Evas_Object *popup = NULL;
594 setting_create_popup_without_btn(ad, ad->win_get, _("IDS_COM_POP_SEARCHING"),
600 void setting_network_preferred_network_create_isf(Evas_Object *entry)
605 ("Given focus to the entry and then soft keyboard will be shown automatically !");
606 elm_object_focus_set(entry, EINA_TRUE);
609 /* ***************************************************
613 ***************************************************/
619 void setting_network_tapi_event_callback(TelTapiEvent_t *event, void *data)
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;
629 switch (event->EventClass) {
630 case TAPI_EVENT_CLASS_NETWORK:
632 switch (event->EventType) {
633 /* search network list */
634 case TAPI_EVENT_NETWORK_SEARCH_CNF:
636 SETTING_TRACE_DEBUG("Case: TAPI_EVENT_NETWORK_SEARCH_CNF");
638 setting_network_popup_delete(ad);
641 if (!ad->b_searching_network) {
642 /*The requeset has already been canceled, don't do detail process*/
645 bool need_reset_flag = FALSE;
646 if (ad->data_search_network_item)
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;
653 elm_object_item_del(ad->data_search_network_item->item);
654 ad->data_search_network_item = NULL;
657 ad->b_searching_network = FALSE;
659 if (event->Status == TAPI_NETWORK_NO_ERR) {
662 ret_if(NULL == event->pData);
663 memcpy(&(ad->plmn_info), event->pData,
664 sizeof(TelNetworkPlmnList_t));
666 Setting_GenGroupItem_Data *item_data = NULL;
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) {
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)) {
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,
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)
697 SETTING_TRACE_ERROR("Failed to calloc memory");
701 item_data->userdata = ad;
702 if (need_reset_flag &&
703 0 == safeStrCmp(pa_net_name, ad->plmn_info.network_list[cnt].network_name))
705 elm_radio_value_set(ad->chk_sel, item_data->chk_status);//let select nothing
712 SETTING_TRACE("Found %d valid networks in total[%d]", valid_cnt, cnt);
713 setting_network_popup_update(ad, _("Searched"), FALSE);
715 setting_network_popup_update(ad, _("Searching network failed"), FALSE);
720 case TAPI_EVENT_NETWORK_SELECT_CNF:
722 SETTING_TRACE_DEBUG("Case: set plmn(ad->sel_net:%d)",
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))
730 /*The requeset has already been canceled, return directly*/
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");
742 &setting_view_network_select_network,
743 &setting_view_network_main, ad);
748 setting_finish_progress_genlist_item(ad->data_selected_network_item);
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");
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";
760 if (ad->data_auto_network_item) {
761 if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == ad->sel_net)
763 elm_genlist_item_item_class_update(
764 ad->data_auto_network_item->item,
765 &ad->itc_2text_2icon_3);
767 SETTING_TRACE_DEBUG("After set as Automatic, update "\
768 "ad->data_auto_network_item to be [%s]",
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);
775 elm_genlist_item_item_class_update(
776 ad->data_auto_network_item->item,
777 &ad->itc_1text_2icon);
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"),
787 snprintf(sub_desc, MAX_COMMON_BUFFER_LEN,
788 "%s. %s", _("IDS_COM_BODY_MANUAL"),
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);
799 ad->b_set_auto_network = FALSE;
800 ad->b_set_manul_network = FALSE;
805 /*get select network*/
806 case TAPI_EVENT_NETWORK_GETSELECTIONMODE_CNF:
808 SETTING_TRACE_DEBUG("Case: get select network");
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]",
817 ad->sel_net == 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";
827 if (TAPI_NETWORK_SELECTIONMODE_AUTOMATIC == sel) {
828 snprintf(sub_desc, MAX_COMMON_BUFFER_LEN,
829 "%s. %s", _("IDS_COM_BODY_AUTOMATIC"),
832 } else if(TAPI_NETWORK_SELECTIONMODE_MANUAL == sel) {
833 snprintf(sub_desc, MAX_COMMON_BUFFER_LEN,
834 "%s. %s", _("IDS_COM_BODY_MANUAL"),
837 SETTING_TRACE_DEBUG("Update "\
838 "ad->data_sel_net to be [%s]",
840 if (ad->data_sel_net && !isEmptyStr(sub_desc))
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);
853 ("*** [ERR] TAPI_EVENT_NETWORK_GETSELECTIONMODE_CNF, STATUS=0x%x ***",
858 /* get network mode */
859 case TAPI_EVENT_NETWORK_GETNWBAND_CNF:
861 SETTING_TRACE_DEBUG("Case: TAPI_EVENT_NETWORK_GETNWBAND_CNF");
864 TAPI_NETWORK_NO_ERR) {
865 TelNetworkBand_t band;
866 int temp_net_mode = 0;
867 memcpy(&band, event->pData,
870 temp_net_mode = (int)band;
871 /* ***BEGIN*** Fixed the problem of word twinkle SAMSUNG 2010/7/21 modify */
876 const char *sub_desc =
878 switch (ad->net_mode) {
879 case TAPI_NETWORK_BAND_TYPE_ANY:
881 _("IDS_COM_BODY_AUTOMATIC");
883 case TAPI_NETWORK_BAND_TYPE_GSM_900_1800:
885 _(STR_SETTING_GSM_900_1800);
887 case TAPI_NETWORK_BAND_TYPE_GSM_850_1900:
889 _(STR_SETTING_GSM_850_1900);
891 case TAPI_NETWORK_BAND_TYPE_WCDMA:
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);
905 (VCONFKEY_SETAPPL_NETWORK_MODE_INT,
908 /* ****END**** Fixed the problem of word twinkle SAMSUNG 2010/7/21 modify */
911 ("*** [ERR] TAPI_EVENT_NETWORK_GETNWBAND_CNF, STATUS=0x%x ***",
917 /* set network mode */
918 case TAPI_EVENT_NETWORK_SETNWBAND_CNF:
920 SETTING_TRACE_DEBUG("Case: TAPI_EVENT_NETWORK_SETNWBAND_CNF");
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,
930 char *sub_des = NULL;
932 switch (ad->net_mode) {
933 case TAPI_NETWORK_BAND_TYPE_ANY:
934 sub_des = _("IDS_COM_BODY_AUTOMATIC");
937 case TAPI_NETWORK_BAND_TYPE_GSM_900_1800:
938 sub_des = _(STR_SETTING_GSM_900_1800);
941 case TAPI_NETWORK_BAND_TYPE_GSM_850_1900:
942 sub_des = _(STR_SETTING_GSM_850_1900);
945 case TAPI_NETWORK_BAND_TYPE_WCDMA:
946 sub_des = _(STR_SETTING_UMTS);
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);
960 ("*** [ERR] TAPI_EVENT_NETWORK_SETNWBAND_CNF, STATUS=0x%x ***",
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);
972 /* get preferred network */
973 case TAPI_EVENT_NETWORK_GETPREFFEREDPLMN_CNF:
975 SETTING_TRACE_DEBUG("Case: TAPI_EVENT_NETWORK_GETPREFFEREDPLMN_CNF");
978 TAPI_NETWORK_NO_ERR) {
979 memset(&(ad->pref_list), 0x00,
981 (TelNetworkPrefferedPlmnList_t));
982 memcpy(&(ad->pref_list),
985 (TelNetworkPrefferedPlmnList_t));
988 ("*********** ad->op_type = %d",
991 ("ad->pref_list.NumOfPreffPlmns:%d",
993 pref_list.NumOfPreffPlmns);
994 switch (ad->op_type) {
995 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE:
997 setting_network_preferred_network_delete_draw_network_list
1003 setting_network_preferred_network_refresh_view
1006 [MAX_DISPLAY_NAME_LEN_ON_UI]
1008 if (ad->pref_list.NumOfPreffPlmns > 1) {
1009 snprintf(info, sizeof(info),
1010 "Get %d preferred networks",
1011 ad->pref_list.NumOfPreffPlmns);
1013 snprintf(info, sizeof(info),
1014 "Get %d preferred network",
1015 ad->pref_list.NumOfPreffPlmns);
1017 setting_network_popup_update(ad, info,
1023 switch (ad->op_type) {
1024 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE:
1026 setting_network_preferred_network_delete_failed
1032 setting_network_popup_update(ad,
1033 _("Get preferred network failed"),
1041 /* set preferred network */
1042 case TAPI_EVENT_NETWORK_SETPREFFEREDPLMN_CNF:
1044 SETTING_TRACE_DEBUG("Case: TAPI_EVENT_NETWORK_SETPREFFEREDPLMN_CNF");
1046 if (event->Status !=
1047 TAPI_NETWORK_NO_ERR) {
1048 switch (ad->op_type) {
1049 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE:
1051 setting_network_preferred_network_delete_failed
1057 setting_network_popup_update
1058 (ad, _("IDS_COM_POP_ERROR"),
1064 int request_id = -1;
1065 int tapi_ret = TAPI_API_SUCCESS;
1066 switch (ad->op_type) {
1067 case SETTING_NETWORK_PREFERRED_NETWORK_NEW:
1070 (&setting_view_network_preferred_network_new,
1071 &setting_view_network_preferred_network,
1074 tel_get_network_preferred_plmn
1079 case SETTING_NETWORK_PREFERRED_NETWORK_LIST:
1083 (&setting_view_network_preferred_network_list,
1084 &setting_view_network_preferred_network,
1087 tel_get_network_preferred_plmn
1092 case SETTING_NETWORK_PREFERRED_NETWORK_EDIT:
1095 (&setting_view_network_preferred_network_edit,
1096 &setting_view_network_preferred_network,
1099 tel_get_network_preferred_plmn
1103 case SETTING_NETWORK_PREFERRED_NETWORK_DELETE:
1105 setting_network_preferred_network_delete_ok
1112 (" Unknown prederred network type");
1120 ("*** [ERR] tel_get_network_preferred_plmn. err=%d ***",
1129 ("Unkonwn TAPI event");
1137 SETTING_TRACE_DEBUG("Unkonwn TAPI event class");
1144 void setting_network_register_network(Setting_GenGroupItem_Data* list_item)
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;
1152 int tapi_ret = TAPI_API_INVALID_INPUT;
1155 //cancel the searching operation
1157 if (ad->data_search_network_item)
1159 elm_object_item_del(ad->data_search_network_item->item);
1160 ad->data_search_network_item = NULL;
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);
1172 ad->b_searching_network = FALSE;
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);
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;
1189 ad->sel_net = TAPI_NETWORK_SELECTIONMODE_MANUAL;
1190 ad->b_set_manul_network = TRUE;
1191 ad->b_set_auto_network = FALSE;
1194 SETTING_TRACE("ad->plmn_info.networks_count:%d",
1195 ad->plmn_info.networks_count);
1196 for(; cnt < ad->plmn_info.networks_count; cnt++)
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))
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);
1218 //ASYNC API - TAPI_EVENT_NETWORK_SELECT_CNF
1219 tapi_ret = tel_select_network_manual(
1220 ad->plmn_info.network_list[cnt].plmn_id,
1222 if(tapi_ret != TAPI_API_SUCCESS)
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"),
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;
1244 void setting_network_select_network_chk_changed(void *data, Evas_Object *obj,
1247 SETTING_TRACE_BEGIN;
1248 retm_if(data == NULL || obj == NULL, "Parameter is NULL");
1249 Setting_GenGroupItem_Data* list_item = (Setting_GenGroupItem_Data *)data;
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);
1258 void setting_network_Gendial_select_plmn_cb(void *data, Evas_Object *obj,
1261 SETTING_TRACE_BEGIN;
1262 retm_if(data == NULL || event_info == NULL, "Parameter is NULL");
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);
1269 int old_chk_status = elm_radio_value_get(ad->chk_sel);
1270 if (old_chk_status != list_item->chk_status)
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);
1279 UG_MODULE_API int setting_plugin_reset(bundle *data, void *priv)
1281 SETTING_TRACE_BEGIN;
1284 #if SUPPORT_RUN_SYSTEM_COMMAND
1285 ret += excuteCmd(SETTING_POSTINST_FILE, 1, "network");
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);
1292 if (net_register_client((net_event_cb_t)__network_evt_cb, NULL) != NET_ERR_NONE) {
1293 SETTING_TRACE_ERROR("net_register_client. failed");
1296 int tapi_ret = tel_select_network_automatic(&request_id);
1297 if (tapi_ret != TAPI_API_SUCCESS) {
1299 SETTING_TRACE_ERROR("tel_select_network_automatic. tapi_ret=%d", tapi_ret);
1303 tapi_ret = tel_set_network_band(TAPI_NETWORK_BAND_MODE_ONLY,
1304 TAPI_NETWORK_BAND_TYPE_ANY,
1306 if (tapi_ret != TAPI_API_SUCCESS) {
1308 SETTING_TRACE_ERROR("tel_set_network_band. tapi_ret=%d", tapi_ret);
1311 if (net_deregister_client() != NET_ERR_NONE) {
1313 SETTING_TRACE_ERROR("net_deregister_client failed");