Fix prevent issues
[apps/core/preloaded/settings.git] / setting-password / src / setting-password.c
old mode 100644 (file)
new mode 100755 (executable)
index c3f7ef0..071548b
@@ -1,64 +1,45 @@
 /*
-  * 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-password.h>
+//#include <security-server.h>
+
 #ifndef UG_MODULE_API
 #define UG_MODULE_API __attribute__ ((visibility("default")))
 #endif
 
-static tapi_request_event tapi_req_events[] = {
-       {-1, TAPI_EVENT_SIM_CHANGE_PINS_CNF},
-       {-1, TAPI_EVENT_SIM_DISABLE_SEC_CNF},
-       {-1, TAPI_EVENT_SIM_ENABLE_SEC_CNF},
-       {-1, TAPI_EVENT_SIM_VERIFY_SEC_CNF},
-       {-1, TAPI_EVENT_SIM_VERIFY_PUK_CNF},
-       {-1, TAPI_EVENT_SIM_DISABLE_FDNMODE_CNF},
-       {-1, TAPI_EVENT_SIM_ENABLE_FDNMODE_CNF},
-       {-1, TAPI_EVENT_SIM_ENABLE_PERS_CNF},
-       {-1, TAPI_EVENT_SIM_DISABLE_PERS_CNF},
-       {-1, TAPI_EVENT_SIM_PERS_STATUS_CNF},
-};
-
 static struct _pw_item pw_its[] = {
-       { SETTING_PW_TYPE_POWER_ON_LOCK, "SETTING_PW_TYPE_POWER_ON_LOCK" },
-       { SETTING_PW_TYPE_PHONE_LOCK, "SETTING_PW_TYPE_PHONE_LOCK" },
-       { SETTING_PW_TYPE_PHONE_LOCK_ON, "SETTING_PW_TYPE_PHONE_LOCK_ON" },
-       { SETTING_PW_TYPE_SET_PASSWORD, "SETTING_PW_TYPE_SET_PASSWORD" },
-       { SETTING_PW_TYPE_SIMPLE_PASSWORD, "SETTING_PW_TYPE_SIMPLE_PASSWORD" },
-       { SETTING_PW_TYPE_CHANGE_PASSWORD, "SETTING_PW_TYPE_CHANGE_PASSWORD" },
        { SETTING_PW_TYPE_SIM_LOCK_ON, "SETTING_PW_TYPE_SIM_LOCK_ON" },
        { SETTING_PW_TYPE_SIM_LOCK_OFF, "SETTING_PW_TYPE_SIM_LOCK_OFF" },
        { SETTING_PW_TYPE_PIN_LOCK_ON, "SETTING_PW_TYPE_PIN_LOCK_ON" },
        { SETTING_PW_TYPE_PIN_LOCK_OFF, "SETTING_PW_TYPE_PIN_LOCK_OFF" },
        { SETTING_PW_TYPE_CHANGE_PIN1, "SETTING_PW_TYPE_CHANGE_PIN1" },
-       { SETTING_PW_TYPE_FDN_MODE_ON, "SETTING_PW_TYPE_FDN_MODE_ON" },
-       { SETTING_PW_TYPE_FDN_MODE_OFF, "SETTING_PW_TYPE_FDN_MODE_OFF" },
        { SETTING_PW_TYPE_CHANGE_PIN2, "SETTING_PW_TYPE_CHANGE_PIN2" },
        { SETTING_PW_TYPE_PIN1_BLOCKED, "SETTING_PW_TYPE_PIN1_BLOCKED" },
        { SETTING_PW_TYPE_PIN2_BLOCKED, "SETTING_PW_TYPE_PIN2_BLOCKED" },
        { SETTING_PW_TYPE_RESET, "SETTING_PW_TYPE_RESET" },
-       { SETTING_PW_TYPE_CLEAR, "SETTING_PW_TYPE_CLEAR"},              
-       { SETTING_PW_TYPE_LOCK_FOR_APP, "SETTING_PW_TYPE_LOCK_FOR_APP"}, /* used by other app */
        { SETTING_PW_TYPE_MAX, NULL }
 };
 
 static void setting_tapi_init(SettingPasswordUG *ad);
 static void setting_password_ug_display_result_popup(tapi_receive_info *result, SettingPasswordUG *ad);
-static int setting_password_ug_sim_event_callback(const TelTapiEvent_t *event, void *data);
 
 static void setting_password_ug_cb_resize(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
@@ -76,19 +57,17 @@ static void setting_tapi_init(SettingPasswordUG *ad)
        case SETTING_PW_TYPE_PIN_LOCK_OFF:
        case SETTING_PW_TYPE_CHANGE_PIN1:
        case SETTING_PW_TYPE_CHANGE_PIN2:
-       case SETTING_PW_TYPE_FDN_MODE_ON:
-       case SETTING_PW_TYPE_FDN_MODE_OFF:
        case SETTING_PW_TYPE_PIN1_BLOCKED:
        case SETTING_PW_TYPE_PIN2_BLOCKED:
-               /* subscribe tapi events */
-               if (setting_password_ug_subscribe_sim_events(ad) != SETTING_RETURN_SUCCESS) {
-                       SETTING_TRACE_DEBUG
-                           ("%s*** [ERR] setting_security_subscribe_sim_events. ***%s",
+               ad->handle =  tel_init(NULL);
+               if (!ad->handle) {
+                       SETTING_TRACE_DEBUG("%s*** [ERR] tel_init. ***%s",
                             SETTING_FONT_RED, SETTING_FONT_BLACK);
                        setting_password_ug_create_popup_notitle_nobtn(ad,
                                                                       _("IDS_COM_POP_ERROR"),
                                                                       FALSE);
                }
+
                break;
        default:
                break;
@@ -106,14 +85,11 @@ static void setting_tapi_finize(SettingPasswordUG *ad)
        case SETTING_PW_TYPE_PIN_LOCK_OFF:
        case SETTING_PW_TYPE_CHANGE_PIN1:
        case SETTING_PW_TYPE_CHANGE_PIN2:
-       case SETTING_PW_TYPE_FDN_MODE_ON:
-       case SETTING_PW_TYPE_FDN_MODE_OFF:
        case SETTING_PW_TYPE_PIN1_BLOCKED:
        case SETTING_PW_TYPE_PIN2_BLOCKED:
-               /* unsubscribe tapi events */
-               if (setting_password_ug_unsubscribe_sim_events(ad) != SETTING_RETURN_SUCCESS) {
+               if (tel_deinit(ad->handle) != TAPI_API_SUCCESS) {
                        SETTING_TRACE_DEBUG
-                           ("%s*** [ERR] setting_security_subscribe_sim_events. ***%s",
+                           ("%s*** [ERR] setting_network_unsubscribe_tapi_events. ***%s",
                             SETTING_FONT_RED, SETTING_FONT_BLACK);
                        setting_password_ug_create_popup_notitle_nobtn(ad,
                                                                       _("IDS_COM_POP_ERROR"),
@@ -126,11 +102,12 @@ static void setting_tapi_finize(SettingPasswordUG *ad)
        SETTING_TRACE_END;
 }
 
-setting_pw_type __get_password_view_type(SettingPasswordUG *ad, bundle *data)
+setting_pw_type __get_password_view_type(SettingPasswordUG *ad, service_h service)
 {
        SETTING_TRACE_BEGIN;
-       setting_retvm_if(NULL == data, -1, "NULL == data");
-       ad->view_type_string = bundle_get_val(data, "viewtype");
+
+       service_get_extra_data(service, "viewtype", &(ad->view_type_string));
+
        SETTING_TRACE("viewtype:%s", ad->view_type_string);
        setting_pw_type ret_pw_type = 0;
        int i;
@@ -141,63 +118,12 @@ setting_pw_type __get_password_view_type(SettingPasswordUG *ad, bundle *data)
                {
                        ret_pw_type = pw_its[i].pw_type_num;
                        break;
-               } 
-       }
-
-       if( (ret_pw_type == SETTING_PW_TYPE_PHONE_LOCK) ||
-               (ret_pw_type == SETTING_PW_TYPE_SIMPLE_PASSWORD) ||
-               (ret_pw_type == SETTING_PW_TYPE_LOCK_FOR_APP) ||
-               (ret_pw_type == SETTING_PW_TYPE_CHANGE_PASSWORD) ||
-               (ret_pw_type == SETTING_PW_TYPE_RESET) )
-       {
-               if(setting_password_is_password_empty() == TRUE)
-               {
-                       ret_pw_type = SETTING_PW_TYPE_SET_PASSWORD;
                }
        }
 
-       return ret_pw_type;
-}
+       /* end */
 
-static void setting_password_ug_set_password_cb(void *data, Evas_Object *obj,
-                                               void *event_info)
-{
-       /* error check */
-       retm_if(data == NULL, "Data parameter is NULL");
-
-       SettingPasswordUG *ad = (SettingPasswordUG *) data;
-
-       switch (btn_type(obj)) {
-       case POPUP_RESPONSE_OK:
-               {
-                       /*  creating a view. */
-                       setting_view_create(&setting_view_password_main, (void *)ad);
-                       evas_object_event_callback_add(ad->win_main_layout,
-                                                      EVAS_CALLBACK_RESIZE,
-                                                      setting_password_ug_cb_resize,
-                                                      ad);
-                       if(ad->setpw_notify)
-                       {
-                               evas_object_del(ad->setpw_notify);
-                               ad->setpw_notify = NULL;
-                       }
-               }
-               break;
-
-       case POPUP_RESPONSE_CANCEL:
-               {
-                       if (ad->setpw_notify)
-                       {
-                               evas_object_del(ad->setpw_notify);
-                               ad->setpw_notify = NULL;
-                       }
-
-                       ug_destroy_me(ad->ug);
-               }
-               break;
-       default:
-               break;
-       }
+       return ret_pw_type;
 }
 
 static char *__gl_err_desc_text_get(void *data, Evas_Object *obj, const char *part)
@@ -206,15 +132,15 @@ static char *__gl_err_desc_text_get(void *data, Evas_Object *obj, const char *pa
        char buf[256] = {0,};
 
        snprintf(buf, sizeof(buf)-1, "<font color=#ff0000>%s</font>", (char*)data);
-       
+
        return strdup(buf);
 }
 
-static void *setting_password_ug_on_create(struct ui_gadget *ug,
-                                          enum ug_mode mode, bundle *data,
+static void *setting_password_ug_on_create(ui_gadget_h ug,
+                                          enum ug_mode mode, service_h service,
                                           void *priv)
 {
-       setting_retvm_if((!ug || !priv), NULL, "!ug || !priv");
+       setting_retvm_if((!priv), NULL, "!priv");
 
        SettingPasswordUG *passwordUG = (SettingPasswordUG *)priv;
        passwordUG->ug = ug;
@@ -237,14 +163,12 @@ static void *setting_password_ug_on_create(struct ui_gadget *ug,
                return NULL;
        }
        /* set launguage */
-       setlocale(LC_ALL, "");
-       bindtextdomain(SETTING_PACKAGE, SETTING_LOCALEDIR);
+       setting_set_i18n(SETTING_PACKAGE, SETTING_LOCALEDIR);
        FREE(pa_path);
-       /* --------------------------------------------------------- */
 
        setting_create_Gendial_itc("dialogue/title", &(passwordUG->itc_title));
        setting_create_Gendial_itc("dialogue/1icon",&(passwordUG->itc_variable_height));
-       passwordUG->itc_seperator.item_style = "dialogue/separator/21/with_line";
+       passwordUG->itc_seperator.item_style = "dialogue/separator";
        passwordUG->itc_seperator.func.text_get = NULL;
        passwordUG->itc_seperator.func.content_get = NULL;
        passwordUG->itc_seperator.func.state_get = NULL;
@@ -257,79 +181,31 @@ static void *setting_password_ug_on_create(struct ui_gadget *ug,
        passwordUG->itc_err_desc.func.del = NULL;
 
        /* init */
-       ecore_imf_init();
-       passwordUG->view_type = __get_password_view_type(passwordUG, data);
+       passwordUG->view_type = __get_password_view_type(passwordUG, service);
        setting_tapi_init(passwordUG);
 
-       /* get simple password flag */
-       if(vconf_get_bool(VCONFKEY_SETAPPL_STATE_SIMPLE_PASSWORD_BOOL, &(passwordUG->is_simple_password_on)) < 0)
-               passwordUG->is_simple_password_on = 0;
-
-       SETTING_TRACE_DEBUG("simple password is %d", passwordUG->is_simple_password_on);
-
-               if (SETTING_PW_TYPE_SET_PASSWORD == passwordUG->view_type) 
-               {
-               if( strcmp(passwordUG->view_type_string, "SETTING_PW_TYPE_RESET") == 0)
-               {       /* no need to set password, in this case.*/
-                       bundle *b = bundle_create();
-                       if (!b)
-                               return NULL;
-
-                       bundle_add(b, "result", passwordUG->view_type_string);
-                       ug_send_result(passwordUG->ug, b);
-                       SETTING_TRACE("Send Result : %s\n", passwordUG->view_type_string);
-                       bundle_free(b);
-                       /* Send destroy request */
-                       ug_destroy_me(passwordUG->ug);
-               }
-               /*  Make a popup */
-                       passwordUG->setpw_notify = setting_create_popup_with_btn(passwordUG,
-                                        (Evas_Object *) ug_get_window(),
-                                        _("IDS_ST_POP_NO_PASSWORD_SET_PASSWORD_Q"),
-                                        NULL,
-                                        setting_password_ug_set_password_cb,
-                                        0, 2, _("IDS_COM_SK_YES"),_("IDS_COM_SK_NO"));
-
-               /*  Make a Layout */
-               passwordUG->ly_main = elm_layout_add(passwordUG->win_main_layout);
-               if (passwordUG->ly_main == NULL)
-                       return NULL;
-               evas_object_hide(passwordUG->ly_main);
-
-               return passwordUG->ly_main;
-       } else {
-               /*  creating a view. */
-               setting_view_create(&setting_view_password_main,(void *)passwordUG);
-               evas_object_event_callback_add(passwordUG->win_main_layout,
+       /*  creating a view. */
+       setting_view_create(&setting_view_password_main,(void *)passwordUG);
+       evas_object_event_callback_add(passwordUG->win_main_layout,
                                               EVAS_CALLBACK_RESIZE,
                                               setting_password_ug_cb_resize,
                                               passwordUG);
-               return passwordUG->ly_main;
-       }
+       return passwordUG->ly_main;
 }
 
-static void setting_password_ug_on_start(struct ui_gadget *ug, bundle *data, void *priv)
+static void setting_password_ug_on_start(ui_gadget_h ug, service_h service, void *priv)
 {
-       SettingPasswordUG *passwordUG = (SettingPasswordUG *)priv;
-
-       /* handle focus of entry */
-       if(passwordUG->sp_entry1 != NULL)
-       {
-               SETTING_TRACE_DEBUG("sp_entry1 is exist.");
-               elm_object_focus_set(passwordUG->sp_entry1, EINA_TRUE);
-               passwordUG->sp_focused = passwordUG->sp_entry1;
-       }
 }
 
-static void setting_password_ug_on_pause(struct ui_gadget *ug, bundle *data, void *priv)
+static void setting_password_ug_on_pause(ui_gadget_h ug, service_h service, void *priv)
 {
 }
 
-static void setting_password_ug_on_resume(struct ui_gadget *ug, bundle *data, void *priv)
+static void setting_password_ug_on_resume(ui_gadget_h ug, service_h service, void *priv)
 {
 }
 
-static void setting_password_ug_on_destroy(struct ui_gadget *ug, bundle *data, void *priv)
+static void setting_password_ug_on_destroy(ui_gadget_h ug, service_h service, void *priv)
 {
        SettingPasswordUG *passwordUG = (SettingPasswordUG *)priv;
 
@@ -340,15 +216,11 @@ static void setting_password_ug_on_destroy(struct ui_gadget *ug, bundle *data, v
        if (passwordUG->t_info) {
                FREE(passwordUG->t_info);
        }
-
        if(passwordUG->remove_timer)
        {
                ecore_timer_del(passwordUG->remove_timer);
                passwordUG->remove_timer = NULL;
        }
-       
-       /* release */
-       ecore_imf_shutdown();
 
        /*  delete the allocated objects. */
        setting_view_destroy(&setting_view_password_main, passwordUG);
@@ -358,16 +230,21 @@ static void setting_password_ug_on_destroy(struct ui_gadget *ug, bundle *data, v
        }
 }
 
-static void setting_password_ug_on_message(struct ui_gadget *ug, bundle *msg,
-                                          bundle *data, void *priv)
+static void setting_password_ug_on_message(ui_gadget_h ug, service_h msg,
+                                          service_h service, void *priv)
 {
 
 }
 
-static void setting_password_ug_on_event(struct ui_gadget *ug,
-                                        enum ug_event event, bundle *data,
+static void setting_password_ug_on_event(ui_gadget_h ug,
+                                        enum ug_event event, service_h service,
                                         void *priv)
 {
+       if (!priv)
+               return;
+
+       SettingPasswordUG *ad = (SettingPasswordUG*)priv;
+
        switch (event) {
        case UG_EVENT_LOW_MEMORY:
                break;
@@ -376,12 +253,22 @@ static void setting_password_ug_on_event(struct ui_gadget *ug,
        case UG_EVENT_LANG_CHANGE:
                break;
        case UG_EVENT_ROTATE_PORTRAIT:
-               break;
        case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
-               break;
        case UG_EVENT_ROTATE_LANDSCAPE:
-               break;
        case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
+               /* Focus entry */
+               SETTING_TRACE_DEBUG("get rotation event");
+               if(ad->ed_pw1)
+               {
+                       if (ad->ed_pw1->isFocusFlag || (ad->ed_pw1->eo_check != NULL))
+                       {
+                               SETTING_TRACE_DEBUG("set focus");
+                               /* no matter how many edifileds, it only need focus on 1st editfiled */
+                               elm_object_focus_set(ad->ed_pw1->eo_check, EINA_TRUE);
+                               elm_entry_cursor_end_set(ad->ed_pw1->eo_check);
+                       }
+               }
+
                break;
        case UG_EVENT_REGION_CHANGE:
                break;
@@ -390,11 +277,11 @@ static void setting_password_ug_on_event(struct ui_gadget *ug,
        }
 }
 
-static void setting_password_ug_on_key_event(struct ui_gadget *ug,
+static void setting_password_ug_on_key_event(ui_gadget_h ug,
                                             enum ug_key_event event,
-                                            bundle *data, void *priv)
+                                            service_h service, void *priv)
 {
-       if (!ug || !priv)
+       if (!priv)
                return;
 
        SettingPasswordUG *ad = (SettingPasswordUG*)priv;
@@ -429,11 +316,14 @@ UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
        ops->priv = passwordUG;
        ops->opt = UG_OPT_INDICATOR_ENABLE;
 
+       memset(passwordUG, 0x00, sizeof(SettingPasswordUG));
+
        return 0;
 }
 
 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
 {
+       SETTING_TRACE_BEGIN;
        struct SettingPasswordUG *passwordUG;
        setting_retm_if(!ops, "ops == NULL");
 
@@ -442,337 +332,260 @@ UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
                FREE(passwordUG);
 }
 
-int setting_password_ug_subscribe_sim_events(SettingPasswordUG *ad)
+void setting_get_sim_lock_info_cb(TapiHandle *handle, int result, void *data, void *user_data)
 {
-       int i = 0;
-       int ret = SETTING_RETURN_SUCCESS;
-       int tapi_ret = TAPI_API_SUCCESS;
-       tapi_request_tapi_info *t_info;
-
-       if (tel_init() != TAPI_API_SUCCESS) {
-               SETTING_TRACE_DEBUG("%s*** [ERR] tel_init. ***%s",
-                                   SETTING_FONT_RED, SETTING_FONT_BLACK);
-               return SETTING_TAPI_INIT_ECORE_ERR;
-       }
+       SETTING_TRACE_BEGIN;
+       ret_if(data == NULL || user_data == NULL);
 
-       SETTING_TRACE_DEBUG("Tapi Init : %d", tapi_ret);
+       TelSimPinOperationResult_t sec_rt = result;
+       TelSimLockInfo_t *lock = data;
 
-       t_info = calloc(1, sizeof(tapi_request_tapi_info));
+       SettingPasswordUG *ad = (SettingPasswordUG *)user_data;
 
-       if (NULL == t_info) {
-               SETTING_TRACE_DEBUG("Tapi calloc data error\n");
-               return SETTING_RETURN_FAIL;
-       }
+       SETTING_TRACE_DEBUG("sec_ret[%d], lock_type[%d], lock_status[%d], retry_count[%d]", sec_rt, lock->lock_type, lock->lock_status, lock->retry_count);
 
-       t_info->evt = tapi_req_events;
-       t_info->evt_sz = sizeof(tapi_req_events) / sizeof(tapi_req_events[0]);
-       t_info->cb = NULL;
-       t_info->cb_data = NULL;
-
-       SETTING_TRACE_DEBUG("Tapi Info Size : %d", t_info->evt_sz);
-       for (i = 0; i < t_info->evt_sz; i++) {
-               tapi_ret =
-                   tel_register_event(t_info->evt[i].event,
-                                      &(t_info->evt[i].sid),
-                                      (TelAppCallback) &
-                                      setting_password_ug_sim_event_callback,
-                                      ad);
-               SETTING_TRACE_DEBUG
-                   ("TAPI Register Return : %d Event : %d sid: %d", tapi_ret,
-                    t_info->evt[i].event, t_info->evt[i].sid);
+       char temp[256] ={0,};
+       if(lock->retry_count > 1)
+               snprintf(temp, 256, _(ATTEMPTS_DESC), lock->retry_count);
+       else if(lock->retry_count > 0)
+               snprintf(temp, 256, _(ATTEMPT_DESC), lock->retry_count);
+
+       if(ad->err_desc)
+       {
+               elm_object_item_del(ad->err_desc);
+               ad->err_desc = NULL;
        }
 
-       if (TAPI_API_SUCCESS == tapi_ret) {
-               tapi_ret = tel_register_app_name("org.tizen.setting");
+       ad->err_desc = elm_genlist_item_append(ad->scroller, &(ad->itc_err_desc), temp, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+}
 
-               if (tapi_ret != TAPI_API_SUCCESS) {
-                       SETTING_TRACE_DEBUG
-                           ("%s*** [ERR] tel_register_app_name. ***%s",
-                            SETTING_FONT_RED, SETTING_FONT_BLACK);
-                       FREE(t_info);   /* memory leak */
-                       return SETTING_TAPI_REG_EVENT_ECORE_ERR;
-               }
+void setting_get_pin_lock_info_cb(TapiHandle *handle, int result, void *data, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+
+       TelSimPinOperationResult_t sec_rt = result;
+       TelSimLockInfo_t *lock = data;
+
+       SettingPasswordUG *ad = (SettingPasswordUG *)user_data;
+
+       SETTING_TRACE_DEBUG("sec_ret[%d], lock_type[%d], lock_status[%d], retry_count[%d]", sec_rt, lock->lock_type, lock->lock_status, lock->retry_count);
+
+       char temp[256] ={0,};
+       if(lock->retry_count > 1)
+               snprintf(temp, 256, _(ATTEMPTS_DESC), lock->retry_count);
+       else if(lock->retry_count > 0)
+               snprintf(temp, 256, _(ATTEMPT_DESC), lock->retry_count);
+
+       if(ad->err_desc)
+       {
+               elm_object_item_del(ad->err_desc);
+               ad->err_desc = NULL;
        }
-       ad->t_info = t_info;
-       return ret;
+
+       ad->err_desc = elm_genlist_item_append(ad->scroller, &(ad->itc_err_desc), temp, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
 }
 
-int setting_password_ug_unsubscribe_sim_events(SettingPasswordUG *ad)
+void setting_sim_change_pins_cb(TapiHandle *handle, int result, void *data, void *user_data)
 {
-       retv_if(ad == NULL, SETTING_GENERAL_ERR_WRONG_PARAMETER);
-       
-       int i = 0;
-       int ret = SETTING_RETURN_SUCCESS;
-       int tapi_ret = TAPI_API_SUCCESS;
-
-       if (ad->t_info) {
-               tapi_request_tapi_info *t_info = ad->t_info;
-               SETTING_TRACE("T_INFO size : %d\n", t_info->evt_sz);
-               for (i = 0; i < t_info->evt_sz; i++) {
-                       if (t_info->evt[i].sid == -1)
-                               continue;
-
-                       /* tapi_ret = tel_deregister_event_at_ecore_loop(t_info->evt[i].sid); */
-                       tapi_ret = tel_deregister_event(t_info->evt[i].sid);
-                       if (tapi_ret != TAPI_API_SUCCESS) {
-                               SETTING_TRACE_DEBUG
-                                   ("%s*** [ERR] tel_deregister_event. %dth , sid =%d, tapi_ret=%d ***%s\n",
-                                    SETTING_FONT_RED, i, t_info->evt[i].sid,
-                                    tapi_ret, SETTING_FONT_BLACK);
-                               return SETTING_TAPI_DEREG_EVENT_ECORE_ERR;
-                               break;
-                       } else {
-                               SETTING_TRACE
-                                   ("Event unregistering succeeded [%dth : %d] [subscription ID: %d]",
-                                    i, t_info->evt[i].event,
-                                    t_info->evt[i].sid);
-                       }
+       SETTING_TRACE_BEGIN;
+       ret_if(!user_data || !data);
+       TelSimPinOperationResult_t sec_rt = result;
+       tapi_receive_info result_info = { 0, };
+       TelSimSecResult_t *sim_event_data = (TelSimSecResult_t *) data;
+       SETTING_TRACE("sec_rt[%d]", sec_rt);
+       SETTING_TRACE("sim_event_data->type:%d", sim_event_data->type);
+       SETTING_TRACE("sim_event_data->retry_count[%d]", sim_event_data->retry_count);
+
+       if (TAPI_SIM_PIN_OPERATION_SUCCESS == sec_rt) {
+               if (TAPI_SIM_PTYPE_PIN1 == sim_event_data->type)
+                       result_info.stat = SIM_PIN1_CHANGE_SUCCESS;
+               else if (TAPI_SIM_PTYPE_PIN2 == sim_event_data->type)
+                       result_info.stat = SIM_PIN2_CHANGE_SUCCESS;
+       } else if (TAPI_SIM_PIN_INCORRECT_PASSWORD == sec_rt) {
+               if (TAPI_SIM_PTYPE_PIN1 == sim_event_data->type) {
+                       result_info.stat = SIM_INCORRECT_PIN1_CODE;
+                       result_info.retry_cnt = sim_event_data->retry_count;
+               } else if (TAPI_SIM_PTYPE_PIN2 == sim_event_data->type) {
+                       result_info.stat = SIM_INCORRECT_PIN2_CODE;
+                       result_info.retry_cnt = sim_event_data->retry_count;
                }
-               FREE(ad->t_info);
-       }
-
-       tapi_ret = tel_deinit();
-       if (tapi_ret != TAPI_API_SUCCESS) {
-               SETTING_TRACE_DEBUG("%s*** [ERR] tel_deinit. tapi_ret=%d ***%s",
-                                   SETTING_FONT_RED, tapi_ret,
-                                   SETTING_FONT_BLACK);
-               return SETTING_TAPI_DEREG_EVENT_ECORE_ERR;
+       } else if (TAPI_SIM_PUK_REQUIRED == sec_rt) {
+               if (TAPI_SIM_PTYPE_PIN1 == sim_event_data->type)
+                       result_info.stat = SIM_PIN1_BLOCKED;
+               else if (TAPI_SIM_PTYPE_PIN2 == sim_event_data->type)
+                       result_info.stat = SIM_PIN2_BLOCKED;
+       } else {
+               SETTING_TRACE_DEBUG
+                   ("%s*** [ERR] INCORRECTED ***%s",
+                    SETTING_FONT_RED, SETTING_FONT_BLACK);
+               return;
        }
-       return ret;
+       setting_password_ug_display_result_popup(&result_info, user_data);
 }
 
-#ifdef Status
-#undef Status
-#endif
-
-static int
-setting_password_ug_sim_event_callback(const TelTapiEvent_t *event, void *data)
+void setting_sim_verify_puks_cb(TapiHandle *handle, int result, void *data, void *user_data)
 {
-       retv_if(data == NULL || event == NULL, SETTING_GENERAL_ERR_WRONG_PARAMETER);
-       SETTING_TRACE("event->EventClass=\t%d", (int)(event->EventClass));
-       SETTING_TRACE("event->EventType=\t%d", event->EventType);
-       SETTING_TRACE("event->Status=\t%d", event->Status);
-       SETTING_TRACE("event->RequestId=\t%d", event->RequestId);
-       SettingPasswordUG *ad = data;
+       SETTING_TRACE_BEGIN;
 
+       ret_if(!user_data || !data);
+       SettingPasswordUG *ad = user_data;
+       TelSimPinOperationResult_t sec_rt = result;
        tapi_receive_info result_info = { 0, };
-       TelSimSecResult_t *sim_event_data = NULL;
-       sim_event_data = (TelSimSecResult_t *) event->pData;
+       TelSimSecResult_t *sim_event_data = (TelSimSecResult_t *) data;
+       ad->verify_puks_result = sim_event_data;
+       SETTING_TRACE("sec_rt[%d]", sec_rt);
+       SETTING_TRACE("sim_event_data->type:%d", sim_event_data->type);
+       SETTING_TRACE("sim_event_data->retry_count[%d]", sim_event_data->retry_count);
 
-       if (TAPI_EVENT_CLASS_SIM != event->EventClass || NULL == sim_event_data) {
-               SETTING_TRACE_DEBUG
-                   ("EventClass is not EVENT_CLASS_SIM or sim_event_data is NULL!\n");
-               SETTING_TRACE_DEBUG("sim_event_data %p\n", sim_event_data);
-               return SETTING_RETURN_FAIL;
+       if (TAPI_SIM_PTYPE_PUK1 == sim_event_data->type)
+       {
+               //if (TAPI_SIM_PIN_REQUIRED == sec_rt){
+               if (TAPI_SIM_PIN_OPERATION_SUCCESS == sec_rt){
+                       SETTING_TRACE_DEBUG("SIM_PIN1_UNBLOCKED");
+                       safeCopyStr(ad->view_type_string, "SETTING_PW_TYPE_PIN1_UNBLOCKED", sizeof("SETTING_PW_TYPE_PIN1_UNBLOCKED")+1);
+                       setting_password_ug_create_popup_notitle_nobtn(ad, _("Verfy PUK1 Sucessfully"), TRUE);
+                       return;
+               } else if (TAPI_SIM_PIN_INCORRECT_PASSWORD == sec_rt) {
+                       result_info.stat = SIM_INCORRECT_PUK1_CODE;
+                       result_info.retry_cnt = sim_event_data->retry_count;
+               } else {
+                       result_info.stat = SIM_UNKNOWN_ERROR;
+               }
        }
 
-       switch (event->EventType) {
-               /*  Lock ON */
-       case TAPI_EVENT_SIM_ENABLE_SEC_CNF:
-               {
-                       SETTING_TRACE
-                           ("CASE: TAPI_EVENT_SIM_ENABLE_SEC_CNF [Event Data Type: %d]",
-                            sim_event_data->type);
-
-                       /*  Sim Lock  */
-                       if (TAPI_SIM_PTYPE_SIM == sim_event_data->type) {
-                               if (TAPI_SIM_PIN_OPERATION_SUCCESS == event->Status)
-                                       result_info.stat = SIM_LOCK_ON_SUCCESS;
-                               else if (TAPI_SIM_PIN_INCORRECT_PASSWORD == event->Status)
-                                       result_info.stat = SIM_LOCK_INCORRECT_PASSWORD;
-                               else {
-                                       SETTING_TRACE_DEBUG("%s*** [ERR] INCORRECTED ***%s",
-                                            SETTING_FONT_RED,
-                                            SETTING_FONT_BLACK);
-                                       return SETTING_RETURN_FAIL;
-                               }
-                       }
-                       /*  Pin Lock */
-                       else if (TAPI_SIM_PTYPE_PIN1 == sim_event_data->type) {
-                               if (TAPI_SIM_PIN_OPERATION_SUCCESS == event->Status)
-                                       result_info.stat = SIM_PIN_LOCK_ON_SUCCESS;
-                               else if (TAPI_SIM_PIN_INCORRECT_PASSWORD == event->Status) {
-                                       result_info.stat = SIM_INCORRECT_PIN1_CODE;
-                                       result_info.retry_cnt = sim_event_data->retry_count;
-                               } else if (TAPI_SIM_PUK_REQUIRED == event->Status)
-                                       result_info.stat = SIM_PIN1_BLOCKED;
-
-                               /*  Pre CCF */
-                               else if (TAPI_SIM_INCOMPATIBLE_PIN_OPERATION == event->Status
-                                        || TAPI_SIM_CARD_ERROR == event->Status) {
-                                       /*  popup */
-                                       result_info.stat = SIM_OPERATION_UNAVAILABLE;
-                               }
-                               else {
-                                       SETTING_TRACE_DEBUG
-                                           ("%s*** [ERR] INCORRECTED ***%s",
-                                            SETTING_FONT_RED,
-                                            SETTING_FONT_BLACK);
-                                       return SETTING_RETURN_FAIL;
-                               }
-                       }
+       else if (TAPI_SIM_PTYPE_PUK2 == sim_event_data->type)
+       {
+               //if (TAPI_SIM_PUK_REQUIRED == sec_rt)
+               if (TAPI_SIM_PIN_OPERATION_SUCCESS == sec_rt){
+                       SETTING_TRACE_DEBUG("SIM_PIN2_UNBLOCKED");
+                       safeCopyStr(ad->view_type_string, "SETTING_PW_TYPE_PIN2_UNBLOCKED", sizeof("SETTING_PW_TYPE_PIN2_UNBLOCKED")+1);
+                       setting_password_ug_create_popup_notitle_nobtn(ad, _("Verfy PUK2 Sucessfully"), TRUE);
+                       return;
+               } else if (TAPI_SIM_PUK_INCORRECT_PASSWORD == sec_rt) {
+                       result_info.stat = SIM_INCORRECT_PUK2_CODE;
+                       result_info.retry_cnt = sim_event_data->retry_count;
+               } else {
+                       result_info.stat = SIM_UNKNOWN_ERROR;
                }
-               break;
+       }
+       else
+       {
+               result_info.stat = SIM_UNKNOWN_ERROR;
+       }
+       setting_password_ug_display_result_popup(&result_info, user_data);
+}
 
-               /*  Lock OFF                    */
-       case TAPI_EVENT_SIM_DISABLE_SEC_CNF:
-               {
-                       SETTING_TRACE
-                           ("CASE: TAPI_EVENT_SIM_DISABLE_SEC_CNF [Event Data Type: %d]",
-                            sim_event_data->type);
-
-                       /*  Sim Lock  */
-                       if (TAPI_SIM_PTYPE_SIM == sim_event_data->type) {
-                               if (TAPI_SIM_PIN_OPERATION_SUCCESS == event->Status)
-                                       result_info.stat = SIM_LOCK_OFF_SUCCESS;
-                               else if (TAPI_SIM_PIN_INCORRECT_PASSWORD == event->Status)
-                                       result_info.stat = SIM_LOCK_INCORRECT_PASSWORD;
-                               else {
-                                       SETTING_TRACE_DEBUG
-                                           ("%s*** [ERR] INCORRECTED ***%s",
-                                            SETTING_FONT_RED,
-                                            SETTING_FONT_BLACK);
-                                       return SETTING_RETURN_FAIL;
-                               }
-                       }
-                       /*  Pin Lock */
-                       else if (TAPI_SIM_PTYPE_PIN1 == sim_event_data->type) {
-                               if (TAPI_SIM_PIN_OPERATION_SUCCESS == event->Status)
-                                       result_info.stat = SIM_PIN_LOCK_OFF_SUCCESS;
-                               else if (TAPI_SIM_PIN_INCORRECT_PASSWORD == event->Status) {
-                                       result_info.stat = SIM_INCORRECT_PIN1_CODE;
-                                       result_info.retry_cnt = sim_event_data->retry_count;
-                               } else if (TAPI_SIM_PUK_REQUIRED == event->Status)
-                                       result_info.stat = SIM_PIN1_BLOCKED;
-
-                               /*  Pre CCF */
-                               else if (TAPI_SIM_INCOMPATIBLE_PIN_OPERATION == event->Status
-                                        || TAPI_SIM_CARD_ERROR == event->Status) {
-                                       /*  popup */
-                                       result_info.stat = SIM_OPERATION_UNAVAILABLE;
-                               }
-                               else {
-                                       SETTING_TRACE_DEBUG
-                                           ("%s*** [ERR] INCORRECTED ***%s",
-                                            SETTING_FONT_RED,
-                                            SETTING_FONT_BLACK);
-                                       return SETTING_RETURN_FAIL;
-                               }
-                       }
+void setting_sim_facility_enable_cb(TapiHandle *handle, int result, void *data, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       ret_if(!user_data || !data);
+       TelSimPinOperationResult_t sec_rt = result;
+       tapi_receive_info result_info = { 0, };
+       TelSimFacilityResult_t *sim_event_data = (TelSimFacilityResult_t *) data;
+
+       SETTING_TRACE("sec_rt[%d]", sec_rt);
+       SETTING_TRACE("sim_event_data->type:%d", sim_event_data->type);
+       SETTING_TRACE("sim_event_data->retry_count[%d]", sim_event_data->retry_count);
+
+       /*  Sim Lock  */
+       if (TAPI_SIM_LOCK_PS == sim_event_data->type) {
+               SETTING_TRACE("CASE TAPI_SIM_PTYPE_SIM == sim_event_data->type");
+               if (TAPI_SIM_PIN_OPERATION_SUCCESS == sec_rt)
+                       result_info.stat = SIM_LOCK_ON_SUCCESS;
+               else if (TAPI_SIM_PIN_INCORRECT_PASSWORD == sec_rt)
+                       result_info.stat = SIM_LOCK_INCORRECT_PASSWORD;
+               else {
+                       SETTING_TRACE_DEBUG("%s*** [ERR] INCORRECTED ***%s",
+                            SETTING_FONT_RED,
+                            SETTING_FONT_BLACK);
+                       return;
                }
-               break;
-
-               /*  Verify PUK1, PUK2 */
-       case TAPI_EVENT_SIM_VERIFY_PUK_CNF:
-               {
-                       SETTING_TRACE
-                           ("CASE: TAPI_EVENT_SIM_VERIFY_PUK_CNF [Event Data Type: %d]",
-                            sim_event_data->type);
-
-                       TelSimPinStatus_t pin_status = -1;
-                       TelSimPinType_t pin_type = 0;
-
-                       if (TAPI_SIM_PTYPE_PUK1 == sim_event_data->type)
-                               pin_type = TAPI_SIM_PTYPE_PIN1;
-                       else if (TAPI_SIM_PTYPE_PUK2 == sim_event_data->type)
-                               pin_type = TAPI_SIM_PTYPE_PIN2;
-                       else {
-                               SETTING_TRACE_DEBUG
-                                   ("%s*** [ERR] Invalid pin_type ***%s",
-                                    SETTING_FONT_RED, SETTING_FONT_BLACK);
-                               return SETTING_RETURN_FAIL;
-                       }
-
-                       int tapi_ret = tel_get_sim_security_status(pin_type, &pin_status);
-                       SETTING_TRACE
-                           ("TAPI RET : %d PIN_TYPE : %d PIN_STATUS : %d\n",
-                            tapi_ret, pin_type, pin_status);
-                       if (TAPI_API_SUCCESS != tapi_ret) {
-                               SETTING_TRACE_DEBUG
-                                   ("%s*** [ERR] tel_get_sim_security_status ***%s",
-                                    SETTING_FONT_RED, SETTING_FONT_BLACK);
-                               return SETTING_RETURN_FAIL;
-                       }
-                       /*  Puk Blocked */
-                       if (TAPI_SIM_PIN_STATUS_PUK_BLOCKED == pin_status) {
-                               if (TAPI_SIM_PTYPE_PIN1 == pin_type)
-                                       result_info.stat = SIM_PUK1_BLOCKED;
-                               else
-                                       result_info.stat = SIM_PUK2_BLOCKED;
-                       }
-                       /*  Pin Blocked and verifying puk code */
-                       else if (TAPI_SIM_PIN_STATUS_ENABLED == pin_status) {
-                               if (TAPI_SIM_PIN_OPERATION_SUCCESS == event->Status) {
-                                       if (TAPI_SIM_PTYPE_PIN1 == pin_type)
-                                               result_info.stat = SIM_PIN1_UNBLOCKED;
-                                       else
-                                               result_info.stat = SIM_PIN2_UNBLOCKED;
-                               }
-                       }
-                       /*  Pin Block */
-                       else if (TAPI_SIM_PIN_STATUS_BLOCKED == pin_status) {
-                               if (TAPI_SIM_PTYPE_PIN1 == pin_type) {
-                                       result_info.stat = SIM_INCORRECT_PUK1_CODE;
-                                       result_info.retry_cnt = sim_event_data->retry_count;
-                               } else {
-                                       result_info.stat = SIM_INCORRECT_PUK2_CODE;
-                                       result_info.retry_cnt = sim_event_data->retry_count;
-                               }
-                       } else {
-                               SETTING_TRACE_DEBUG
-                                   ("%s*** [ERR] INCORRECTED ***%s",
-                                    SETTING_FONT_RED, SETTING_FONT_BLACK);
-                               result_info.stat = SIM_UNKNOWN_ERROR;
-                       }
+       }
+       /*  Pin Lock */
+       else if (TAPI_SIM_LOCK_SC == sim_event_data->type) {
+               SETTING_TRACE("CASE TAPI_SIM_PTYPE_PIN1 == sim_event_data->type");
+               if (TAPI_SIM_PIN_OPERATION_SUCCESS == sec_rt)
+                       result_info.stat = SIM_PIN_LOCK_ON_SUCCESS;
+               else if (TAPI_SIM_PIN_INCORRECT_PASSWORD == sec_rt) {
+                       result_info.stat = SIM_INCORRECT_PIN1_CODE;
+                       result_info.retry_cnt = sim_event_data->retry_count;
+               } else if (TAPI_SIM_PUK_REQUIRED == sec_rt)
+                       result_info.stat = SIM_PIN1_BLOCKED;
+
+               /*  Pre CCF */
+               else if (TAPI_SIM_INCOMPATIBLE_PIN_OPERATION == sec_rt
+                        || TAPI_SIM_CARD_ERROR == sec_rt) {
+                       /*  popup */
+                       result_info.stat = SIM_OPERATION_UNAVAILABLE;
                }
-               break;
-
-               /*  Change PIN1, PIN2 */
-       case TAPI_EVENT_SIM_CHANGE_PINS_CNF:
-               {
-                       SETTING_TRACE
-                           ("CASE: TAPI_EVENT_SIM_CHANGE_PINS_CNF [Event Data Type: %d]",
-                            sim_event_data->type);
-
-                       if (TAPI_SIM_PIN_OPERATION_SUCCESS == event->Status) {
-                               if (TAPI_SIM_PTYPE_PIN1 == sim_event_data->type)
-                                       result_info.stat = SIM_PIN1_CHANGE_SUCCESS;
-                               else if (TAPI_SIM_PTYPE_PIN2 == sim_event_data->type)
-                                       result_info.stat = SIM_PIN2_CHANGE_SUCCESS;
-                       } else if (TAPI_SIM_PIN_INCORRECT_PASSWORD == event->Status) {
-                               if (TAPI_SIM_PTYPE_PIN1 == sim_event_data->type) {
-                                       result_info.stat = SIM_INCORRECT_PIN1_CODE;
-                                       result_info.retry_cnt = sim_event_data->retry_count;
-                               } else if (TAPI_SIM_PTYPE_PIN2 == sim_event_data->type) {
-                                       result_info.stat = SIM_INCORRECT_PIN2_CODE;
-                                       result_info.retry_cnt = sim_event_data->retry_count;
-                               }
-                       } else if (TAPI_SIM_PUK_REQUIRED == event->Status) {
-                               if (TAPI_SIM_PTYPE_PIN1 == sim_event_data->type)
-                                       result_info.stat = SIM_PIN1_BLOCKED;
-                               else if (TAPI_SIM_PTYPE_PIN2 == sim_event_data->type)
-                                       result_info.stat = SIM_PIN2_BLOCKED;
-                       } else {
-                               SETTING_TRACE_DEBUG
-                                   ("%s*** [ERR] INCORRECTED ***%s",
-                                    SETTING_FONT_RED, SETTING_FONT_BLACK);
-                               return SETTING_RETURN_FAIL;
-                       }
+               else {
+                       SETTING_TRACE_DEBUG
+                           ("%s*** [ERR] INCORRECTED ***%s",
+                            SETTING_FONT_RED,
+                            SETTING_FONT_BLACK);
+                       return;
                }
-               break;
-               
-       default:
-               break;
        }
-
-       setting_password_ug_display_result_popup(&result_info, ad);
-
-       return 0;
+       setting_password_ug_display_result_popup(&result_info, user_data);
+}
+void setting_sim_facility_disable_cb(TapiHandle *handle, int result, void *data, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       ret_if(!user_data || !data);
+       TelSimPinOperationResult_t sec_rt = result;
+       tapi_receive_info result_info = { 0, };
+       TelSimFacilityResult_t *sim_event_data = (TelSimFacilityResult_t *) data;
+       SETTING_TRACE("sec_rt[%d]", sec_rt);
+       SETTING_TRACE("sim_event_data->type:%d", sim_event_data->type);
+       SETTING_TRACE("sim_event_data->retry_count[%d]", sim_event_data->retry_count);
+
+       /*  Sim Lock  */
+       if (TAPI_SIM_LOCK_PS == sim_event_data->type) {
+               SETTING_TRACE_DEBUG("SIM lOCK");
+               if (TAPI_SIM_PIN_OPERATION_SUCCESS == sec_rt)
+                       result_info.stat = SIM_LOCK_OFF_SUCCESS;
+               else if (TAPI_SIM_PIN_INCORRECT_PASSWORD == sec_rt)
+                       result_info.stat = SIM_LOCK_INCORRECT_PASSWORD;
+               else {
+                       SETTING_TRACE_DEBUG
+                           ("%s*** [ERR] INCORRECTED ***%s",
+                            SETTING_FONT_RED,
+                            SETTING_FONT_BLACK);
+                       return;
+               }
+       }
+       /*  Pin Lock */
+       else if (TAPI_SIM_LOCK_SC == sim_event_data->type) {
+               SETTING_TRACE_DEBUG("PIN LOCK");
+               if (TAPI_SIM_PIN_OPERATION_SUCCESS == sec_rt)
+                       result_info.stat = SIM_PIN_LOCK_OFF_SUCCESS;
+               else if (TAPI_SIM_PIN_INCORRECT_PASSWORD == sec_rt) {
+                       result_info.stat = SIM_INCORRECT_PIN1_CODE;
+                       result_info.retry_cnt = sim_event_data->retry_count;
+               } else if (TAPI_SIM_PUK_REQUIRED == sec_rt)
+                       result_info.stat = SIM_PIN1_BLOCKED;
+
+               /*  Pre CCF */
+               else if (TAPI_SIM_INCOMPATIBLE_PIN_OPERATION == sec_rt
+                        || TAPI_SIM_CARD_ERROR == sec_rt) {
+                       /*  popup */
+                       result_info.stat = SIM_OPERATION_UNAVAILABLE;
+               }
+               else {
+                       SETTING_TRACE_DEBUG
+                           ("%s*** [ERR] INCORRECTED ***%s",
+                            SETTING_FONT_RED,
+                            SETTING_FONT_BLACK);
+                       return;
+               }
+       }
+       setting_password_ug_display_result_popup(&result_info, user_data);
 }
 
-static void setting_password_ug_display_result_popup(tapi_receive_info *result, 
+static void setting_password_ug_display_result_popup(tapi_receive_info *result,
                                                     SettingPasswordUG *ad)
 {
+       SETTING_TRACE_BEGIN;
        switch (result->stat) {
        case SIM_OPERATION_OK:
        case SIM_LOCK_ON_SUCCESS:
@@ -791,21 +604,25 @@ static void setting_password_ug_display_result_popup(tapi_receive_info *result,
                                                "[Error] set value of vconf fail.");
                        }
                        /*  Success to Operate */
-                       bundle *b = NULL;
-                       b = bundle_create();
-                       if (!b)
+                       service_h svc;
+                       if (service_create(&svc))
                                return;
-                       bundle_add(b, "result", ad->view_type_string);
-                       ug_send_result(ad->ug, b);
+
+                       service_add_extra_data(svc, "result", ad->view_type_string);
+                       ug_send_result(ad->ug, svc);
                        SETTING_TRACE("Send Result : %s\n", ad->view_type_string);
-                       bundle_free(b);
+
+                       service_destroy(svc);
                        /* Send destroy request */
                        ug_destroy_me(ad->ug);
                }
                break;
        case SIM_LOCK_INCORRECT_PASSWORD:
-               ad->focus_data = ad->ed_pw1;
-               setting_password_ug_check_attemps_left(ad);
+               {
+                       SETTING_TRACE_DEBUG("SIM LOCK INCORRECT PASSWORD");
+                       ad->focus_data = ad->ed_pw1;
+                       setting_password_ug_display_desc(ad, PW_ERR_DESC, FALSE);
+               }
                break;
        case SIM_INCORRECT_PIN1_CODE:
                {
@@ -818,10 +635,15 @@ static void setting_password_ug_display_result_popup(tapi_receive_info *result,
                                setting_retm_if(ret < 0, "snprintf fail");
                                ret_str = tmp_str;
                        } else {
+                               int ret = snprintf(tmp_str, SETTING_STR_SLP_LEN, PIN_ERR_DESC, result->retry_cnt);
+                               setting_retm_if(ret < 0, "snprintf fail");
+                               ret_str = tmp_str;
                                ret_str = _("IDS_ST_POP_INCORRECT_PIN1_ATTEMPT_LEFT");
                        }
                        ad->focus_data = ad->ed_pw1;
+
                        setting_password_ug_display_desc(ad, (char *)ret_str, FALSE);
+
                }
                break;
        case SIM_INCORRECT_PIN2_CODE:
@@ -838,7 +660,9 @@ static void setting_password_ug_display_result_popup(tapi_receive_info *result,
                                ret_str = _("IDS_ST_POP_INCORRECT_PIN1_ATTEMPT_LEFT");
                        }
                        ad->focus_data = ad->ed_pw1;
+
                        setting_password_ug_display_desc(ad, ret_str, FALSE);
+
                }
                break;
        case SIM_INCORRECT_PUK1_CODE:
@@ -852,10 +676,12 @@ static void setting_password_ug_display_result_popup(tapi_receive_info *result,
                                setting_retm_if(ret < 0, "snprintf fail");
                                ret_str = tmp_str;
                        } else {
-                               ret_str = _("IDS_ST_POP_INCORRECT_PUK1_1_ATTEMPT_LEFT");
+                               ret_str = _("IDS_ST_POP_INCORRECT_PUK1_CODE");
                        }
                        ad->focus_data = ad->ed_pw1;
+
                        setting_password_ug_display_desc(ad, ret_str, FALSE);
+
                }
                break;
        case SIM_INCORRECT_PUK2_CODE:
@@ -868,10 +694,12 @@ static void setting_password_ug_display_result_popup(tapi_receive_info *result,
                                setting_retm_if(ret < 0, "snprintf fail");
                                ret_str = tmp_str;
                        } else {
-                               ret_str = _("IDS_ST_POP_INCORRECT_PUK2_1_ATTEMPT_LEFT");
+                               ret_str = _("IDS_ST_POP_INCORRECT_PUK2");
                        }
                        ad->focus_data = ad->ed_pw1;
+
                        setting_password_ug_display_desc(ad, ret_str, FALSE);
+
                }
                break;
        case SIM_PIN1_CHANGE_SUCCESS:
@@ -883,14 +711,22 @@ static void setting_password_ug_display_result_popup(tapi_receive_info *result,
                                                               _("IDS_ST_POP_PIN2_CHANGED"), TRUE);
                break;
        case SIM_PIN1_BLOCKED:
+               SETTING_TRACE_DEBUG("SIM_PIN1_BLOCKED");
+               ad->view_type = SETTING_PW_TYPE_PIN1_BLOCKED;
+               safeCopyStr(ad->view_type_string, "SETTING_PW_TYPE_PIN1_BLOCKED", safeStrLen("SETTING_PW_TYPE_PIN1_BLOCKED")+1);
                setting_password_ug_create_popup_notitle_nobtn(ad,
-                                                              _("IDS_ST_POP_PIN1_BLOCKED"), TRUE);
+                                                              _("IDS_ST_POP_PIN1_BLOCKED"), FALSE);
                break;
        case SIM_PIN2_BLOCKED:
+               SETTING_TRACE_DEBUG("SIM_PIN2_BLOCKED");
+               ad->view_type = SETTING_PW_TYPE_PIN2_BLOCKED;
+               safeCopyStr(ad->view_type_string, "SETTING_PW_TYPE_PIN2_BLOCKED", safeStrLen("SETTING_PW_TYPE_PIN2_BLOCKED")+1);
                setting_password_ug_create_popup_notitle_nobtn(ad,
-                                                              _("IDS_ST_POP_PIN2_BLOCKED"), TRUE);
+                                                              _("IDS_ST_POP_PIN2_BLOCKED"), FALSE);
                break;
        case SIM_PIN1_UNBLOCKED:
+               SETTING_TRACE_DEBUG("SIM_PIN1_UNBLOCKED");
+               safeCopyStr(ad->view_type_string, "SETTING_PW_TYPE_PIN_LOCK_ON", sizeof("SETTING_PW_TYPE_PIN_LOCK_ON")+1);
                setting_password_ug_create_popup_notitle_nobtn(ad,
                                                               _("IDS_ST_POP_PIN_UNBLOCKED"), TRUE);
                break;
@@ -901,7 +737,7 @@ static void setting_password_ug_display_result_popup(tapi_receive_info *result,
        case SIM_PUK1_BLOCKED:
                setting_password_ug_create_popup_notitle_nobtn(ad,
                                       _("IDS_ST_BODY_PUK1_BLOCKED"), TRUE);
-               /*  Call Permernent UG */
+               /*  Phone blocked. Call Permernent UG */
                break;
        case SIM_PUK2_BLOCKED:
                setting_password_ug_create_popup_notitle_nobtn(ad,
@@ -909,10 +745,14 @@ static void setting_password_ug_display_result_popup(tapi_receive_info *result,
                /*  Call Permernent UG */
                break;
        case SIM_REQUIRED_PUK_CODE:
+               SETTING_TRACE_DEBUG("SIM_REQUIRED_PUK_CODE");
+               safeCopyStr(ad->view_type_string, "SETTING_PW_TYPE_PIN1_BLOCKED", sizeof("SETTING_PW_TYPE_PIN1_BLOCKED")+1);
+               setting_password_ug_create_popup_notitle_nobtn(ad,
+                                      _("IDS_ST_POP_PIN1_BLOCKED"), TRUE);
                break;
        case SIM_OPERATION_UNAVAILABLE:
                setting_password_ug_create_popup_notitle_nobtn(ad,
-                                      _("IDS_ST_POP_SERVICE_UNAVAILABLE"), TRUE);
+                                      _("IDS_ST_HEADER_UNAVAILABLE"), TRUE);
                break;
        case SIM_UNKNOWN_ERROR:
                setting_password_ug_create_popup_notitle_nobtn(ad,
@@ -922,8 +762,27 @@ static void setting_password_ug_display_result_popup(tapi_receive_info *result,
        case SIM_REQ_PIN:
        case SIM_OPERATION_OFF:
        case SIM_LOCK_ON_FAIL:
+               SETTING_TRACE_DEBUG("SIM_LOCK_ON_FAIL");
+               {
+                       int err = SETTING_RETURN_SUCCESS;
+
+                       if(result->retry_cnt > 0)
+                       {
+                               setting_password_ug_display_desc(ad, PW_ERR_DESC, FALSE);
+                       }
+                       else
+                       {
+                               char tmp_str[SETTING_STR_SLP_LEN] = {0,};
+                               int ret = snprintf(tmp_str, SETTING_STR_SLP_LEN, PW_ERR_DELAY_DESC, PW_ERR_DELAY_TIME);
+                               safeCopyStr(ad->view_type_string, "SETTING_PW_TYPE_SIM_LOCK_DISABLE", sizeof("SETTING_PW_TYPE_SIM_LOCK_DISABLE")+1);
+                               setting_password_ug_create_popup_notitle_nobtn(ad, tmp_str, TRUE);
+                       }
+               }
+               break;
        case SIM_PIN1_CHANGE_FAIL:
        case SIM_PIN2_CHANGE_FAIL:
+               setting_password_ug_create_popup_notitle_nobtn(ad,
+                                      _("Change Failed"), TRUE);
                break;
        default:
                break;
@@ -934,49 +793,63 @@ static void setting_password_ug_display_result_popup(tapi_receive_info *result,
 
 void setting_password_ug_popup_resp_cb(void *data, Evas_Object *obj,
                                       void *event_info)
-{      
+{
        retm_if(data == NULL, "Data parameter is NULL");
-       bundle *b = NULL;
+
+       service_h svc;
        SettingPasswordUG *ad = (SettingPasswordUG *) data;
-                       if (ad->destroy) {
-                               /*  Success to Operate */
-                               b = bundle_create();
-                               if (!b)
-                                       return;
-                               bundle_add(b, "result", ad->view_type_string);
-                               ug_send_result(ad->ug, b);
-                               SETTING_TRACE("Send Result : %s\n", ad->view_type_string);
-                               bundle_free(b);
-
-                               /* Send destroy request */
-                               ug_destroy_me(ad->ug);
-                       } else {
-                               char *diable_view_type = NULL;
-                               if (ad->disable_item_type == SETTING_PW_TYPE_PHONE_LOCK) {
-                                       diable_view_type = "SETTING_PW_TYPE_PHONE_LOCK_DISABLE";
-                               } else if (ad->disable_item_type == SETTING_PW_TYPE_SIM_LOCK_OFF) {
-                                       diable_view_type = "SETTING_PW_TYPE_SIM_LOCK_DISABLE";
-                               }
-
-                               if (diable_view_type) {
-                                       /*  Success to Operate */
-                                       b = bundle_create();
-                                       if (!b)
-                                               return;
-                                       bundle_add(b, "result", diable_view_type);
-                                       ug_send_result(ad->ug, b);
-                                       bundle_free(b);
-
-                                       /* Send destroy request */
-                                       ug_destroy_me(ad->ug);
-                               }
-                               if (ad->focus_data) {
-                                       ad->focus_data->isFocusFlag = TRUE;
-                                       elm_object_item_data_set(ad->focus_data->item, ad->focus_data);
-                                       elm_genlist_item_update(ad->focus_data->item);
-                               }
-                       }
+       if (ad->destroy) {
+               /*  Success to Operate */
+
+               if (service_create(&svc))
+                       return;
+
+               service_add_extra_data(svc, "result", ad->view_type_string);
+               ug_send_result(ad->ug, svc);
+               SETTING_TRACE("Send Result : %s\n", ad->view_type_string);
+
+               service_destroy(svc);
+               /* Send destroy request */
+               ug_destroy_me(ad->ug);
+       } else {
+               char *diable_view_type = NULL;
+               if (ad->view_type == SETTING_PW_TYPE_PIN1_BLOCKED)
+               {
+                       setting_view_destroy(&setting_view_password_main, ad);
+                       setting_view_create(&setting_view_password_main, ad);
+                       return;
+               }
+               else if (ad->view_type == SETTING_PW_TYPE_PIN2_BLOCKED)
+               {
+                       setting_view_destroy(&setting_view_password_main, ad);
+                       setting_view_create(&setting_view_password_main, ad);
+                       return;
+               }
+
+               if (ad->disable_item_type == SETTING_PW_TYPE_SIM_LOCK_OFF) {
+                       diable_view_type = "SETTING_PW_TYPE_SIM_LOCK_DISABLE";
+               }
+
+               if (diable_view_type) {
+                       /*  Success to Operate */
+
+                       if (service_create(&svc))
+                               return;
+
+                       service_add_extra_data(svc, "result", diable_view_type);
+                       ug_send_result(ad->ug, svc);
+
+                       service_destroy(svc);
+                       /* Send destroy request */
+                       ug_destroy_me(ad->ug);
                }
+               if (ad->focus_data) {
+                       ad->focus_data->isFocusFlag = TRUE;
+                       elm_object_item_data_set(ad->focus_data->item, ad->focus_data);
+                       elm_genlist_item_update(ad->focus_data->item);
+               }
+       }
+}
 static Eina_Bool __remove_desc(void *data)
 {
        SETTING_TRACE_BEGIN;
@@ -998,33 +871,35 @@ static Eina_Bool __remove_desc(void *data)
 
        if (ad->destroy) {
                /*  Success to Operate */
-               bundle *b = bundle_create();
-               if (!b)
+
+               service_h svc;
+               if (service_create(&svc))
                        return EINA_FALSE;
-               bundle_add(b, "result", ad->view_type_string);
-               ug_send_result(ad->ug, b);
+
+               service_add_extra_data(svc, "result", ad->view_type_string);
+               ug_send_result(ad->ug, svc);
                SETTING_TRACE("Send Result : %s\n", ad->view_type_string);
-               bundle_free(b);
 
+               service_destroy(svc);
                /* Send destroy request */
                ug_destroy_me(ad->ug);
        } else {
                char *diable_view_type = NULL;
-               if (ad->disable_item_type == SETTING_PW_TYPE_PHONE_LOCK) {
-                       diable_view_type = "SETTING_PW_TYPE_PHONE_LOCK_DISABLE";
-               } else if (ad->disable_item_type == SETTING_PW_TYPE_SIM_LOCK_OFF) {
+               if (ad->disable_item_type == SETTING_PW_TYPE_SIM_LOCK_OFF) {
                        diable_view_type = "SETTING_PW_TYPE_SIM_LOCK_DISABLE";
                }
 
                if (diable_view_type) {
                        /*  Success to Operate */
-                       bundle *b = bundle_create();
-                       if (!b)
+
+                       service_h svc;
+                       if (service_create(&svc))
                                return EINA_FALSE;
-                       bundle_add(b, "result", diable_view_type);
-                       ug_send_result(ad->ug, b);
-                       bundle_free(b);
 
+                       service_add_extra_data(svc, "result", diable_view_type);
+                       ug_send_result(ad->ug, svc);
+
+                       service_destroy(svc);
                        /* Send destroy request */
                        ug_destroy_me(ad->ug);
                }
@@ -1039,7 +914,12 @@ void setting_password_ug_display_desc(void *data, char *desc, int destroy)
 
        SettingPasswordUG *ad = (SettingPasswordUG *)data;
 
-       ad->destroy= destroy;
+#ifdef SUPPORT_MDM
+       if(ad->view_type == SETTING_PW_TYPE_MDM_NEW_POLICY)
+               return;
+#endif
+
+       ad->destroy = destroy;
 
        if(ad->scroller == NULL)
                return;
@@ -1049,7 +929,7 @@ void setting_password_ug_display_desc(void *data, char *desc, int destroy)
                elm_object_item_del(ad->err_desc);
                ad->err_desc = NULL;
        }
-       
+
        ad->err_desc = elm_genlist_item_append(ad->scroller, &(ad->itc_err_desc), desc, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
        ad->remove_timer = ecore_timer_add(2.0, __remove_desc, ad);
 
@@ -1072,135 +952,13 @@ setting_password_ug_create_popup_notitle_nobtn(void *data, char *str,
        SettingPasswordUG *ad = (SettingPasswordUG *) data;
 
        ad->destroy = destroy;
-       ad->notify = setting_create_popup_without_btn(ad, ad->ly_main, str,
-                                         NULL,
-                                         setting_password_ug_popup_resp_cb,
-                                         POPUP_INTERVAL);
-}
-
-void setting_password_ug_check_attemps_left(void *data)
-{
-       ret_if(!data);
-       SettingPasswordUG *ad = (SettingPasswordUG *) data;
-
-       setting_int_slp_list item_attempts_left;
-       setting_str_slp_list item_lock_timestamp;
-       int attemps_left_max = 5;
-
-       if (ad->view_type == SETTING_PW_TYPE_PHONE_LOCK) {
-               item_attempts_left = INT_SLP_SETTING_PHONE_LOCK_ATTEMPTS_LEFT;
-               item_lock_timestamp = STR_SLP_SETTING_PHONE_LOCK_TIMESTAMP;
-               attemps_left_max = PHONE_LOCK_ATTEMPS_MAX;
-       } else if (ad->view_type == SETTING_PW_TYPE_SIM_LOCK_OFF) {
-               item_attempts_left = INT_SLP_SETTING_SIM_LOCK_ATTEMPTS_LEFT;
-               item_lock_timestamp = STR_SLP_SETTING_SIM_LOCK_TIMESTAMP;
-               attemps_left_max = SIM_LOCK_ATTEMPS_MAX;
-       } else {
-               return;
-       }
-
-       int value = -1;
-       int err = SETTING_RETURN_SUCCESS;
-       setting_get_int_slp_key(item_attempts_left, &value, &err);
-       setting_retm_if(err == SETTING_RETURN_FAIL,
-                       "[Error] get value of vconf fail.");
-
-       value--;
-
-       if (value > 0 && value <= attemps_left_max) {
-               setting_set_int_slp_key(item_attempts_left, value, &err);
-               setting_retm_if(err == SETTING_RETURN_FAIL, "[Error] set value of vconf fail.");
-               char temp_str[MAX_SPECIALIZITION_LEN] = {0,};
-               char temp[MAX_SPECIALIZITION_LEN] ={0,};
-
-               if(value > 1)
-                       snprintf(temp, sizeof(temp), "%s. %s.", PW_ERR_DESC, ATTEMPTS_DESC);
-               else
-                       snprintf(temp, sizeof(temp), "%s. %s.", PW_ERR_DESC, ATTEMPT_DESC);
-               
-               int ret = snprintf(temp_str, MAX_SPECIALIZITION_LEN, temp, value);
-       
-               ret_if(ret < 0);
-               
-               setting_password_ug_display_desc(ad, temp_str, FALSE);
-
-       } else if (value == 0) {
-               /*  store the lock timestamp */
-               time_t cur_time = time(NULL);
-               char cur_timestamp[LOCK_TIMESTAMP_LEN] = { 0, };
-               int ret = snprintf(cur_timestamp, sizeof(cur_timestamp), "%ld", cur_time);
-               ret_if(ret < 0);
-
-               setting_set_string_slp_key(item_lock_timestamp, cur_timestamp, &err);
-               setting_retm_if(err == SETTING_RETURN_FAIL,
-                               "[Error] set value of vconf fail.");
-
-               setting_set_int_slp_key(item_attempts_left, value, &err);
-               setting_retm_if(err == SETTING_RETURN_FAIL,
-                               "[Error] set value of vconf fail.");
-
-               ad->disable_item_type = ad->view_type;
-               
-               char temp[MAX_SPECIALIZITION_LEN] = {0,};
-               snprintf(temp, sizeof(temp), PW_ERR_DELAY_DESC, PW_ERR_DELAY_TIME);
-               
-               setting_password_ug_create_popup_notitle_nobtn(ad, temp, FALSE);
-       } else {
-               setting_password_ug_create_popup_notitle_nobtn(ad,
-                                                              _("IDS_COM_POP_ERROR"), FALSE);
+       if(ad->notify)
+       {
+               evas_object_del(ad->notify);
+               ad->notify = NULL;
        }
-
-}
-
-int setting_password_is_password_empty()
-{
-       SETTING_TRACE_BEGIN;
-       int ret = 0;
-       unsigned int attempt = 0;
-       unsigned int max_attempt = 0;
-       unsigned int expire_sec = 0;
-
-       ret = security_server_is_pwd_valid(&attempt, &max_attempt, &expire_sec);
-       SETTING_TRACE_DEBUG("status of password : %d", ret);
-
-       if(ret == SECURITY_SERVER_API_ERROR_NO_PASSWORD)
-               return SETTING_RETURN_SUCCESS;
-       else
-               return SETTING_RETURN_FAIL;
-}
-int setting_password_check_password(const char *challenge)
-{
-       SETTING_TRACE_BEGIN;
-       retv_if(challenge == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
-
-       int ret = 0;
-       unsigned int current_attempt = 0;
-       unsigned int max_attempt = 0;
-       unsigned int valid_secs = 0;
-
-       ret = security_server_chk_pwd(challenge, &current_attempt, &max_attempt, &valid_secs);
-
-       SETTING_TRACE_DEBUG("chk password : %d", ret);
-
-       if(ret == SECURITY_SERVER_API_SUCCESS)
-               return SETTING_RETURN_SUCCESS;
-       else
-               return SETTING_RETURN_FAIL;
+       ad->notify = setting_create_popup_without_btn(ad, ad->ly_main, NULL, str,
+                                         setting_password_ug_popup_resp_cb,
+                                         POPUP_INTERVAL, FALSE, FALSE);
 }
-int setting_password_set_password(const char *cur_pwd, const char *new_pwd, void *data)
-{
-       SETTING_TRACE_BEGIN;
-       retv_if(new_pwd == NULL || data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
 
-       SettingPasswordUG *ad = (SettingPasswordUG*)data;
-       int ret = 0;
-
-       /* max attempt count will be handled in passwordug for a while. */
-       ret = security_server_set_pwd(cur_pwd, new_pwd, 0, PW_ERR_DELAY_TIME);
-       SETTING_TRACE_DEBUG("set password : %d", ret);
-
-       if(ret == SECURITY_SERVER_API_SUCCESS)
-               return SETTING_RETURN_SUCCESS;
-       else
-               return SETTING_RETURN_FAIL;
-}