1.Limit the max length of Network connection profile
[apps/core/preloaded/settings.git] / setting-network / src / setting-network-connection-create.c
old mode 100644 (file)
new mode 100755 (executable)
index 0e0c970..2049659
@@ -1,20 +1,23 @@
 /*
-  * Copyright 2012  Samsung Electronics Co., Ltd
-  *
-  * Licensed under the Flora License, Version 1.0 (the "License");
-  * you may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at
-  *
-  *     http://www.tizenopensource.org/license
-  *
-  * Unless required by applicable law or agreed to in writing, software
-  * distributed under the License is distributed on an "AS IS" BASIS,
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  */
-
-
+ * setting
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Contact: MyoungJune Park <mj2004.park@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
 #include <setting-network-connection-create.h>
 
 static int setting_network_connection_create(void *cb);
@@ -31,7 +34,7 @@ setting_view setting_view_network_connection_create = {
 
 SettingNetworkUG *g_networkUG = NULL;
 #define SUPPORT_EXPANDABLE_AUTHTYPE 1
-
+#define URL_HEAD "http://"
 /* ***************************************************
  *
  *basic func
@@ -43,6 +46,7 @@ __network_connection_gl_mouse_up(void *data, Evas *e, Evas_Object *obj,
                                 void *event)
 {
        ret_if(!data);
+       SETTING_TRACE_BEGIN;
        SettingNetworkUG *ad = (SettingNetworkUG *) data;
 
        if (ad->data_acs_name) {
@@ -127,25 +131,25 @@ static void __setting_network_connection_exp_cb(void *data, Evas_Object *obj,
                elm_radio_value_set(rgd, -1);
 
                setting_create_Gendial_exp_sub_field(scroller,
-                                                    &(ad->itc_1icon_1text_sub),
+                                                    &itc_1icon_1text_sub,
                                                     __sub_list_sel_cb, ad,
                                                     parentItem,
                                                     SWALLOW_Type_1RADIO, rgd,
                                                     NET_PDP_AUTH_PAP,
-                                                    "IDS_IDLE_BODY_NORMAL",
+                                                    "IDS_ST_MBODY_PAP",
                                                     __sub_list_rd_change);
 
                setting_create_Gendial_exp_sub_field(scroller,
-                                                    &(ad->itc_1icon_1text_sub),
+                                                    &itc_1icon_1text_sub,
                                                     __sub_list_sel_cb, ad,
                                                     parentItem,
                                                     SWALLOW_Type_1RADIO, rgd,
                                                     NET_PDP_AUTH_CHAP,
-                                                    "IDS_ST_BODY_SECURE",
+                                                    "IDS_ST_POP_CHAP",
                                                     __sub_list_rd_change);
 
                setting_create_Gendial_exp_sub_field(scroller,
-                                                    &(ad->itc_1icon_1text_sub),
+                                                    &itc_1icon_1text_sub,
                                                     __sub_list_sel_cb, ad,
                                                     parentItem,
                                                     SWALLOW_Type_1RADIO, rgd,
@@ -157,61 +161,59 @@ static void __setting_network_connection_exp_cb(void *data, Evas_Object *obj,
        }
 }
 
-static int setting_network_connection_create(void *cb)
+static void __genlist_disable_set(Evas_Object *genlist, bool disabled)
 {
        SETTING_TRACE_BEGIN;
-       retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
-
-       SettingNetworkUG *ad = (SettingNetworkUG *) cb;
-
-       setting_retvm_if(NET_SERVICE_INTERNET != ad->con_type,
-                       SETTING_GENERAL_ERR_WRONG_PARAMETER,
-                       "Invalid connection type[%d]", ad->con_type)
+       ret_if (!genlist);
+       Elm_Object_Item *item = elm_genlist_first_item_get(genlist);
+       for(;item != elm_genlist_last_item_get(genlist);
+           item = elm_genlist_item_next_get(item))
+       {
+               elm_object_item_disabled_set(item, disabled);
 
-       const char *title = NULL;
-       if (ad->con_type == NET_SERVICE_INTERNET) {
-               title = _("IDS_ST_BODY_INTERNET_CONNECTION");
+               Setting_GenGroupItem_Data *item_data = (Setting_GenGroupItem_Data *)elm_object_item_data_get(item);
+               if (item_data == NULL) {
+                       SETTING_TRACE("item_data is null");
+                       continue;
+               }
+               if (item_data->swallow_type == SWALLOW_Type_LAYOUT_ENTRY) {
+                       elm_entry_context_menu_disabled_set(item_data->eo_check, disabled);
+               }
+               //elm_object_item_signal_emit(item, "elm,state,enabled", "elm");
        }
-
-       Evas_Object *scroller = elm_genlist_add(ad->win_main_layout);
-       retvm_if(scroller == NULL, SETTING_DRAW_ERR_FAIL_SCROLLER,
-                "Cannot set scroller object  as contento of layout");
-       elm_genlist_clear(scroller);    /* first to clear list */
-
-       /*  Enabling illume notification property for window */
-       elm_win_conformant_set(ad->win_main_layout, 1);
-       Evas_Object *conformant = elm_conformant_add(ad->win_main_layout);
-       elm_object_style_set(conformant, "internal_layout");    /*  By Kollus. 2011-01-04 */
-       evas_object_show(conformant);
-       elm_object_content_set(conformant, scroller);
-
-       ad->navi_it = setting_create_navi_bar_top_buttons((char *)title,
-                                          _("IDS_COM_SK_CANCEL"),
-                                          _("IDS_COM_SK_DONE"), NULL,
-                                          setting_network_edit_connection_click_softkey_cancel_cb,
-                                          setting_network_edit_connection_click_softkey_save_cb,
-                                          NULL, ad, conformant, ad->navi_bar);
-       retv_if(!ad->navi_it, SETTING_RETURN_FAIL);
-       ad->has_form_changed  = FALSE;
-
-       setting_enable_expandable_genlist(scroller, ad,
-                                         __setting_network_connection_exp_cb,
-                                         NULL);
-       evas_object_event_callback_add(scroller, EVAS_CALLBACK_MOUSE_UP,
-                                      __network_connection_gl_mouse_up, ad);
-
+       elm_object_item_disabled_set(item, disabled);//the last one item
+       Setting_GenGroupItem_Data *item_data = (Setting_GenGroupItem_Data *)elm_object_item_data_get(item);
+       if (item_data == NULL) {
+               SETTING_TRACE("item_data is null");
+               return;
+       }
+       if (item_data->swallow_type == SWALLOW_Type_LAYOUT_ENTRY) {
+               elm_entry_context_menu_disabled_set(item_data->eo_check, disabled);
+       }
+}
+static Eina_Bool __connection_idler(void *data)
+{
+       SETTING_TRACE_BEGIN;
+       retv_if (!data, FALSE);
+       SettingNetworkUG *ad = data;
+       __genlist_disable_set(ad->scl_edit, TRUE);
+       setting_network_connection_hide_input_pannel(ad);
+       return FALSE;
+}
+void __get_connection_info(void *cb)
+{
+       SETTING_TRACE_BEGIN;
+       ret_if(cb == NULL);
+       SettingNetworkUG *ad = (SettingNetworkUG *) cb;
+       //int ret;
        ad->ed_acs_name_desc = NULL;
        ad->ed_user_name_desc = NULL;
        ad->ed_pwd_desc = NULL;
-       ad->ed_pxy_addr_desc = NULL;
-       ad->ed_pxy_port_desc = NULL;
+       G_FREE(ad->ed_pxy_addr_desc);
+       G_FREE(ad->ed_pxy_port_desc);
        ad->ed_hm_url_desc = NULL;
        ad->chkType = NET_PDP_AUTH_NONE;
-
-       /* other intializes */
-       ad->data_hm_url = NULL;
-       ad->data_pwd = NULL;
-       ad->data_user_name = NULL;
+       ad->ed_auth_type_desc = NULL;
 
        if (NULL == ad->prof_list)
        {
@@ -223,6 +225,7 @@ static int setting_network_connection_create(void *cb)
                }
 
        }
+       //SETTING_TRACE("NET_ERR_UNKNOWN_METHOD:%d", NET_ERR_UNKNOWN_METHOD);
 
        ad->prof_sel_idx = SETTING_ADD_PROFILE_INDEX;//need add new configuration
        if (ad->prof_list)
@@ -253,26 +256,175 @@ static int setting_network_connection_create(void *cb)
                ad->ed_pwd_desc =
                    ad->prof_list[ad->prof_sel_idx].ProfileInfo.Pdp.AuthInfo.Password;
 
-               char *full_addr;
-               char *addr;
-               char *port;
+               switch (ad->chkType) {
+               case NET_PDP_AUTH_PAP:
+                       ad->ed_auth_type_desc = _("IDS_ST_MBODY_PAP");
+                       break;
+               case NET_PDP_AUTH_CHAP:
+                       ad->ed_auth_type_desc = _("IDS_ST_POP_CHAP");
+                       break;
+               case NET_PDP_AUTH_NONE:
+                       ad->ed_auth_type_desc = _("IDS_COM_BODY_NONE");
+                       break;
+               default:
+                       ad->chkType = NET_PDP_AUTH_NONE;
+                       ad->ed_auth_type_desc = _("IDS_COM_BODY_NONE");
+                       break;
+               }
+
+
+               char *full_addr = NULL;
+               char *addr = NULL;
+               char *port = NULL;
                //Fix the Port 'NULL' issue when enter connection view repeatly..
                full_addr = safeCopyStr(ProxyAddr, ad->prof_list[ad->prof_sel_idx].ProfileInfo.Pdp.net_info.ProxyAddr, NET_PROXY_LEN_MAX);
+               int url_head_len = strlen(URL_HEAD);
+               if (0 == safeStrNCmp(full_addr, URL_HEAD, url_head_len))
+               {
+                       full_addr += url_head_len;
+               }
                addr = strsep(&full_addr, ":");
-               port = strsep(&full_addr, ":");
-               ad->ed_pxy_addr_desc = addr;
-               ad->ed_pxy_port_desc = port;
+               if (NULL == full_addr)//format like "http://127.0.0.1/" or "http://127.0.0.1"
+               {
+                       SETTING_TRACE("NULL == full_addr");
+                       addr = strsep(&addr, "/");
+               }
+               if (is_ip_string(addr))
+               {
+                       port = strsep(&full_addr, "/");
+               }
+               else //invalid format,let addr and port to be NULL.
+               {
+                       addr = NULL;
+               }
+
+               ad->ed_pxy_addr_desc = g_strdup(addr);
+               ad->ed_pxy_port_desc = g_strdup(port);
+
+               if (ad->con_type == NET_SERVICE_MMS) {  /* Message Connection */
+                       ad->ed_hm_url_desc =
+                           ad->prof_list[ad->prof_sel_idx].ProfileInfo.Pdp.HomeURL;
+               }
+       } else {
+               ad->ed_auth_type_desc = _("IDS_COM_BODY_NONE");
+               ad->chkType = NET_PDP_AUTH_NONE;
+       }
+       return;
+}
+void __update_genlist_info(void *cb)
+{
+       SETTING_TRACE_BEGIN;
+       ret_if(cb == NULL);
+       SettingNetworkUG *ad = (SettingNetworkUG *) cb;
+       if (ad->data_acs_name)
+       {
+               ad->data_acs_name->sub_desc = g_strdup(ad->ed_acs_name_desc);
+       }
+
+       if (ad->data_auth_type)
+       {
+               ad->data_auth_type->sub_desc = g_strdup(ad->ed_auth_type_desc);
+               if (ad->prof_list) {
+                       int authType = ad->prof_list[ad->prof_sel_idx].ProfileInfo.Pdp.AuthInfo.AuthType;
+                       ad->chkType = !ad->chkType;
+                       setting_network_edit_connection_display_auth_type(ad, authType);
+               }
        }
+       if (ad->data_user_name)
+       {
+               ad->data_user_name->sub_desc = g_strdup(ad->ed_user_name_desc);
+       }
+       if (ad->data_pwd)
+       {
+               ad->data_pwd->sub_desc = g_strdup(ad->ed_pwd_desc);
+       }
+
+       if (ad->data_pxy_addr)
+       {
+               ad->data_pxy_addr->sub_desc = g_strdup(ad->ed_pxy_addr_desc);
+       }
+       if (ad->data_pxy_port)
+       {
+               ad->data_pxy_port->sub_desc = g_strdup(ad->ed_pxy_port_desc);
+       }
+       if (ad->data_hm_url)
+       {
+               ad->data_hm_url->sub_desc = g_strdup(ad->ed_hm_url_desc);
+       }
+       elm_genlist_realized_items_update(ad->scl_edit);
+       return;
+}
+
+static int setting_network_connection_create(void *cb)
+{
+       SETTING_TRACE_BEGIN;
+       retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+
+       SettingNetworkUG *ad = (SettingNetworkUG *) cb;
+
+       setting_retvm_if(NET_SERVICE_MMS != ad->con_type && NET_SERVICE_INTERNET != ad->con_type,
+                       SETTING_GENERAL_ERR_WRONG_PARAMETER,
+                       "Invalid connection type[%d]", ad->con_type)
+
+       const char *title = NULL;
+       if (ad->con_type == NET_SERVICE_INTERNET)
+       {       /*  Internet Connection & MMS Connection Head Title should be different. */
+               title = _("IDS_ST_BODY_INTERNET_CONNECTION");
+       }
+       else
+       {
+               title = _(STR_SETTING_MMS_CONNECTIONS);
+       }
+
+       Evas_Object *scroller = elm_genlist_add(ad->win_main_layout);
+       elm_object_style_set(scroller, "dialogue");
+       retvm_if(scroller == NULL, SETTING_DRAW_ERR_FAIL_SCROLLER,
+                "Cannot set scroller object  as contento of layout");
+       elm_genlist_clear(scroller);    /* first to clear list */
+
+       /*  Enabling illume notification property for window */
+       elm_win_conformant_set(ad->win_main_layout, 1);
+       Evas_Object *conformant = elm_conformant_add(ad->win_main_layout);
+       elm_object_style_set(conformant, "internal_layout");    /*  By Kollus. 2011-01-04 */
+       evas_object_show(conformant);
+       elm_object_content_set(conformant, scroller);
+       ad->conformant = conformant;
+       /* connection intializes */
+       ad->data_hm_url = NULL;
+       ad->data_pwd = NULL;
+       ad->data_user_name = NULL;
+       ad->data_pxy_addr = NULL;
+       ad->data_acs_name = NULL;
+       ad->data_auth_type = NULL;
+
+       ad->navi_it = setting_push_layout_navi_bar((char *)title,
+                                    _("IDS_COM_BODY_BACK"),
+                                    _(KeyStr_Edit),
+                                    NULL,//_(KeyStr_Reset_Def),
+                                    setting_network_edit_connection_click_softkey_back_cb,
+                                    setting_network_edit_connection_click_softkey_eidt_cb,
+                                    setting_network_edit_connection_click_softkey_reset_cb,
+                                    ad, conformant, ad->navi_bar, &ad->controlbar);
 
+       retv_if(!ad->navi_it, SETTING_RETURN_FAIL);
+       ad->has_form_changed  = FALSE;
+
+       setting_enable_expandable_genlist(scroller, ad,
+                                         __setting_network_connection_exp_cb,
+                                         NULL);
+       evas_object_event_callback_add(scroller, EVAS_CALLBACK_MOUSE_UP,
+                                      __network_connection_gl_mouse_up, ad);
+       __get_connection_info(ad);
        Elm_Object_Item *item;
 
+       /* item = elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL); */
        item =
-           elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
+           elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL,
                                    ELM_GENLIST_ITEM_NONE, NULL, NULL);
        elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
        ad->data_acs_name =
            setting_create_Gendial_field_def(scroller,
-                                            &(ad->itc_variable_height), NULL,
+                                            &itc_1icon, NULL,
                                             NULL, SWALLOW_Type_LAYOUT_ENTRY,
                                             NULL, NULL, 0,
                                             "IDS_ST_BODY_ACCESS_NAME",
@@ -280,97 +432,28 @@ static int setting_network_connection_create(void *cb)
                                             setting_network_connection_entry_changed_cb);
        if (ad->data_acs_name) {
                ad->data_acs_name->userdata = ad;
-       } else {
-               SETTING_TRACE_ERROR("ad->data_acs_name is NULL");
-       }
+               ad->data_acs_name->limit_filter_data = calloc(1, sizeof(Elm_Entry_Filter_Accept_Set));
+               if (ad->data_acs_name->limit_filter_data) {
+                       ad->data_acs_name->limit_filter_data->max_byte_count = NET_PDP_APN_LEN_MAX;
+                       ad->data_acs_name->win_main = ad->win_get;
+               }
 
-#if !SUPPORT_EXPANDABLE_AUTHTYPE
-       (void)setting_create_Gendial_field_titleItem(scroller,
-                                                    &(ad->itc_group_item),
-                                                    "IDS_ST_BODY_AUTH_TYPE",
-                                                    NULL);
-       ad->chk_type = elm_radio_add(scroller);
-       elm_radio_state_value_set(ad->chk_type, -1);
-
-       ad->data_type_nor =
-           setting_create_Gendial_field_1radio(scroller,
-                                               &(ad->itc_1text_1icon_2),
-                                               setting_network_connection_mouse_up_Gendial_list_radio_cb,
-                                               ad->chk_type,
-                                               SWALLOW_Type_1RADIO,
-                                               ad->chk_type, NET_PDP_AUTH_PAP,
-                                               "IDS_IDLE_BODY_NORMAL",
-                                               setting_network_edit_connection_chk_changed);
-       if (ad->data_type_nor) {
-               ad->data_type_nor->userdata = ad;
        } else {
-               SETTING_TRACE_ERROR("ad->data_type_nor is NULL");
-       }
-
-       ad->data_type_sec =
-           setting_create_Gendial_field_1radio(scroller,
-                                               &(ad->itc_1text_1icon_2),
-                                               setting_network_connection_mouse_up_Gendial_list_radio_cb,
-                                               ad->chk_type,
-                                               SWALLOW_Type_1RADIO,
-                                               ad->chk_type, NET_PDP_AUTH_CHAP,
-                                               "IDS_ST_BODY_SECURE",
-                                               setting_network_edit_connection_chk_changed);
-       if (ad->data_type_sec) {
-               ad->data_type_sec->userdata = ad;
-       } else {
-               SETTING_TRACE_ERROR("ad->data_type_sec is NULL");
-       }
-
-       ad->data_type_none =
-           setting_create_Gendial_field_1radio(scroller,
-                                               &(ad->itc_1text_1icon_2),
-                                               setting_network_connection_mouse_up_Gendial_list_radio_cb,
-                                               ad->chk_type,
-                                               SWALLOW_Type_1RADIO,
-                                               ad->chk_type, NET_PDP_AUTH_NONE,
-                                               "IDS_COM_BODY_NONE",
-                                               setting_network_edit_connection_chk_changed);
-       if (ad->data_type_none) {
-               ad->data_type_none->userdata = ad;
-       } else {
-               SETTING_TRACE_ERROR("ad->data_type_none is NULL");
+               SETTING_TRACE_ERROR("ad->data_acs_name is NULL");
        }
 
-       elm_radio_value_set(ad->chk_type, ad->chkType);
-
-       ad->item_above_user_name = item =
-           elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
-                                   ELM_GENLIST_ITEM_NONE, NULL, NULL);
-       elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
-#else
        item =
-           elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
+           elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL,
                                    ELM_GENLIST_ITEM_GROUP, NULL, NULL);
        elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
-       char *auth_type_desc = NULL;
-       switch (ad->chkType) {
-       case NET_PDP_AUTH_PAP:
-               auth_type_desc = _("IDS_IDLE_BODY_NORMAL");
-               break;
-       case NET_PDP_AUTH_CHAP:
-               auth_type_desc = _("IDS_ST_BODY_SECURE");
-               break;
-       case NET_PDP_AUTH_NONE:
-               auth_type_desc = _("IDS_COM_BODY_NONE");
-               break;
-       default:
-               ad->chkType = NET_PDP_AUTH_NONE;
-               auth_type_desc = _("IDS_COM_BODY_NONE");
-               break;
-       }
+
        ad->data_auth_type =
            setting_create_Gendial_exp_parent_field(scroller,
-                                                   &(ad->itc_2text_3_parent),
+                                                   &itc_2text_3_parent,
                                                    NULL, NULL,
                                                    SWALLOW_Type_INVALID,
                                                    "IDS_ST_BODY_AUTH_TYPE",
-                                                   auth_type_desc);
+                                                   (char *)ad->ed_auth_type_desc);
        /* ad->data_auth_type->int_slp_setting_binded = INT_SLP_SETTING_INVALID; */
        if (ad->data_auth_type) {
                ad->data_auth_type->userdata = ad;
@@ -379,15 +462,15 @@ static int setting_network_connection_create(void *cb)
        }
 
        ad->item_above_user_name = item =
-           elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
+           elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL,
                                    ELM_GENLIST_ITEM_NONE, NULL, NULL);
        elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
-#endif
+
        ad->is_show_user = 0;
        if (NET_PDP_AUTH_NONE != ad->chkType) {
                ad->data_user_name =
                    setting_create_Gendial_field_def(scroller,
-                                                    &(ad->itc_variable_height),
+                                                    &itc_1icon,
                                                     NULL, NULL,
                                                     SWALLOW_Type_LAYOUT_ENTRY,
                                                     NULL, NULL, 0,
@@ -397,13 +480,18 @@ static int setting_network_connection_create(void *cb)
                                                     setting_network_connection_entry_changed_cb);
                if (ad->data_user_name) {
                        ad->data_user_name->userdata = ad;
+                       ad->data_user_name->limit_filter_data = calloc(1, sizeof(Elm_Entry_Filter_Accept_Set));
+                       if (ad->data_user_name->limit_filter_data) {
+                               ad->data_user_name->limit_filter_data->max_byte_count = NET_PDP_AUTH_USERNAME_LEN_MAX;
+                               ad->data_user_name->win_main = ad->win_get;
+                       }
                } else {
                        SETTING_TRACE_ERROR("ad->data_user_name is NULL");
                }
 
                ad->data_pwd =
                    setting_create_Gendial_field_def(scroller,
-                                                    &(ad->itc_variable_height),
+                                                    &itc_1icon,
                                                     NULL, NULL,
                                                     SWALLOW_Type_LAYOUT_ENTRY,
                                                     NULL, NULL, 0,
@@ -414,12 +502,17 @@ static int setting_network_connection_create(void *cb)
                        ad->data_pwd->userdata = ad;
                        ad->is_show_user = 1;
                        ad->data_pwd->isPasswordFlag = TRUE;
+                       ad->data_pwd->limit_filter_data = calloc(1, sizeof(Elm_Entry_Filter_Accept_Set));
+                       if (ad->data_pwd->limit_filter_data) {
+                               ad->data_pwd->limit_filter_data->max_byte_count = NET_PDP_AUTH_PASSWORD_LEN_MAX;
+                               ad->data_pwd->win_main = ad->win_get;
+                       }
                } else {
                        SETTING_TRACE_ERROR("ad->data_pwd is NULL");
                }
 
                ad->item_above_proxy_add = item =
-                   elm_genlist_item_append(scroller, &(ad->itc_seperator),
+                   elm_genlist_item_append(scroller, &itc_seperator,
                                            NULL, NULL, ELM_GENLIST_ITEM_NONE,
                                            NULL, NULL);
                elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
@@ -427,7 +520,7 @@ static int setting_network_connection_create(void *cb)
 
        ad->data_pxy_addr =
            setting_create_Gendial_field_def(scroller,
-                                            &(ad->itc_variable_height), NULL,
+                                            &itc_1icon, NULL,
                                             NULL, SWALLOW_Type_LAYOUT_ENTRY,
                                             NULL, NULL, 0,
                                             "IDS_ST_BODY_CONNECTIONSETTINGS_PROXY_ADDRESS",
@@ -442,7 +535,7 @@ static int setting_network_connection_create(void *cb)
 
        ad->data_pxy_port =
            setting_create_Gendial_field_def(scroller,
-                                            &(ad->itc_variable_height), NULL,
+                                            &itc_1icon, NULL,
                                             NULL, SWALLOW_Type_LAYOUT_ENTRY,
                                             NULL, NULL, 0,
                                             "IDS_ST_BODY_PROXY_PORT",
@@ -455,9 +548,38 @@ static int setting_network_connection_create(void *cb)
                SETTING_TRACE_ERROR("ad->data_pxy_port is NULL");
        }
 
+       if (ad->con_type == NET_SERVICE_MMS) {  /*  mms Connection */
+               ad->data_hm_url =
+                   setting_create_Gendial_field_def(scroller,
+                                                    &itc_1icon,
+                                                    NULL, NULL,
+                                                    SWALLOW_Type_LAYOUT_ENTRY,
+                                                    NULL, NULL, 0,
+                                                    "IDS_ST_BODY_HOME_URL",
+                                                    (char *)ad->ed_hm_url_desc,
+                                                    setting_network_connection_entry_changed_cb);
+               if (ad->data_hm_url) {
+                       ad->data_hm_url->userdata = ad;
+                       ad->data_hm_url->input_type = ELM_INPUT_PANEL_LAYOUT_URL;
+                       ad->data_hm_url->limit_filter_data = calloc(1, sizeof(Elm_Entry_Filter_Accept_Set));
+                       if (ad->data_hm_url->limit_filter_data) {
+                               ad->data_hm_url->limit_filter_data->max_byte_count = NET_HOME_URL_LEN_MAX;
+                               ad->data_hm_url->win_main = ad->win_get;
+                       }
+               } else {
+                       SETTING_TRACE_ERROR("ad->data_hm_url is NULL");
+               }
+               /* ad->is_show_url = 1; */
+       }
+
+       item = elm_genlist_item_append(scroller, &itc_bottom_seperator, NULL, NULL,
+                                   ELM_GENLIST_ITEM_NONE, NULL, NULL);
+       elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
        setting_view_network_connection_create.is_create = 1;
        ad->scl_edit = scroller;
-
+       __genlist_disable_set(ad->scl_edit, TRUE);
+       ecore_idler_add(__connection_idler, ad);
        return SETTING_RETURN_SUCCESS;
 }
 
@@ -468,6 +590,25 @@ static int setting_network_connection_destroy(void *cb)
        retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
 
        SettingNetworkUG *ad = (SettingNetworkUG *) cb;
+       ad->navi_it = NULL;
+       ad->controlbar = NULL;
+       ad->back_btn = NULL;
+       //manager separatly,
+       if (ad->l_button)
+       {
+               evas_object_del(ad->l_button);
+               ad->l_button = NULL;
+       }
+       if (ad->m_button)
+       {
+               evas_object_del(ad->m_button);
+               ad->m_button = NULL;
+       }
+       if (ad->r_button)
+       {
+               evas_object_del(ad->r_button);
+               ad->r_button = NULL;
+       }
 
        elm_naviframe_item_pop(ad->navi_bar);
        setting_view_network_connection_create.is_create = 0;
@@ -545,12 +686,10 @@ static int setting_network_edit_connection_save_connection(void *data)
        } else {
                con_info = (net_profile_info_t *)calloc(1, sizeof(net_profile_info_t));
        }
-
        /* save access name */
        if (!safeStrCmp(acs_name, "")) {
-               setting_create_popup_without_title(ad, ad->win_get,
-                                                 _
-                                                 ("Please input access name !"));
+               setting_create_simple_popup(ad, ad->win_get,
+                                           NULL, _(Insert_Access_Name_desc));
                return SETTING_DNET_RETURN_NULL_ACCESS_NAME;
        } else {
                safeCopyStr(con_info->ProfileInfo.Pdp.Apn, acs_name,
@@ -558,6 +697,7 @@ static int setting_network_edit_connection_save_connection(void *data)
        }
 
        /* save auth type */
+       /* type = elm_radio_value_get(ad->chk_type); */
        type = ad->chkType;
 
        switch (type) {
@@ -585,13 +725,11 @@ static int setting_network_edit_connection_save_connection(void *data)
                /* do nothing*/
                break;
        }
-
        /* save user name */
        if (!safeStrCmp(usr_name, "")
            && NET_PDP_AUTH_NONE != type) {
-               setting_create_popup_without_title(ad, ad->win_get,
-                                                 _
-                                                 ("Please input User name !"));
+               setting_create_simple_popup(ad, ad->win_get,
+                                           NULL, _(Insert_User_Name_Desc));
                return SETTING_DNET_RETURN_NULL_USER_NAME;
        } else {
                safeCopyStr(con_info->ProfileInfo.Pdp.AuthInfo.UserName,
@@ -600,8 +738,8 @@ static int setting_network_edit_connection_save_connection(void *data)
        /* save password */
        if (!safeStrCmp(pwd, "")
            && NET_PDP_AUTH_NONE != type) {
-               setting_create_popup_without_title(ad, ad->win_get,
-                                                 _("IDS_ST_BODY_ENTER_PASSWORD"));
+               setting_create_simple_popup(ad, ad->win_get,
+                                           NULL, _("IDS_ST_BODY_ENTER_PASSWORD"));
                return SETTING_DNET_RETURN_NULL_PASSWORD;
        } else {
                safeCopyStr(con_info->ProfileInfo.Pdp.AuthInfo.Password, pwd,
@@ -610,25 +748,39 @@ static int setting_network_edit_connection_save_connection(void *data)
 
        /* save proxy addr */
        if (!safeStrCmp(addr, "")) {
+               /* addr = "0.0.0.0"; */
                ret = SETTING_DNET_RETURN_NULL_PROXY_ADDR;
        } else if (!is_ip_string(addr)) {
-               setting_create_popup_without_title(ad, ad->win_get,
-                                                 _("IDS_ST_HEADER_INCORRECT_PROXY_ADDRESS"));
+               setting_create_simple_popup(ad, ad->win_get,
+                                           NULL, _("IDS_ST_HEADER_INCORRECT_PROXY_ADDRESS"));
                return SETTING_DNET_RETURN_INVALID_PROXY_ADDR;
        }
        /* check proxy port */
        if (!safeStrCmp(port, "")) {
+               /* port =  "80"; */
                ret = SETTING_DNET_RETURN_NULL_PROXY_PORT;
        }
 
-       if (!safeStrCmp(addr, "") && !safeStrCmp(port, "")) {
-               memset(con_info->ProfileInfo.Pdp.net_info.ProxyAddr, 0,
-                      sizeof(con_info->ProfileInfo.Pdp.net_info.ProxyAddr));
-       } else {
-               ret = snprintf(sz_text, sizeof(sz_text), "%s:%s", addr, port);
-               retv_if(ret < 0, SETTING_DNET_RETURN_ERR);
-               safeCopyStr(con_info->ProfileInfo.Pdp.net_info.ProxyAddr, sz_text,
-                           NET_PROXY_LEN_MAX);
+       ret = snprintf(sz_text, sizeof(sz_text), "%s:%s", addr, port);
+       retv_if(ret < 0, SETTING_DNET_RETURN_ERR);
+       safeCopyStr(con_info->ProfileInfo.Pdp.net_info.ProxyAddr, sz_text,
+                   NET_PROXY_LEN_MAX);
+
+       /* save home url(message connection only) */
+       if (ad->con_type == NET_SERVICE_MMS) {  /* Message Connection */
+               home = ad->data_hm_url->sub_desc;
+               if (home == (char *)NULL) {
+                       safeCopyStr(con_info->ProfileInfo.Pdp.HomeURL,
+                                   URL_HEAD, NET_HOME_URL_LEN_MAX);
+               } else {
+                       if (!safeStrCmp(home, "")) {
+                               home = URL_HEAD;
+                               ret = SETTING_DNET_RETURN_NULL_HOMEURL;
+                       }
+
+                       safeCopyStr(con_info->ProfileInfo.Pdp.HomeURL, home,
+                                   NET_HOME_URL_LEN_MAX);
+               }
        }
 
        SETTING_TRACE("ad->con_type:%d", ad->con_type);
@@ -637,8 +789,13 @@ static int setting_network_edit_connection_save_connection(void *data)
                /* add connection */
                if (ad->con_type == NET_SERVICE_INTERNET) {     /* Internet Connection */
                        safeCopyStr(con_info->ProfileName,
-                                   "Internet connection",
-                                   strlen("Internet connection"));
+                                   "IDS_ST_BODY_INTERNET_CONNECTION",
+                                   strlen("IDS_ST_BODY_INTERNET_CONNECTION"));
+                       //con_info->ProfileInfo.Pdp.ServiceCategoryId = 1;
+               } else {
+                       safeCopyStr(con_info->ProfileName, STR_SETTING_MMS_CONNECTIONS,
+                                   strlen(STR_SETTING_MMS_CONNECTIONS));
+                       //con_info->ProfileInfo.Pdp.ServiceCategoryId = 2;
                }
                /** Specifies a protocol type */
 
@@ -648,26 +805,26 @@ static int setting_network_edit_connection_save_connection(void *data)
                con_info->profile_type = NET_DEVICE_CELLULAR;
                con_info->ProfileState = NET_STATE_TYPE_UNKNOWN;
                con_info->ProfileInfo.Pdp.ProtocolType = NET_PDP_TYPE_GPRS;
-
                err = net_add_profile(ad->con_type, con_info);
                if (err != NET_ERR_NONE) {
-                       SETTING_TRACE_DEBUG
+                       SETTING_TRACE_ERROR
                            ("%s*** [ERR] net_add_profile. err=%d ***%s",
                             SETTING_FONT_RED, err, SETTING_FONT_BLACK);
                        ret = SETTING_DNET_RETURN_ERR;
-                       setting_create_popup_without_title(ad, ad->win_get,
-                                                         _
-                                                         ("Failed to invoke net_add_profile()"));
+                       setting_create_simple_popup(ad, ad->win_get,
+                                                   NULL, _("IDS_COM_POP_FAILED"));
                        return ret;
                }
                FREE(con_info);
        } else {
                err = net_modify_profile(con_info->ProfileName, con_info);
                if (err != NET_ERR_NONE) {
-                       SETTING_TRACE_DEBUG
+                       SETTING_TRACE_ERROR
                            ("%s*** [ERR] net_modify_profile. err=%d ***%s",
                             SETTING_FONT_RED, err, SETTING_FONT_BLACK);
                        ret = SETTING_DNET_RETURN_ERR;
+                       setting_create_simple_popup(ad, ad->win_get,
+                                                   NULL, _("IDS_COM_POP_FAILED"));
                }
        }
        return ret;
@@ -678,6 +835,163 @@ static int setting_network_edit_connection_save_connection(void *data)
  *call back func
  *
  ***************************************************/
+ #define BTN_STYLE_DEF "naviframe/title/default"
+static void
+setting_network_edit_connection_click_softkey_eidt_cb(void *data,
+                                                     Evas_Object *obj,
+                                                     void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+       /* error check */
+       retm_if(data == NULL, "Data parameter is NULL");
+
+       SettingNetworkUG *ad = (SettingNetworkUG *) data;
+       //setting_enable_evas_object(ad->scl_edit);
+       __genlist_disable_set(ad->scl_edit, FALSE);
+       /*  create buttons */
+       if (!ad->l_button) //go into first time
+       {
+               ad->l_button = setting_create_button(ad->navi_bar, _("IDS_COM_SK_DONE"),
+                                                        BTN_STYLE_DEF,
+                                                        setting_network_edit_connection_click_softkey_save_cb,
+                                                        ad);
+       }
+
+       if (!ad->r_button) //go into first time
+       {
+               ad->r_button = setting_create_button(ad->navi_bar, _("IDS_COM_SK_CANCEL"),
+                                                        BTN_STYLE_DEF,
+                                                        setting_network_edit_connection_click_softkey_cancel_cb,
+                                                        ad);
+       }
+       if (!ad->m_button) //go into first time
+       {
+               ad->m_button = setting_create_button(ad->navi_bar, NULL,
+                                                        BTN_STYLE_DEF,
+                                                        NULL, ad);
+       }
+       if (ad->l_button) {
+               elm_object_item_part_content_set(ad->navi_it, NAVI_BTN_STYLE_LEFT, ad->l_button);
+               evas_object_show(ad->l_button);
+       }
+       if (ad->r_button) {
+               elm_object_item_part_content_set(ad->navi_it, NAVI_BTN_STYLE_RIGHT, ad->r_button);
+               ad->has_form_changed = TRUE;//intialize
+               setting_network_connection_check_entry_empty(ad);
+               ad->has_form_changed = FALSE;//restore
+       }
+       if (ad->m_button) {
+               elm_object_item_part_content_set(ad->navi_it, NAVI_BTN_STYLE_MORE, ad->m_button);
+               evas_object_show(ad->r_button);
+       }
+
+       //remove '<-' button
+       ad->back_btn = elm_object_item_part_content_unset(ad->navi_it, NAVI_BTN_STYLE_PREV);
+       elm_object_item_part_content_set(ad->navi_it, NAVI_BTN_STYLE_PREV, NULL);
+       evas_object_hide(ad->back_btn);
+
+       //remove other buttons on controlbar
+       ad->controlbar = elm_object_item_part_content_unset(ad->navi_it, NAVI_CONTROLBAR_PART);
+       elm_object_item_part_content_set(ad->navi_it, NAVI_CONTROLBAR_PART, NULL);
+       evas_object_hide(ad->controlbar);
+}
+static void
+setting_network_edit_connection_click_softkey_reset_cb(void *data,
+                                                     Evas_Object *obj,
+                                                     void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+       /* error check */
+       retm_if(data == NULL, "Data parameter is NULL");
+
+       SettingNetworkUG *ad = (SettingNetworkUG *) data;
+       net_profile_info_t *con_info = NULL;
+       int err = -1;
+       if (ad->prof_sel_idx != SETTING_ADD_PROFILE_INDEX) {
+               con_info = &(ad->prof_list[ad->prof_sel_idx]);
+       } else {
+               con_info = (net_profile_info_t *)calloc(1, sizeof(net_profile_info_t));
+               setting_retm_if(!con_info, "Failed to alloc for net_profile_info_t");
+       }
+
+       const char *access_name = _("Connection");
+       int auth_type = NET_PDP_AUTH_NONE;
+       safeCopyStr(con_info->ProfileInfo.Pdp.Apn, access_name, NET_PDP_APN_LEN_MAX);
+       con_info->ProfileInfo.Pdp.AuthInfo.AuthType = auth_type;
+
+       safeCopyStr(con_info->ProfileInfo.Pdp.net_info.ProxyAddr, "0.0.0.0:80",
+                   NET_PROXY_LEN_MAX);
+       safeCopyStr(con_info->ProfileInfo.Pdp.HomeURL,
+                   URL_HEAD, NET_HOME_URL_LEN_MAX);
+
+       SETTING_TRACE("ad->con_type:%d", ad->con_type);
+       /* save connection */
+       if (ad->prof_sel_idx == SETTING_ADD_PROFILE_INDEX)
+       {
+               /* add connection */
+               if (ad->con_type == NET_SERVICE_INTERNET)
+               {       /* Internet Connection */
+                       safeCopyStr(con_info->ProfileName,
+                                   "IDS_ST_BODY_INTERNET_CONNECTION",
+                                   strlen("IDS_ST_BODY_INTERNET_CONNECTION"));
+                       //con_info->ProfileInfo.Pdp.ServiceCategoryId = 1;
+               }
+               else
+               {
+                       safeCopyStr(con_info->ProfileName, STR_SETTING_MMS_CONNECTIONS,
+                                   strlen(STR_SETTING_MMS_CONNECTIONS));
+                       //con_info->ProfileInfo.Pdp.ServiceCategoryId = 2;
+               }
+               /** Specifies a protocol type */
+
+               /** network information */
+               con_info->ProfileInfo.Pdp.ServiceType = ad->con_type;
+
+               con_info->profile_type = NET_DEVICE_CELLULAR;
+               con_info->ProfileState = NET_STATE_TYPE_UNKNOWN;
+               con_info->ProfileInfo.Pdp.ProtocolType = NET_PDP_TYPE_GPRS;
+
+               err = net_add_profile(ad->con_type, con_info);
+               if (err != NET_ERR_NONE)
+               {
+                       SETTING_TRACE_DEBUG
+                           ("%s*** [ERR] net_add_profile. err=%d ***%s",
+                            SETTING_FONT_RED, err, SETTING_FONT_BLACK);
+                       setting_create_simple_popup(ad, ad->win_get,
+                                                   NULL, _(Invok_API_Failed_Desc));
+               }
+               FREE(con_info);
+       }
+       else
+       {
+               err = net_modify_profile(con_info->ProfileName, con_info);
+               if (err != NET_ERR_NONE)
+               {
+                       SETTING_TRACE_DEBUG
+                           ("%s*** [ERR] net_modify_profile. err=%d ***%s",
+                            SETTING_FONT_RED, err, SETTING_FONT_BLACK);
+               }
+       }
+
+       if (err == NET_ERR_NONE) //update genlist when it operaters sucessfully
+       {
+               if (!ad->prof_list) __get_connection_info(ad);//maybe new added
+               ad->ed_acs_name_desc = access_name;
+               ad->ed_user_name_desc = NULL;
+               ad->ed_pwd_desc = NULL;
+               ad->ed_pxy_addr_desc = g_strdup("0.0.0.0");
+               ad->ed_pxy_port_desc = g_strdup("80");
+               ad->ed_hm_url_desc = URL_HEAD;
+               ad->chkType = NET_PDP_AUTH_NONE;
+               ad->ed_auth_type_desc = _("IDS_COM_BODY_NONE");
+               __update_genlist_info(ad);
+       }
+       else
+       {
+               elm_genlist_realized_items_update(ad->scl_edit);//refresh genlist
+       }
+       ecore_idler_add(__connection_idler, ad);
+}
 
 static void
 setting_network_edit_connection_click_softkey_save_cb(void *data,
@@ -689,28 +1003,34 @@ setting_network_edit_connection_click_softkey_save_cb(void *data,
        retm_if(data == NULL, "Data parameter is NULL");
 
        SettingNetworkUG *ad = (SettingNetworkUG *) data;
+       /* elm_box_unpack_all(ad->bx_blk); */
+       /* elm_dialoguegroup_remove_all(ad->dg_blk); */
 
        int ret = setting_network_edit_connection_save_connection(ad);
        /* need special handle */
        if (SETTING_DNET_RETURN_NULL_ACCESS_NAME == ret
            || SETTING_DNET_RETURN_NULL_USER_NAME == ret
            || SETTING_DNET_RETURN_NULL_PASSWORD == ret
-           || SETTING_DNET_RETURN_INVALID_PROXY_ADDR == ret) {
+           || SETTING_DNET_RETURN_INVALID_PROXY_ADDR == ret
+           || SETTING_DNET_RETURN_ERR == ret) {
                return;
        }
        if (ret != SETTING_RETURN_SUCCESS) {
-               SETTING_TRACE_DEBUG
+               SETTING_TRACE_ERROR
                    ("%s*** [ERR] setting_network_edit_connection_save_connection ***%s",
                     SETTING_FONT_RED, SETTING_FONT_BLACK);
        }
 
-       setting_network_popup_create(ad, _("Saved!"), FALSE);
-       setting_view_change(&setting_view_network_connection_create,
-                           &setting_view_network_main, ad);
+       setting_create_popup_without_btn(ad, ad->win_get, NULL, _(KeyStr_Saved), NULL, POPUP_INTERVAL, FALSE, FALSE);
+       //re-fetch connection info..
+       FREE(ad->prof_list);
+       __get_connection_info(ad);
+
+       setting_network_edit_connection_click_softkey_cancel_cb(ad, ad->r_button, NULL);
 }
 
 static void
-setting_network_edit_connection_click_softkey_cancel_cb(void *data,
+setting_network_edit_connection_click_softkey_back_cb(void *data,
                                                        Evas_Object *obj,
                                                        void *event_info)
 {
@@ -719,10 +1039,45 @@ setting_network_edit_connection_click_softkey_cancel_cb(void *data,
        retm_if(data == NULL, "Data parameter is NULL");
 
        SettingNetworkUG *ad = (SettingNetworkUG *) data;
+       /* elm_box_unpack_all(ad->bx_blk); */
+       /* elm_dialoguegroup_remove_all(ad->dg_blk); */
        setting_view_change(&setting_view_network_connection_create,
                            &setting_view_network_main, ad);
 }
+static void
+setting_network_edit_connection_click_softkey_cancel_cb(void *data,
+                                                       Evas_Object *obj,
+                                                       void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+       /* error check */
+       retm_if(data == NULL, "Data parameter is NULL");
 
+       SettingNetworkUG *ad = (SettingNetworkUG *) data;
+       ad->l_button = elm_object_item_part_content_unset(ad->navi_it, NAVI_BTN_STYLE_LEFT);
+       elm_object_item_part_content_set(ad->navi_it, NAVI_BTN_STYLE_LEFT, NULL);
+       evas_object_hide(ad->l_button);
+
+       ad->m_button = elm_object_item_part_content_unset(ad->navi_it, NAVI_BTN_STYLE_MORE);
+       elm_object_item_part_content_set(ad->navi_it, NAVI_BTN_STYLE_MORE, NULL);
+       evas_object_hide(ad->m_button);
+
+       ad->r_button = elm_object_item_part_content_unset(ad->navi_it, NAVI_BTN_STYLE_RIGHT);
+       elm_object_item_part_content_set(ad->navi_it, NAVI_BTN_STYLE_RIGHT, NULL);
+       evas_object_hide(ad->r_button);
+       //setting_disable_evas_object(ad->r_button);
+       setting_undo_dim_evas_object(ad->r_button, TRUE);
+
+       elm_object_item_part_content_set(ad->navi_it, NAVI_BTN_STYLE_PREV, ad->back_btn);
+       elm_object_item_part_content_set(ad->navi_it, NAVI_CONTROLBAR_PART, ad->controlbar);
+       evas_object_show(ad->back_btn);
+       evas_object_show(ad->controlbar);
+
+       __get_connection_info(ad);
+       __update_genlist_info(ad);
+       if(ad->data_auth_type) elm_genlist_item_expanded_set(ad->data_auth_type->item, FALSE);
+       ecore_idler_add(__connection_idler, ad);
+}
 static void _gl_Gendial_sel(void *data, Evas_Object *obj, void *event_info)
 {
        /* SETTING_TRACE_BEGIN; */
@@ -735,48 +1090,36 @@ static void _gl_Gendial_sel(void *data, Evas_Object *obj, void *event_info)
 static void setting_network_connection_check_entry_empty(SettingNetworkUG *ad)
 {
        SETTING_TRACE_BEGIN;
-       if(!ad->has_form_changed ) return;
-       const char *entry_str = NULL;
+       if (!ad->has_form_changed)
+       {
+               SETTING_TRACE_DEBUG("ad->has_form_changed == FALSE!");
+               return;
+       }
        bool isFoundEmptyEntry = FALSE;
 
        do {
-               if (ad->data_acs_name) {
-                       entry_str = ad->data_acs_name->sub_desc;
-
-                       if (NULL == entry_str || '\0' == entry_str[0]) {
-                               isFoundEmptyEntry = TRUE;
-                               break;
-                       }
-
+               if (ad->data_acs_name && isEmptyStr(ad->data_acs_name->sub_desc)) {
+                       SETTING_TRACE("entry_str:%s", ad->data_acs_name->sub_desc);
+                       isFoundEmptyEntry = TRUE;
+                       break;
                }
-               if(ad->chkType != NET_PDP_AUTH_NONE)
-               {
-                       if (ad->data_user_name) {
-                               entry_str = ad->data_user_name->sub_desc;
-
-                               if (NULL == entry_str || '\0' == entry_str[0]) {
-                                       isFoundEmptyEntry = TRUE;
-                                       break;
-                               }
-                       }
-                       if (ad->data_pwd) {
-                               entry_str = ad->data_pwd->sub_desc;
-                               if (NULL == entry_str || '\0' == entry_str[0]) {
-                                       isFoundEmptyEntry = TRUE;
-                                       break;
-                               }
-                       }
+               if (ad->data_user_name && isEmptyStr(ad->data_user_name->sub_desc)) {
+                       SETTING_TRACE("entry_str:%s", ad->data_user_name->sub_desc);
+                       isFoundEmptyEntry = TRUE;
+                       break;
                }
-               if (ad->data_hm_url) {
-                       entry_str = ad->data_hm_url->sub_desc;
-                       if (NULL == entry_str || '\0' == entry_str[0]) {
-                               isFoundEmptyEntry = TRUE;
-                               break;
-                       }
+               if (ad->data_pwd && isEmptyStr(ad->data_pwd->sub_desc)) {
+                       SETTING_TRACE("entry_str:%s", ad->data_pwd->sub_desc);
+                       isFoundEmptyEntry = TRUE;
+                       break;
+               }
+               if (ad->data_hm_url && isEmptyStr(ad->data_hm_url->sub_desc)) {
+                       SETTING_TRACE("entry_str:%s", ad->data_hm_url->sub_desc);
+                       isFoundEmptyEntry = TRUE;
+                       break;
                }
        } while (0);
-
-       Evas_Object *done_btn = elm_object_item_part_content_get(ad->navi_it, "title_right_btn");
+       Evas_Object *done_btn = elm_object_item_part_content_get(ad->navi_it, NAVI_BTN_STYLE_LEFT);
        if (isFoundEmptyEntry) {
                if (!evas_object_pass_events_get(done_btn)) {//it had not yet been disabled
                        setting_disable_evas_object(done_btn);
@@ -821,10 +1164,14 @@ setting_network_edit_connection_display_auth_type(SettingNetworkUG *ad,
                        ad->data_user_name->userdata = ad;
                        ad->data_user_name->chk_change_cb =
                            setting_network_connection_entry_changed_cb;
+                       ad->data_user_name->limit_filter_data = calloc(1, sizeof(Elm_Entry_Filter_Accept_Set));
+                       if (ad->data_user_name->limit_filter_data) {
+                               ad->data_user_name->limit_filter_data->max_byte_count = NET_PDP_AUTH_USERNAME_LEN_MAX;
+                               ad->data_user_name->win_main = ad->win_get;
+                       }
                        ad->data_user_name->item =
                            elm_genlist_item_insert_after(ad->scl_edit,
-                                                         &
-                                                         (ad->itc_variable_height),
+                                                         &itc_1icon,
                                                          ad->data_user_name,
                                                          NULL,
                                                          ad->item_above_user_name,
@@ -846,10 +1193,15 @@ setting_network_edit_connection_display_auth_type(SettingNetworkUG *ad,
                        ad->data_pwd->chk_change_cb =
                            setting_network_connection_entry_changed_cb;
                        ad->data_pwd->isPasswordFlag = TRUE;
+                       /* ad->data_pwd->chk_change_cb = chk_change_cb; */
+                       ad->data_pwd->limit_filter_data = calloc(1, sizeof(Elm_Entry_Filter_Accept_Set));
+                       if (ad->data_pwd->limit_filter_data) {
+                               ad->data_pwd->limit_filter_data->max_byte_count = NET_PDP_AUTH_PASSWORD_LEN_MAX;
+                               ad->data_pwd->win_main = ad->win_get;
+                       }
                        ad->data_pwd->item =
                            elm_genlist_item_insert_after(ad->scl_edit,
-                                                         &
-                                                         (ad->itc_variable_height),
+                                                         &itc_1icon,
                                                          ad->data_pwd, NULL,
                                                          ad->
                                                          data_user_name->item,
@@ -858,7 +1210,7 @@ setting_network_edit_connection_display_auth_type(SettingNetworkUG *ad,
 
                        ad->item_above_proxy_add =
                            elm_genlist_item_insert_after(ad->scl_edit,
-                                                         &(ad->itc_seperator),
+                                                         &itc_seperator,
                                                          NULL, NULL,
                                                          ad->data_pwd->item,
                                                          ELM_GENLIST_ITEM_NONE,
@@ -866,11 +1218,9 @@ setting_network_edit_connection_display_auth_type(SettingNetworkUG *ad,
                        elm_genlist_item_select_mode_set
                            (ad->item_above_proxy_add, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
 
-                       Evas_Object *done_btn = elm_object_item_part_content_get(ad->navi_it, "title_right_btn");
-                       if (!evas_object_pass_events_get(done_btn)) {//it had not yet been disabled
-                               setting_disable_evas_object(done_btn);
-                               setting_dim_evas_object(done_btn, TRUE);
-                       }
+                       ad->has_form_changed  = TRUE;
+                       setting_network_connection_check_entry_empty(ad);
+                       /* ad->is_show_user = 1; */
                }
                ad->is_show_user = 1;
        } else {                /* to hide */
@@ -909,16 +1259,33 @@ setting_network_connection_entry_changed_cb(void *data, Evas_Object *obj,
            (Setting_GenGroupItem_Data *) data;
        SettingNetworkUG *ad = list_item->userdata;
        const char *entry_str = elm_entry_entry_get(obj);
-       if (0 != safeStrCmp(entry_str, list_item->sub_desc))
-       {
-               list_item->sub_desc = (char *)g_strdup(entry_str);
-               ad->has_form_changed  = TRUE;
+       list_item->sub_desc = (char *)g_strdup(entry_str);
+       ad->has_form_changed  = TRUE;
+       setting_network_connection_check_entry_empty(ad);
+}
+static void
+setting_network_connection_hide_input_pannel(void *data)
+{
+       SETTING_TRACE_BEGIN;
+       retm_if(data == NULL, "Data parameter is NULL");
+       SettingNetworkUG *ad = data;
+       if (ad->data_acs_name) {
+               setting_hide_input_pannel_cb(ad->data_acs_name->eo_check);
        }
-
-       if (NULL == entry_str || 0 == safeStrLen(entry_str)) {
-               Evas_Object *layout = elm_object_parent_widget_get(list_item->eo_check);
-               if (layout) elm_object_part_text_set(layout, "elm.guidetext", _("IDS_ST_BODY_TAP_TO_INSERT"));
+       if (ad->data_user_name) {
+               setting_hide_input_pannel_cb(ad->data_user_name->eo_check);
+       }
+       if (ad->data_pwd) {
+               setting_hide_input_pannel_cb(ad->data_pwd->eo_check);
+       }
+       if (ad->data_pxy_addr) {
+               setting_hide_input_pannel_cb(ad->data_pxy_addr->eo_check);
+       }
+       if (ad->data_pxy_port) {
+               setting_hide_input_pannel_cb(ad->data_pxy_port->eo_check);
+       }
+       if (ad->data_hm_url) {
+               setting_hide_input_pannel_cb(ad->data_hm_url->eo_check);
        }
-
-       setting_network_connection_check_entry_empty(ad);
 }
+