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-connection-create.h>
20 static int setting_network_connection_create(void *cb);
21 static int setting_network_connection_destroy(void *cb);
22 static int setting_network_connection_update(void *cb);
23 static int setting_network_connection_cleanup(void *cb);
25 setting_view setting_view_network_connection_create = {
26 .create = setting_network_connection_create,
27 .destroy = setting_network_connection_destroy,
28 .update = setting_network_connection_update,
29 .cleanup = setting_network_connection_cleanup,
32 SettingNetworkUG *g_networkUG = NULL;
33 #define SUPPORT_EXPANDABLE_AUTHTYPE 1
35 /* ***************************************************
39 ***************************************************/
42 __network_connection_gl_mouse_up(void *data, Evas *e, Evas_Object *obj,
46 SettingNetworkUG *ad = (SettingNetworkUG *) data;
48 if (ad->data_acs_name) {
49 setting_hide_input_pannel_cb(ad->data_acs_name->eo_check);
51 if (ad->data_user_name) {
52 setting_hide_input_pannel_cb(ad->data_user_name->eo_check);
55 setting_hide_input_pannel_cb(ad->data_pwd->eo_check);
57 if (ad->data_pxy_addr) {
58 setting_hide_input_pannel_cb(ad->data_pxy_addr->eo_check);
60 if (ad->data_pxy_port) {
61 setting_hide_input_pannel_cb(ad->data_pxy_port->eo_check);
63 if (ad->data_hm_url) {
64 setting_hide_input_pannel_cb(ad->data_hm_url->eo_check);
69 void __sub_list_rd_change(void *data, Evas_Object *obj, void *event_info)
72 retm_if(data == NULL, "Data parameter is NULL");
73 Setting_GenGroupItem_Data *list_item =
74 (Setting_GenGroupItem_Data *) data;
75 list_item->chk_status = elm_radio_value_get(obj); /* for update */
77 Elm_Object_Item *subItem = list_item->item;
78 Elm_Object_Item *parentItem = elm_genlist_item_parent_get(subItem);
80 Setting_GenGroupItem_Data *data_subItem = elm_object_item_data_get(subItem); /* subItem data */
81 Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem); /* parent data */
83 ret_if(NULL == data_subItem || NULL == data_parentItem);
85 data_parentItem->sub_desc = (char *)g_strdup(_(data_subItem->keyStr));
86 elm_object_item_data_set(data_parentItem->item, data_parentItem);
87 elm_genlist_item_update(data_parentItem->item);
88 setting_network_edit_connection_display_auth_type
89 (data_parentItem->userdata, list_item->chk_status);
92 void __sub_list_sel_cb(void *data, Evas_Object *obj, void *event_info)
96 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
97 Elm_Object_Item *subitem = (Elm_Object_Item *) event_info;
98 Elm_Object_Item *parentItem = elm_genlist_item_parent_get(subitem);
99 elm_genlist_item_selected_set(subitem, 0);
100 Setting_GenGroupItem_Data *data_subItem =
101 elm_object_item_data_get(subitem);
102 Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem); /* parent data */
103 ret_if(NULL == data_subItem || NULL == data_parentItem);
105 elm_radio_value_set(data_subItem->rgd, data_subItem->chk_status);
107 data_parentItem->sub_desc = (char *)g_strdup(_(data_subItem->keyStr));
108 elm_object_item_data_set(data_parentItem->item, data_parentItem);
109 elm_genlist_item_update(data_parentItem->item);
110 setting_network_edit_connection_display_auth_type(data,
111 data_subItem->chk_status);
114 static void __setting_network_connection_exp_cb(void *data, Evas_Object *obj,
117 ret_if(NULL == data || NULL == event_info);
119 SettingNetworkUG *ad = (SettingNetworkUG *) data;
120 Elm_Object_Item *parentItem = event_info; /* parent item */
121 Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem); /* parent data */
122 Evas_Object *scroller = elm_object_item_widget_get(parentItem);
125 if (data_parentItem == ad->data_auth_type) {
126 rgd = elm_radio_add(scroller);
127 elm_radio_value_set(rgd, -1);
129 setting_create_Gendial_exp_sub_field(scroller,
130 &(ad->itc_1icon_1text_sub),
131 __sub_list_sel_cb, ad,
133 SWALLOW_Type_1RADIO, rgd,
135 "IDS_IDLE_BODY_NORMAL",
136 __sub_list_rd_change);
138 setting_create_Gendial_exp_sub_field(scroller,
139 &(ad->itc_1icon_1text_sub),
140 __sub_list_sel_cb, ad,
142 SWALLOW_Type_1RADIO, rgd,
144 "IDS_ST_BODY_SECURE",
145 __sub_list_rd_change);
147 setting_create_Gendial_exp_sub_field(scroller,
148 &(ad->itc_1icon_1text_sub),
149 __sub_list_sel_cb, ad,
151 SWALLOW_Type_1RADIO, rgd,
154 __sub_list_rd_change);
156 elm_radio_value_set(rgd, ad->chkType);
160 static int setting_network_connection_create(void *cb)
163 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
165 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
167 setting_retvm_if(NET_SERVICE_INTERNET != ad->con_type,
168 SETTING_GENERAL_ERR_WRONG_PARAMETER,
169 "Invalid connection type[%d]", ad->con_type)
171 const char *title = NULL;
172 if (ad->con_type == NET_SERVICE_INTERNET) {
173 title = _("IDS_ST_BODY_INTERNET_CONNECTION");
176 Evas_Object *scroller = elm_genlist_add(ad->win_main_layout);
177 retvm_if(scroller == NULL, SETTING_DRAW_ERR_FAIL_SCROLLER,
178 "Cannot set scroller object as contento of layout");
179 elm_genlist_clear(scroller); /* first to clear list */
181 /* Enabling illume notification property for window */
182 elm_win_conformant_set(ad->win_main_layout, 1);
183 Evas_Object *conformant = elm_conformant_add(ad->win_main_layout);
184 elm_object_style_set(conformant, "internal_layout"); /* By Kollus. 2011-01-04 */
185 evas_object_show(conformant);
186 elm_object_content_set(conformant, scroller);
188 ad->navi_it = setting_create_navi_bar_top_buttons((char *)title,
189 _("IDS_COM_SK_CANCEL"),
190 _("IDS_COM_SK_DONE"), NULL,
191 setting_network_edit_connection_click_softkey_cancel_cb,
192 setting_network_edit_connection_click_softkey_save_cb,
193 NULL, ad, conformant, ad->navi_bar);
194 retv_if(!ad->navi_it, SETTING_RETURN_FAIL);
195 ad->has_form_changed = FALSE;
197 setting_enable_expandable_genlist(scroller, ad,
198 __setting_network_connection_exp_cb,
200 evas_object_event_callback_add(scroller, EVAS_CALLBACK_MOUSE_UP,
201 __network_connection_gl_mouse_up, ad);
203 ad->ed_acs_name_desc = NULL;
204 ad->ed_user_name_desc = NULL;
205 ad->ed_pwd_desc = NULL;
206 ad->ed_pxy_addr_desc = NULL;
207 ad->ed_pxy_port_desc = NULL;
208 ad->ed_hm_url_desc = NULL;
209 ad->chkType = NET_PDP_AUTH_NONE;
211 /* other intializes */
212 ad->data_hm_url = NULL;
214 ad->data_user_name = NULL;
216 if (NULL == ad->prof_list)
218 int err = net_get_profile_list(NET_DEVICE_CELLULAR, &(ad->prof_list), &(ad->prof_count));
219 if (err != NET_ERR_NONE) {
221 ("%s*** [ERR] Internet net_get_app_profile_id. err=%d ***%s",
222 SETTING_FONT_RED, err, SETTING_FONT_BLACK);
227 ad->prof_sel_idx = SETTING_ADD_PROFILE_INDEX;//need add new configuration
231 for(ci = 0;ci < ad->prof_count;ci++){
232 SETTING_TRACE_DEBUG("profList[%d].ProfileName:%s", ci,ad->prof_list[ci].ProfileName);
233 SETTING_TRACE_DEBUG("profList[%d].profile_type:%d", ci, ad->prof_list[ci].profile_type);
234 if(NET_DEVICE_CELLULAR == ad->prof_list[ci].profile_type) {
235 if (ad->con_type == ad->prof_list[ci].ProfileInfo.Pdp.ServiceType)
237 ad->prof_sel_idx = ci;
243 SETTING_TRACE("ad->prof_sel_idx:%d", ad->prof_sel_idx);
244 char ProxyAddr[NET_PROXY_LEN_MAX+1] = {0,};
245 if (SETTING_ADD_PROFILE_INDEX != ad->prof_sel_idx)//found sucessfully
247 /* load access name */
248 ad->ed_acs_name_desc = ad->prof_list[ad->prof_sel_idx].ProfileInfo.Pdp.Apn;
249 ad->ed_user_name_desc =
250 ad->prof_list[ad->prof_sel_idx].ProfileInfo.Pdp.AuthInfo.UserName;
252 ad->prof_list[ad->prof_sel_idx].ProfileInfo.Pdp.AuthInfo.AuthType;
254 ad->prof_list[ad->prof_sel_idx].ProfileInfo.Pdp.AuthInfo.Password;
259 //Fix the Port 'NULL' issue when enter connection view repeatly..
260 full_addr = safeCopyStr(ProxyAddr, ad->prof_list[ad->prof_sel_idx].ProfileInfo.Pdp.net_info.ProxyAddr, NET_PROXY_LEN_MAX);
261 addr = strsep(&full_addr, ":");
262 port = strsep(&full_addr, ":");
263 ad->ed_pxy_addr_desc = addr;
264 ad->ed_pxy_port_desc = port;
267 Elm_Object_Item *item;
270 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
271 ELM_GENLIST_ITEM_NONE, NULL, NULL);
272 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
274 setting_create_Gendial_field_def(scroller,
275 &(ad->itc_variable_height), NULL,
276 NULL, SWALLOW_Type_LAYOUT_ENTRY,
278 "IDS_ST_BODY_ACCESS_NAME",
279 (char *)ad->ed_acs_name_desc,
280 setting_network_connection_entry_changed_cb);
281 if (ad->data_acs_name) {
282 ad->data_acs_name->userdata = ad;
284 SETTING_TRACE_ERROR("ad->data_acs_name is NULL");
287 #if !SUPPORT_EXPANDABLE_AUTHTYPE
288 (void)setting_create_Gendial_field_titleItem(scroller,
289 &(ad->itc_group_item),
290 "IDS_ST_BODY_AUTH_TYPE",
292 ad->chk_type = elm_radio_add(scroller);
293 elm_radio_state_value_set(ad->chk_type, -1);
296 setting_create_Gendial_field_1radio(scroller,
297 &(ad->itc_1text_1icon_2),
298 setting_network_connection_mouse_up_Gendial_list_radio_cb,
301 ad->chk_type, NET_PDP_AUTH_PAP,
302 "IDS_IDLE_BODY_NORMAL",
303 setting_network_edit_connection_chk_changed);
304 if (ad->data_type_nor) {
305 ad->data_type_nor->userdata = ad;
307 SETTING_TRACE_ERROR("ad->data_type_nor is NULL");
311 setting_create_Gendial_field_1radio(scroller,
312 &(ad->itc_1text_1icon_2),
313 setting_network_connection_mouse_up_Gendial_list_radio_cb,
316 ad->chk_type, NET_PDP_AUTH_CHAP,
317 "IDS_ST_BODY_SECURE",
318 setting_network_edit_connection_chk_changed);
319 if (ad->data_type_sec) {
320 ad->data_type_sec->userdata = ad;
322 SETTING_TRACE_ERROR("ad->data_type_sec is NULL");
326 setting_create_Gendial_field_1radio(scroller,
327 &(ad->itc_1text_1icon_2),
328 setting_network_connection_mouse_up_Gendial_list_radio_cb,
331 ad->chk_type, NET_PDP_AUTH_NONE,
333 setting_network_edit_connection_chk_changed);
334 if (ad->data_type_none) {
335 ad->data_type_none->userdata = ad;
337 SETTING_TRACE_ERROR("ad->data_type_none is NULL");
340 elm_radio_value_set(ad->chk_type, ad->chkType);
342 ad->item_above_user_name = item =
343 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
344 ELM_GENLIST_ITEM_NONE, NULL, NULL);
345 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
348 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
349 ELM_GENLIST_ITEM_GROUP, NULL, NULL);
350 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
351 char *auth_type_desc = NULL;
352 switch (ad->chkType) {
353 case NET_PDP_AUTH_PAP:
354 auth_type_desc = _("IDS_IDLE_BODY_NORMAL");
356 case NET_PDP_AUTH_CHAP:
357 auth_type_desc = _("IDS_ST_BODY_SECURE");
359 case NET_PDP_AUTH_NONE:
360 auth_type_desc = _("IDS_COM_BODY_NONE");
363 ad->chkType = NET_PDP_AUTH_NONE;
364 auth_type_desc = _("IDS_COM_BODY_NONE");
368 setting_create_Gendial_exp_parent_field(scroller,
369 &(ad->itc_2text_3_parent),
371 SWALLOW_Type_INVALID,
372 "IDS_ST_BODY_AUTH_TYPE",
374 /* ad->data_auth_type->int_slp_setting_binded = INT_SLP_SETTING_INVALID; */
375 if (ad->data_auth_type) {
376 ad->data_auth_type->userdata = ad;
378 SETTING_TRACE_ERROR("ad->data_auth_type is NULL");
381 ad->item_above_user_name = item =
382 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
383 ELM_GENLIST_ITEM_NONE, NULL, NULL);
384 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
386 ad->is_show_user = 0;
387 if (NET_PDP_AUTH_NONE != ad->chkType) {
389 setting_create_Gendial_field_def(scroller,
390 &(ad->itc_variable_height),
392 SWALLOW_Type_LAYOUT_ENTRY,
394 "IDS_COM_BODY_USER_NAME",
396 ad->ed_user_name_desc,
397 setting_network_connection_entry_changed_cb);
398 if (ad->data_user_name) {
399 ad->data_user_name->userdata = ad;
401 SETTING_TRACE_ERROR("ad->data_user_name is NULL");
405 setting_create_Gendial_field_def(scroller,
406 &(ad->itc_variable_height),
408 SWALLOW_Type_LAYOUT_ENTRY,
410 "IDS_COM_BODY_PASSWORD",
411 (char *)ad->ed_pwd_desc,
412 setting_network_connection_entry_changed_cb);
414 ad->data_pwd->userdata = ad;
415 ad->is_show_user = 1;
416 ad->data_pwd->isPasswordFlag = TRUE;
418 SETTING_TRACE_ERROR("ad->data_pwd is NULL");
421 ad->item_above_proxy_add = item =
422 elm_genlist_item_append(scroller, &(ad->itc_seperator),
423 NULL, NULL, ELM_GENLIST_ITEM_NONE,
425 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
429 setting_create_Gendial_field_def(scroller,
430 &(ad->itc_variable_height), NULL,
431 NULL, SWALLOW_Type_LAYOUT_ENTRY,
433 "IDS_ST_BODY_CONNECTIONSETTINGS_PROXY_ADDRESS",
434 (char *)ad->ed_pxy_addr_desc,
435 setting_network_connection_entry_changed_cb);
436 if (ad->data_pxy_addr) {
437 ad->data_pxy_addr->userdata = ad;
438 ad->data_pxy_addr->input_type = ELM_INPUT_PANEL_LAYOUT_IP;
440 SETTING_TRACE_ERROR("ad->data_pxy_addr is NULL");
444 setting_create_Gendial_field_def(scroller,
445 &(ad->itc_variable_height), NULL,
446 NULL, SWALLOW_Type_LAYOUT_ENTRY,
448 "IDS_ST_BODY_PROXY_PORT",
449 (char *)ad->ed_pxy_port_desc,
450 setting_network_connection_entry_changed_cb);
451 if (ad->data_pxy_port) {
452 ad->data_pxy_port->userdata = ad;
453 ad->data_pxy_port->input_type = ELM_INPUT_PANEL_LAYOUT_NUMBERONLY;
455 SETTING_TRACE_ERROR("ad->data_pxy_port is NULL");
458 setting_view_network_connection_create.is_create = 1;
459 ad->scl_edit = scroller;
461 return SETTING_RETURN_SUCCESS;
464 static int setting_network_connection_destroy(void *cb)
468 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
470 SettingNetworkUG *ad = (SettingNetworkUG *) cb;
472 elm_naviframe_item_pop(ad->navi_bar);
473 setting_view_network_connection_create.is_create = 0;
474 return SETTING_RETURN_SUCCESS;
477 static int setting_network_connection_update(void *cb)
480 return SETTING_RETURN_SUCCESS;
483 static int setting_network_connection_cleanup(void *cb)
485 return setting_network_connection_destroy(cb);
488 /* ***************************************************
492 ***************************************************/
494 static int setting_network_edit_connection_save_connection(void *data)
498 retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
500 SettingNetworkUG *ad = (SettingNetworkUG *) data;
501 const char *acs_name = NULL;
502 const char *usr_name = NULL;
503 const char *pwd = NULL;
504 const char *addr = NULL;
505 const char *port = NULL;
506 const char *home = NULL;
508 if (ad->data_acs_name)
509 acs_name = ad->data_acs_name->sub_desc;
510 if (ad->data_user_name)
511 usr_name = ad->data_user_name->sub_desc;
513 pwd = ad->data_pwd->sub_desc;
514 if (ad->data_pxy_addr)
515 addr = ad->data_pxy_addr->sub_desc;
516 if (ad->data_pxy_port)
517 port = ad->data_pxy_port->sub_desc;
529 SETTING_TRACE("acs_name:%s", acs_name);
530 SETTING_TRACE("usr_name:%s", usr_name);
531 SETTING_TRACE("pwd:%s", pwd);
533 SETTING_TRACE("addr:%s", addr);
534 SETTING_TRACE("port:%s", port);
535 SETTING_TRACE("home:%s", home);
537 char sz_text[NET_PROXY_LEN_MAX + 1] = { 0, };
539 int ret = SETTING_RETURN_SUCCESS;
542 net_profile_info_t *con_info = NULL;
543 if (ad->prof_sel_idx != SETTING_ADD_PROFILE_INDEX) {
544 con_info = &(ad->prof_list[ad->prof_sel_idx]);
546 con_info = (net_profile_info_t *)calloc(1, sizeof(net_profile_info_t));
549 /* save access name */
550 if (!safeStrCmp(acs_name, "")) {
551 setting_create_popup_without_title(ad, ad->win_get,
553 ("Please input access name !"));
554 return SETTING_DNET_RETURN_NULL_ACCESS_NAME;
556 safeCopyStr(con_info->ProfileInfo.Pdp.Apn, acs_name,
557 NET_PDP_APN_LEN_MAX);
564 case NET_PDP_AUTH_PAP: /* Normal */
566 con_info->ProfileInfo.Pdp.AuthInfo.AuthType =
571 case NET_PDP_AUTH_CHAP: /* Secure */
573 con_info->ProfileInfo.Pdp.AuthInfo.AuthType =
578 case NET_PDP_AUTH_NONE: /* None */
580 con_info->ProfileInfo.Pdp.AuthInfo.AuthType =
590 if (!safeStrCmp(usr_name, "")
591 && NET_PDP_AUTH_NONE != type) {
592 setting_create_popup_without_title(ad, ad->win_get,
594 ("Please input User name !"));
595 return SETTING_DNET_RETURN_NULL_USER_NAME;
597 safeCopyStr(con_info->ProfileInfo.Pdp.AuthInfo.UserName,
598 usr_name, NET_PDP_AUTH_USERNAME_LEN_MAX - 1);
601 if (!safeStrCmp(pwd, "")
602 && NET_PDP_AUTH_NONE != type) {
603 setting_create_popup_without_title(ad, ad->win_get,
604 _("IDS_ST_BODY_ENTER_PASSWORD"));
605 return SETTING_DNET_RETURN_NULL_PASSWORD;
607 safeCopyStr(con_info->ProfileInfo.Pdp.AuthInfo.Password, pwd,
608 NET_PDP_AUTH_PASSWORD_LEN_MAX - 1);
611 /* save proxy addr */
612 if (!safeStrCmp(addr, "")) {
613 ret = SETTING_DNET_RETURN_NULL_PROXY_ADDR;
614 } else if (!is_ip_string(addr)) {
615 setting_create_popup_without_title(ad, ad->win_get,
616 _("IDS_ST_HEADER_INCORRECT_PROXY_ADDRESS"));
617 return SETTING_DNET_RETURN_INVALID_PROXY_ADDR;
619 /* check proxy port */
620 if (!safeStrCmp(port, "")) {
621 ret = SETTING_DNET_RETURN_NULL_PROXY_PORT;
624 if (!safeStrCmp(addr, "") && !safeStrCmp(port, "")) {
625 memset(con_info->ProfileInfo.Pdp.net_info.ProxyAddr, 0,
626 sizeof(con_info->ProfileInfo.Pdp.net_info.ProxyAddr));
628 ret = snprintf(sz_text, sizeof(sz_text), "%s:%s", addr, port);
629 retv_if(ret < 0, SETTING_DNET_RETURN_ERR);
630 safeCopyStr(con_info->ProfileInfo.Pdp.net_info.ProxyAddr, sz_text,
634 SETTING_TRACE("ad->con_type:%d", ad->con_type);
635 /* save connection */
636 if (ad->prof_sel_idx == SETTING_ADD_PROFILE_INDEX) {
638 if (ad->con_type == NET_SERVICE_INTERNET) { /* Internet Connection */
639 safeCopyStr(con_info->ProfileName,
640 "Internet connection",
641 strlen("Internet connection"));
643 /** Specifies a protocol type */
645 /** network information */
646 con_info->ProfileInfo.Pdp.ServiceType = ad->con_type;
648 con_info->profile_type = NET_DEVICE_CELLULAR;
649 con_info->ProfileState = NET_STATE_TYPE_UNKNOWN;
650 con_info->ProfileInfo.Pdp.ProtocolType = NET_PDP_TYPE_GPRS;
652 err = net_add_profile(ad->con_type, con_info);
653 if (err != NET_ERR_NONE) {
655 ("%s*** [ERR] net_add_profile. err=%d ***%s",
656 SETTING_FONT_RED, err, SETTING_FONT_BLACK);
657 ret = SETTING_DNET_RETURN_ERR;
658 setting_create_popup_without_title(ad, ad->win_get,
660 ("Failed to invoke net_add_profile()"));
665 err = net_modify_profile(con_info->ProfileName, con_info);
666 if (err != NET_ERR_NONE) {
668 ("%s*** [ERR] net_modify_profile. err=%d ***%s",
669 SETTING_FONT_RED, err, SETTING_FONT_BLACK);
670 ret = SETTING_DNET_RETURN_ERR;
676 /* ***************************************************
680 ***************************************************/
683 setting_network_edit_connection_click_softkey_save_cb(void *data,
689 retm_if(data == NULL, "Data parameter is NULL");
691 SettingNetworkUG *ad = (SettingNetworkUG *) data;
693 int ret = setting_network_edit_connection_save_connection(ad);
694 /* need special handle */
695 if (SETTING_DNET_RETURN_NULL_ACCESS_NAME == ret
696 || SETTING_DNET_RETURN_NULL_USER_NAME == ret
697 || SETTING_DNET_RETURN_NULL_PASSWORD == ret
698 || SETTING_DNET_RETURN_INVALID_PROXY_ADDR == ret) {
701 if (ret != SETTING_RETURN_SUCCESS) {
703 ("%s*** [ERR] setting_network_edit_connection_save_connection ***%s",
704 SETTING_FONT_RED, SETTING_FONT_BLACK);
707 setting_network_popup_create(ad, _("Saved!"), FALSE);
708 setting_view_change(&setting_view_network_connection_create,
709 &setting_view_network_main, ad);
713 setting_network_edit_connection_click_softkey_cancel_cb(void *data,
719 retm_if(data == NULL, "Data parameter is NULL");
721 SettingNetworkUG *ad = (SettingNetworkUG *) data;
722 setting_view_change(&setting_view_network_connection_create,
723 &setting_view_network_main, ad);
726 static void _gl_Gendial_sel(void *data, Evas_Object *obj, void *event_info)
728 /* SETTING_TRACE_BEGIN; */
729 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
730 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
731 elm_genlist_item_selected_set(item, 0);
735 static void setting_network_connection_check_entry_empty(SettingNetworkUG *ad)
738 if(!ad->has_form_changed ) return;
739 const char *entry_str = NULL;
740 bool isFoundEmptyEntry = FALSE;
743 if (ad->data_acs_name) {
744 entry_str = ad->data_acs_name->sub_desc;
746 if (NULL == entry_str || '\0' == entry_str[0]) {
747 isFoundEmptyEntry = TRUE;
752 if(ad->chkType != NET_PDP_AUTH_NONE)
754 if (ad->data_user_name) {
755 entry_str = ad->data_user_name->sub_desc;
757 if (NULL == entry_str || '\0' == entry_str[0]) {
758 isFoundEmptyEntry = TRUE;
763 entry_str = ad->data_pwd->sub_desc;
764 if (NULL == entry_str || '\0' == entry_str[0]) {
765 isFoundEmptyEntry = TRUE;
770 if (ad->data_hm_url) {
771 entry_str = ad->data_hm_url->sub_desc;
772 if (NULL == entry_str || '\0' == entry_str[0]) {
773 isFoundEmptyEntry = TRUE;
779 Evas_Object *done_btn = elm_object_item_part_content_get(ad->navi_it, "title_right_btn");
780 if (isFoundEmptyEntry) {
781 if (!evas_object_pass_events_get(done_btn)) {//it had not yet been disabled
782 setting_disable_evas_object(done_btn);
783 setting_dim_evas_object(done_btn, TRUE);
787 //do nothing..if invoke setting_dim_evas_object many times, the done button will be dimer until it cannot be see.
788 //refer to the API of setting_dim_evas_object(). The API is supplied by Setting itself, winset doesn't support until now as I now.
791 setting_enable_evas_object(done_btn);
792 setting_undo_dim_evas_object(done_btn, TRUE);
797 setting_network_edit_connection_display_auth_type(SettingNetworkUG *ad,
801 retm_if(ad == NULL, "Data parameter is NULL");
802 if (ad->chkType == auth_type) return;
804 ad->chkType = auth_type; /* for update genlist */
805 if (NET_PDP_AUTH_NONE != auth_type) { /* to show */
806 SETTING_TRACE("ad->is_show_user:%d", ad->is_show_user);
807 if (ad->is_show_user == 0) { /* do only when hiden */
808 SETTING_TRACE("to create");
811 (Setting_GenGroupItem_Data *) calloc(1,
813 (Setting_GenGroupItem_Data));
814 setting_retm_if(ad->data_user_name == NULL, "calloc failed");
815 ad->data_user_name->keyStr =
816 (char *)g_strdup("IDS_COM_BODY_USER_NAME");
817 ad->data_user_name->sub_desc =
818 (char *)g_strdup(ad->ed_user_name_desc);
819 ad->data_user_name->swallow_type =
820 SWALLOW_Type_LAYOUT_ENTRY;
821 ad->data_user_name->userdata = ad;
822 ad->data_user_name->chk_change_cb =
823 setting_network_connection_entry_changed_cb;
824 ad->data_user_name->item =
825 elm_genlist_item_insert_after(ad->scl_edit,
827 (ad->itc_variable_height),
830 ad->item_above_user_name,
831 ELM_GENLIST_ITEM_NONE,
832 _gl_Gendial_sel, ad);
835 (Setting_GenGroupItem_Data *) calloc(1,
837 (Setting_GenGroupItem_Data));
839 setting_retm_if(ad->data_pwd == NULL, "calloc failed");
840 ad->data_pwd->keyStr =
841 (char *)g_strdup("IDS_COM_BODY_PASSWORD");
842 ad->data_pwd->sub_desc =
843 (char *)g_strdup(ad->ed_pwd_desc);
844 ad->data_pwd->swallow_type = SWALLOW_Type_LAYOUT_ENTRY;
845 ad->data_pwd->userdata = ad;
846 ad->data_pwd->chk_change_cb =
847 setting_network_connection_entry_changed_cb;
848 ad->data_pwd->isPasswordFlag = TRUE;
850 elm_genlist_item_insert_after(ad->scl_edit,
852 (ad->itc_variable_height),
855 data_user_name->item,
856 ELM_GENLIST_ITEM_NONE,
857 _gl_Gendial_sel, ad);
859 ad->item_above_proxy_add =
860 elm_genlist_item_insert_after(ad->scl_edit,
861 &(ad->itc_seperator),
864 ELM_GENLIST_ITEM_NONE,
866 elm_genlist_item_select_mode_set
867 (ad->item_above_proxy_add, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
869 Evas_Object *done_btn = elm_object_item_part_content_get(ad->navi_it, "title_right_btn");
870 if (!evas_object_pass_events_get(done_btn)) {//it had not yet been disabled
871 setting_disable_evas_object(done_btn);
872 setting_dim_evas_object(done_btn, TRUE);
875 ad->is_show_user = 1;
876 } else { /* to hide */
878 SETTING_TRACE("ad->is_show_user:%d", ad->is_show_user);
879 if (ad->is_show_user == 1) { /* do only when shown */
880 SETTING_TRACE("to destroy");
881 if (ad->data_user_name) {
882 elm_object_item_del(ad->data_user_name->item);
883 ad->data_user_name = NULL;
886 elm_object_item_del(ad->data_pwd->item);
889 if (ad->item_above_proxy_add) {
890 elm_object_item_del(ad->item_above_proxy_add);
891 ad->item_above_proxy_add = NULL;
895 ad->has_form_changed = TRUE;
896 setting_network_connection_check_entry_empty(ad);
897 ad->is_show_user = 0;
903 setting_network_connection_entry_changed_cb(void *data, Evas_Object *obj,
907 retm_if(data == NULL, "Data parameter is NULL");
908 Setting_GenGroupItem_Data *list_item =
909 (Setting_GenGroupItem_Data *) data;
910 SettingNetworkUG *ad = list_item->userdata;
911 const char *entry_str = elm_entry_entry_get(obj);
912 if (0 != safeStrCmp(entry_str, list_item->sub_desc))
914 list_item->sub_desc = (char *)g_strdup(entry_str);
915 ad->has_form_changed = TRUE;
918 if (NULL == entry_str || 0 == safeStrLen(entry_str)) {
919 Evas_Object *layout = elm_object_parent_widget_get(list_item->eo_check);
920 if (layout) elm_object_part_text_set(layout, "elm.guidetext", _("IDS_ST_BODY_TAP_TO_INSERT"));
923 setting_network_connection_check_entry_empty(ad);