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-main.h>
20 static int setting_network_main_create(void *cb);
21 static int setting_network_main_destroy(void *cb);
22 static int setting_network_main_update(void *cb);
23 static int setting_network_main_cleanup(void *cb);
25 setting_view setting_view_network_main = {
26 .create = setting_network_main_create,
27 .destroy = setting_network_main_destroy,
28 .update = setting_network_main_update,
29 .cleanup = setting_network_main_cleanup,
32 static void setting_network_main_item_Gendial_mouse_up_cb(void *data,
35 static void setting_network_main_click_softkey_help_cb(void *data,
38 static void setting_network_main_click_softkey_back_cb(void *data,
41 static void setting_network_main_chk_btn_cb(void *data, Evas_Object *obj,
43 static void setting_network_use_packet_resp_cb(void *data, Evas_Object *obj,
46 /* ***************************************************
50 ***************************************************/
51 static void __ask_create_gsm_resp_cb(void *data, Evas_Object *obj,
56 SettingNetworkUG *ad = (SettingNetworkUG *) data;
58 int response_type = btn_type(obj);
59 bool rollback_flag = FALSE;
60 if (POPUP_RESPONSE_OK == response_type) {
61 int tapi_ret = TAPI_API_INVALID_INPUT;
64 //async: TAPI_EVENT_NETWORK_SETNWBAND_CNF
66 tel_set_network_band(TAPI_NETWORK_BAND_MODE_ONLY,
67 TAPI_NETWORK_BAND_TYPE_GSM_850_1900,
69 if (tapi_ret != TAPI_API_SUCCESS) {
71 ("%s*** [ERR] tel_set_network_band. tapi_ret=%d ***%s",
72 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
77 } else if (POPUP_RESPONSE_CANCEL == response_type) {
84 int value = TAPI_NETWORK_BAND_TYPE_ANY;
85 setting_get_int_slp_key(ad->data_net_mode->int_slp_setting_binded,
87 /** @todo check 'err' variable for exception handling */
88 elm_radio_value_set(ad->data_net_mode->rgd, value);
90 evas_object_del(ad->pop_gsm);
94 void __network_sub_list_sel_cb(void *data, Evas_Object *obj, void *event_info)
98 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
100 SettingNetworkUG *ad = (SettingNetworkUG *) data;
101 Elm_Object_Item *subitem = (Elm_Object_Item *) event_info;
102 elm_genlist_item_selected_set(subitem, 0);
103 Setting_GenGroupItem_Data *data_subItem = elm_object_item_data_get(subitem);
104 if (data_subItem->chk_status == elm_radio_value_get(ad->data_net_mode->rgd))
108 elm_radio_value_set(ad->data_net_mode->rgd, data_subItem->chk_status);
110 int tapi_ret = TAPI_API_INVALID_INPUT;
112 TelNetworkBand_t band = TAPI_NETWORK_BAND_TYPE_ANY;
114 switch (data_subItem->chk_status) {
116 case TAPI_NETWORK_BAND_TYPE_ANY:
117 band = TAPI_NETWORK_BAND_TYPE_ANY;
120 case TAPI_NETWORK_BAND_TYPE_GSM_900_1800:
121 band = TAPI_NETWORK_BAND_TYPE_GSM_900_1800;
124 case TAPI_NETWORK_BAND_TYPE_GSM_850_1900:
125 ad->pop_gsm = setting_create_popup_with_btn(ad,
127 _("This band may not operate<br>outside the USA or Canada"),
129 __ask_create_gsm_resp_cb,
130 0, 2, _("IDS_COM_SK_YES"),_("IDS_COM_SK_NO"));
133 case TAPI_NETWORK_BAND_TYPE_WCDMA:
134 setting_network_popup_create(ad,
135 _("UTMS mode works inside <br>3G coverage area only"),
137 band = TAPI_NETWORK_BAND_TYPE_WCDMA;
140 SETTING_TRACE("Unknown Tel-Net band type");
144 //async: TAPI_EVENT_NETWORK_SETNWBAND_CNF
146 tel_set_network_band(TAPI_NETWORK_BAND_MODE_ONLY, band,
148 if (tapi_ret != TAPI_API_SUCCESS) {
150 ("%s*** [ERR] tel_set_network_band. tapi_ret=%d ***%s",
151 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
155 int value = TAPI_NETWORK_BAND_TYPE_ANY;
156 setting_get_int_slp_key(ad->data_net_mode->int_slp_setting_binded,
158 /** @todo check 'err' variable for exception handling */
159 elm_radio_value_set(ad->data_net_mode->rgd, value);
166 __setting_network_main_exp_cb(void *data, Evas_Object *obj, void *event_info)
168 ret_if(NULL == data || NULL == event_info);
170 SettingNetworkUG *ad = (SettingNetworkUG *) data;
171 Elm_Object_Item *parentItem = event_info; /* parent item */
172 Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem); /* parent data */
173 Evas_Object *scroller = elm_object_item_widget_get(parentItem);
176 if (data_parentItem == ad->data_net_mode) {
177 rgd = elm_radio_add(scroller);
178 elm_radio_value_set(rgd, -1);
180 setting_create_Gendial_exp_sub_field(scroller,
181 &(ad->itc_1icon_1text_sub),
182 __network_sub_list_sel_cb,
184 SWALLOW_Type_1RADIO, rgd,
185 TAPI_NETWORK_BAND_TYPE_ANY,
186 "IDS_COM_BODY_AUTOMATIC", NULL);
188 setting_create_Gendial_exp_sub_field(scroller,
189 &(ad->itc_1icon_1text_sub),
190 __network_sub_list_sel_cb,
192 SWALLOW_Type_1RADIO, rgd,
193 TAPI_NETWORK_BAND_TYPE_GSM_900_1800,
194 STR_SETTING_GSM_900_1800, NULL);
196 setting_create_Gendial_exp_sub_field(scroller,
197 &(ad->itc_1icon_1text_sub),
198 __network_sub_list_sel_cb,
200 SWALLOW_Type_1RADIO, rgd,
201 TAPI_NETWORK_BAND_TYPE_GSM_850_1900,
202 STR_SETTING_GSM_850_1900, NULL);
204 setting_create_Gendial_exp_sub_field(scroller,
205 &(ad->itc_1icon_1text_sub),
206 __network_sub_list_sel_cb,
208 SWALLOW_Type_1RADIO, rgd,
209 TAPI_NETWORK_BAND_TYPE_WCDMA,
210 STR_SETTING_UMTS, NULL);
212 data_parentItem->rgd = rgd;
213 setting_update_chk_status(rgd, data_parentItem->int_slp_setting_binded);
219 #define Data_packet_Desc _("IDS_ST_BODY_MOBILE_DATA_WILL_BE_USED_IF_YOU_DOWNLOAD_OR_UPLOAD_DATA_WITHOUT_WI_FI_CONNECTION")
220 static int setting_network_main_create(void *cb)
223 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
225 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
230 Evas_Object *scroller;
236 setting_create_layout_navi_bar_genlist(ad->win_main_layout,
238 _("IDS_ST_BODY_NETWORK"),
239 dgettext("sys_string",
240 "IDS_COM_BODY_BACK"),
241 dgettext("sys_string",
242 "IDS_COM_BODY_HELP"),
243 setting_network_main_click_softkey_back_cb,
244 setting_network_main_click_softkey_help_cb,
248 setting_enable_expandable_genlist(scroller, ad,
249 __setting_network_main_exp_cb, NULL);
250 Elm_Object_Item *item = NULL;;
253 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
254 ELM_GENLIST_ITEM_NONE, NULL, NULL);
255 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
257 int value_use_packet;
259 setting_get_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
260 &value_use_packet, &err_use_packet);
261 /** @todo check 'err_use_packet' variable for exception handling */
262 // Under emulator environment, it fails to control data network connections
264 ad->data_use_packet =
265 setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon),
266 setting_network_main_item_Gendial_mouse_up_cb,
267 ad, SWALLOW_Type_1TOGGLE, NULL,
268 NULL, value_use_packet,
269 KeyStr_UsePacketData, NULL,
270 setting_network_main_chk_btn_cb);
271 if (ad->data_use_packet) {
272 ad->data_use_packet->userdata = ad;
274 SETTING_TRACE_ERROR("ad->data_use_packet is NULL");
277 setting_create_Gendial_field_def(scroller, &(ad->itc_bg_1icon), NULL,
278 ad, SWALLOW_Type_LAYOUT_SPECIALIZTION,
279 NULL, NULL, 0, Data_packet_Desc, NULL,
283 char *sub_des = NULL;
284 /* NO flight mode - default */
285 tapi_ret = tel_get_network_selection_mode(&request_id);
286 if (tapi_ret != TAPI_API_SUCCESS) {
288 ("%s*** [ERR] tel_get_network_selection_mode. tapi_ret=%d ***%s",
289 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
290 sub_des = _("IDS_COM_BODY_AUTOMATIC");
293 k = vconf_get_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, &value);
296 case TAPI_NETWORK_SELECTIONMODE_AUTOMATIC:
298 sub_des = _("IDS_COM_BODY_AUTOMATIC");
301 case TAPI_NETWORK_SELECTIONMODE_MANUAL:
303 sub_des = _("IDS_COM_BODY_MANUAL");
313 const char *pa_net_name = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
314 SETTING_TRACE("pa_net_name:%s", pa_net_name);
315 if (NULL == pa_net_name) {
316 pa_net_name = "IDS_ST_BODY_NOSERVICE";
319 char sel_network_desc[MAX_COMMON_BUFFER_LEN] = { 0, };
320 snprintf(sel_network_desc, MAX_COMMON_BUFFER_LEN,
321 "%s. %s", sub_des, _(pa_net_name));
324 ad->data_sel_net = setting_create_Gendial_field_def(scroller,
326 setting_network_main_item_Gendial_mouse_up_cb,
327 ad, SWALLOW_Type_INVALID,
329 "IDS_ST_BODY_SELECT_NETWORK",
330 sel_network_desc, NULL);
331 if (ad->data_sel_net) {
332 ad->data_sel_net->userdata = ad;
334 SETTING_TRACE_ERROR("ad->data_sel_net is NULL");
337 tapi_ret = tel_get_network_band(&request_id);
338 if (tapi_ret != TAPI_API_SUCCESS) {
340 ("%s*** [ERR] tel_get_network_band. tapi_ret=%d ***%s",
341 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
342 sub_des = _("IDS_COM_BODY_AUTOMATIC");
345 k = vconf_get_int(VCONFKEY_SETAPPL_NETWORK_MODE_INT, &value);
347 SETTING_TRACE("value:%d", value);
349 case TAPI_NETWORK_BAND_TYPE_ANY:
350 sub_des = _("IDS_COM_BODY_AUTOMATIC");
352 case TAPI_NETWORK_BAND_TYPE_GSM_900_1800:
353 sub_des = _(STR_SETTING_GSM_900_1800);
355 case TAPI_NETWORK_BAND_TYPE_GSM_850_1900:
356 sub_des = _(STR_SETTING_GSM_850_1900);
358 case TAPI_NETWORK_BAND_TYPE_WCDMA:
359 sub_des = _(STR_SETTING_UMTS);
367 setting_create_Gendial_exp_parent_field(scroller,
368 &(ad->itc_2text_3_parent),
370 SWALLOW_Type_INVALID,
371 "IDS_ST_BODY_NETWORK_MODE",
373 if (ad->data_net_mode) {
374 ad->data_net_mode->int_slp_setting_binded =
375 INT_SLP_SETTING_NETWORK_MODE;
376 ad->data_net_mode->userdata = ad;
378 SETTING_TRACE_ERROR("ad->data_back is NULL");
381 setting_create_Gendial_field_def(scroller, &(ad->itc_1text),
382 setting_network_main_item_Gendial_mouse_up_cb,
383 ad, SWALLOW_Type_INVALID, NULL, NULL,
384 0, "IDS_ST_BODY_INTERNET_CONNECTION",
386 #ifdef ENABLED_PREFERRED_NETWORKS
387 setting_create_Gendial_field_def(scroller, &(ad->itc_1text),
388 setting_network_main_item_Gendial_mouse_up_cb,
389 ad, SWALLOW_Type_INVALID, NULL, NULL,
390 0, "IDS_ST_BODY_PREFERRED_NETWORKS",
393 #ifdef ENABLED_2G3G_NETWORK
394 /* create 3g connection option */
395 setting_create_Gendial_field_def(scroller, &(ad->itc_1text),
396 setting_network_main_item_Gendial_mouse_up_cb,
397 ad, SWALLOW_Type_INVALID, NULL, NULL,
398 0, "2G/3G Connection", NULL, NULL);
400 /* add blank rectangle */
402 setting_view_network_main.is_create = 1;
403 return SETTING_RETURN_SUCCESS;
406 static int setting_network_main_destroy(void *cb)
409 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
411 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
413 if (ad->ly_main != NULL) {
414 evas_object_del(ad->ly_main);
416 ad->data_sel_net = NULL;//reset NULL after genlis destoryed with ly_main.
418 setting_view_network_main.is_create = 0;
419 return SETTING_RETURN_SUCCESS;
422 static int setting_network_main_update(void *cb)
426 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
428 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
430 if (ad->ly_main != NULL) {
432 evas_object_show(ad->ly_main);
436 return SETTING_RETURN_SUCCESS;
439 static int setting_network_main_cleanup(void *cb)
441 return SETTING_RETURN_SUCCESS;
444 /* ***************************************************
448 ***************************************************/
450 /* ***************************************************
454 ***************************************************/
457 setting_network_main_click_softkey_help_cb(void *data, Evas_Object *obj,
462 retm_if(data == NULL, "Data parameter is NULL");
464 SettingNetworkUG *ad = (SettingNetworkUG *) data;
465 setting_view_change(&setting_view_network_main,
466 &setting_view_network_main_help, ad);
470 setting_network_main_click_softkey_back_cb(void *data, Evas_Object *obj,
475 retm_if(data == NULL, "Data parameter is NULL");
477 SettingNetworkUG *ad = (SettingNetworkUG *) data;
478 /* Send destroy request */
479 ug_destroy_me(ad->ug);
483 setting_network_main_item_Gendial_mouse_up_cb(void *data, Evas_Object *obj,
488 setting_retm_if(data == NULL, "Data parameter is NULL");
489 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
490 elm_genlist_item_selected_set(item, 0);
491 Setting_GenGroupItem_Data *list_item =
492 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
494 SettingNetworkUG *ad = (SettingNetworkUG *) data;
496 SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
499 if (!safeStrCmp("IDS_ST_BODY_SELECT_NETWORK", list_item->keyStr)) {
501 setting_view_change(&setting_view_network_main,
502 &setting_view_network_select_network,
506 ("IDS_ST_BODY_INTERNET_CONNECTION", list_item->keyStr)) {
508 ad->con_type = NET_SERVICE_INTERNET;
510 setting_view_change(&setting_view_network_main,
511 &setting_view_network_connection_create,
514 #ifdef ENABLED_PREFERRED_NETWORKS
515 else if (!safeStrCmp("IDS_ST_BODY_PREFERRED_NETWORKS",
516 list_item->keyStr)) {
521 setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value,
523 /** @todo check 'err' variable for exception handling */
524 SETTING_TRACE("INT_SLP_SETTING_SIM_SLOT value:%d", value);
526 case VCONFKEY_TELEPHONY_SIM_INSERTED:
527 /* To Recreate the view in order to search the perferred network again. */
528 /* ret = setting_view_destroy(&setting_view_network_preferred_network, ad); */
530 setting_view_change(&setting_view_network_main,
531 &setting_view_network_preferred_network,
536 case VCONFKEY_TELEPHONY_SIM_NOT_PRESENT:
538 setting_create_popup_without_title(NULL, ad->win_get,
540 ("IDS_ST_SECURITY_BODY_NOIMSI"));
542 ("%s*** [ERR] INCORRECTED SIM. sim_slot_type=%d ***%s",
543 SETTING_FONT_RED, value, SETTING_FONT_BLACK);
548 case VCONFKEY_TELEPHONY_SIM_CARD_ERROR:
549 case VCONFKEY_TELEPHONY_SIM_UNKNOWN:
551 setting_create_popup_without_title(NULL, ad->win_get,
553 ("IDS_COM_BODY_INVALID_SIM_CARD"));
555 ("%s*** [ERR] INCORRECTED SIM. sim_slot_type=%d ***%s",
556 SETTING_FONT_RED, value, SETTING_FONT_BLACK);
561 SETTING_TRACE("Unknown SIM information from vconf");
566 #ifdef ENABLED_2G3G_NETWORK
567 else if (!safeStrCmp("2G/3G Connection", list_item->keyStr)) {
569 setting_view_change(&setting_view_network_main,
570 &setting_view_network_3gcon, ad);
573 else if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
574 int old_status = elm_check_state_get(list_item->eo_check);
576 list_item->chk_status = !old_status;
577 elm_check_state_set(list_item->eo_check, list_item->chk_status);
579 if (!list_item->chk_status) {
580 setting_set_bool_slp_key
581 (BOOL_SLP_SETTING_USE_PACKET_DATA,
582 SETTING_ON_OFF_BTN_OFF, &err);
583 /** @todo check 'err' variable for exception handling */
586 setting_create_popup_with_btn(ad, ad->win_get,
587 _("Data packet through 3G network will be consumed, if you use data download or upload without Wi-Fi connection.Continue?"),
589 setting_network_use_packet_resp_cb,
590 0, 2, _("IDS_COM_SK_YES"),_("IDS_COM_SK_NO"));
596 setting_network_main_chk_btn_cb(void *data, Evas_Object *obj, void *event_info)
600 retm_if(data == NULL, "Data parameter is NULL");
601 SettingNetworkUG *ad = NULL;
602 Setting_GenGroupItem_Data *list_item =
603 (Setting_GenGroupItem_Data *) data;
604 ad = list_item->userdata;
605 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
607 if (obj == ad->data_use_packet->eo_check) {
610 if (list_item->chk_status) {
612 setting_create_popup_with_btn(ad, ad->win_get,
613 _("Data packet through 3G network will be consumed, if you use data download or upload without Wi-Fi connection.Continue?"),
615 setting_network_use_packet_resp_cb,
616 0, 2, _("IDS_COM_SK_YES"),_("IDS_COM_SK_NO"));
618 setting_set_bool_slp_key
619 (BOOL_SLP_SETTING_USE_PACKET_DATA,
620 SETTING_ON_OFF_BTN_OFF, &err);
621 /** @todo check 'err' variable for exception handling */
622 elm_check_state_set(ad->data_use_packet->eo_check, 0);
623 ad->data_use_packet->chk_status = 0;
629 setting_network_use_packet_resp_cb(void *data, Evas_Object *obj,
633 retm_if(data == NULL, "Data parameter is NULL");
635 SettingNetworkUG *ad = (SettingNetworkUG *) data;
636 int err; /* error check */
637 int response_type = btn_type(obj);
638 if (POPUP_RESPONSE_OK == response_type) {
639 setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
640 SETTING_ON_OFF_BTN_ON, &err);
641 /** @todo check 'err' variable for exception handling */
642 elm_check_state_set(ad->data_use_packet->eo_check, 1);
643 ad->data_use_packet->chk_status = 1;
644 } else if (POPUP_RESPONSE_CANCEL == response_type) {
645 setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
646 SETTING_ON_OFF_BTN_OFF, &err);
647 /** @todo check 'err' variable for exception handling */
648 elm_check_state_set(ad->data_use_packet->eo_check, 0);
649 ad->data_use_packet->chk_status = 0;
653 evas_object_del(ad->popup);