/*
* setting
- * Copyright (c) 2012 Samsung Electronics Co., Ltd.
*
- * Licensed under the Flora License, Version 1.0 (the License);
+ * 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://floralicense.org/license/
+ * 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,
+ * 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>
+#include <setting-password-main.h>
+#include <security-server.h>
+
+extern void setting_get_pin_lock_info_cb(TapiHandle *handle, int result, void *data, void *user_data);
#ifndef UG_MODULE_API
#define UG_MODULE_API __attribute__ ((visibility("default")))
#endif
-static struct _pw_item pw_its[] = {
- { 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_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" },
+struct _pw_item pw_its[] = {
+ { 0, NULL, 0, 0},
+ { SETTING_PW_TYPE_PASSWORD, "SETTING_PW_TYPE_PASSWORD", SETTING_PW_CATEGORY_LOCK, 1 },
+ { SETTING_PW_TYPE_SET_PASSWORD, "SETTING_PW_TYPE_SET_PASSWORD", SETTING_PW_CATEGORY_LOCK, 2 },
+ { SETTING_PW_TYPE_SIMPLE_PASSWORD, "SETTING_PW_TYPE_SIMPLE_PASSWORD", SETTING_PW_CATEGORY_LOCK + SETTING_PW_SUB_CATEGORY_SIMPLE, 1 },
+ { SETTING_PW_TYPE_SET_SIMPLE_PASSWORD, "SETTING_PW_TYPE_SET_SIMPLE_PASSWORD", SETTING_PW_CATEGORY_LOCK + SETTING_PW_SUB_CATEGORY_SIMPLE, 2 },
+ { SETTING_PW_TYPE_ENTER_LOCK_TYPE, "SETTING_PW_TYPE_ENTER_LOCK_TYPE", SETTING_PW_CATEGORY_LOCK, 1 },
+ { SETTING_PW_TYPE_SIM_LOCK_ON, "SETTING_PW_TYPE_SIM_LOCK_ON", SETTING_PW_CATEGORY_SIM, 2 },
+ { SETTING_PW_TYPE_SIM_LOCK_OFF, "SETTING_PW_TYPE_SIM_LOCK_OFF", SETTING_PW_CATEGORY_SIM, 1 },
+ { SETTING_PW_TYPE_PIN_LOCK_ON, "SETTING_PW_TYPE_PIN_LOCK_ON", SETTING_PW_CATEGORY_SIM, 1 },
+ { SETTING_PW_TYPE_PIN_LOCK_OFF, "SETTING_PW_TYPE_PIN_LOCK_OFF", SETTING_PW_CATEGORY_SIM, 1 },
+ { SETTING_PW_TYPE_CHANGE_PIN, "SETTING_PW_TYPE_CHANGE_PIN", SETTING_PW_CATEGORY_SIM, 3 },
+ { SETTING_PW_TYPE_CHANGE_PIN2, "SETTING_PW_TYPE_CHANGE_PIN2", SETTING_PW_CATEGORY_SIM, 3 },
+ { SETTING_PW_TYPE_PIN_BLOCKED, "SETTING_PW_TYPE_PIN_BLOCKED", SETTING_PW_CATEGORY_SIM, 3 },
+ { SETTING_PW_TYPE_PIN2_BLOCKED, "SETTING_PW_TYPE_PIN2_BLOCKED", SETTING_PW_CATEGORY_SIM, 3 },
{ 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 void setting_password_ug_cb_resize(void *data, Evas *e, Evas_Object *obj, void *event_info)
{
- SettingPasswordUG *ad = (SettingPasswordUG *) data;
- setting_view_update(&setting_view_password_main, ad);
+ /*SettingPasswordUG *ad = (SettingPasswordUG *) data; */
+ /*setting_view_update(&setting_view_password_main, ad); */
}
-static void setting_tapi_init(SettingPasswordUG *ad)
+void __chk_cur_pw_status(SettingPasswordUG *ad, app_control_h service)
{
- SETTING_TRACE_BEGIN;
- switch (ad->view_type) {
- case SETTING_PW_TYPE_SIM_LOCK_ON:
- case SETTING_PW_TYPE_SIM_LOCK_OFF:
- case SETTING_PW_TYPE_PIN_LOCK_ON:
- case SETTING_PW_TYPE_PIN_LOCK_OFF:
- case SETTING_PW_TYPE_CHANGE_PIN1:
- case SETTING_PW_TYPE_CHANGE_PIN2:
- case SETTING_PW_TYPE_PIN1_BLOCKED:
- case SETTING_PW_TYPE_PIN2_BLOCKED:
- 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);
- }
+ int ret = 0;
+ unsigned int attempt = 0;
+ unsigned int max_attempt = 0;
+ unsigned int expire_sec = 0;
+
+ ad->pw_status = SETTING_PW_STATUS_DEFAULT;
+
+ ret = security_server_is_pwd_valid(&attempt, &max_attempt, &expire_sec);
+ SETTING_TRACE_DEBUG("status of password : %d (cur attempt %d, max %d, expire %d", ret, attempt, max_attempt, expire_sec);
- break;
- default:
- break;
+ if (ret == SECURITY_SERVER_API_ERROR_NO_PASSWORD) {
+ SETTING_TRACE("security-server has no password!");
+ ad->pw_status = SETTING_PW_STATUS_EMPTY;
}
- SETTING_TRACE_END;
}
-static void setting_tapi_finize(SettingPasswordUG *ad)
+void __get_extra_data(SettingPasswordUG *ad, app_control_h service)
{
SETTING_TRACE_BEGIN;
- switch (ad->view_type) {
- case SETTING_PW_TYPE_SIM_LOCK_ON:
- case SETTING_PW_TYPE_SIM_LOCK_OFF:
- case SETTING_PW_TYPE_PIN_LOCK_ON:
- case SETTING_PW_TYPE_PIN_LOCK_OFF:
- case SETTING_PW_TYPE_CHANGE_PIN1:
- case SETTING_PW_TYPE_CHANGE_PIN2:
- case SETTING_PW_TYPE_PIN1_BLOCKED:
- case SETTING_PW_TYPE_PIN2_BLOCKED:
- if (tel_deinit(ad->handle) != TAPI_API_SUCCESS) {
- SETTING_TRACE_DEBUG
- ("%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"),
- FALSE);
- }
- break;
- default:
- break;
- }
- SETTING_TRACE_END;
+
+ char *encryption = NULL;
+
+ /* #1. viewtype */
+ app_control_get_extra_data(service, "viewtype", &(ad->view_type_string));
+ SETTING_TRACE("viewtype:%s", ad->view_type_string);
+ /* #2. current pw */
+ app_control_get_extra_data(service, "current", &(ad->cur_pwd));
+ if (ad->cur_pwd)
+ SETTING_TRACE_SECURE_DEBUG("Receive current : %s", ad->cur_pwd);
}
-setting_pw_type __get_password_view_type(SettingPasswordUG *ad, service_h service)
+setting_pw_type __get_password_view_type(SettingPasswordUG *ad, app_control_h service)
{
SETTING_TRACE_BEGIN;
- 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;
- for(i = 0; i < SETTING_PW_TYPE_MAX; i++)
- {
- if (0 == safeStrCmp(ad->view_type_string, pw_its[i].pw_type_string))
- {
+ for (i = 1; i < SETTING_PW_TYPE_MAX; i++) {
+ if (0 == safeStrCmp(ad->view_type_string, pw_its[i].pw_type_string)) {
+ SETTING_TRACE_DEBUG("%s %d", ad->view_type_string, pw_its[i].pw_type_num);
ret_pw_type = pw_its[i].pw_type_num;
break;
}
}
+ if (pw_its[ret_pw_type].category == SETTING_PW_CATEGORY_SIM) {
+ SETTING_TRACE_DEBUG("SIM or Fingerprint do not need to check pw status. %d", pw_its[ret_pw_type].category);
+ ad->view_type = ret_pw_type;
+ return ad->view_type;
+ }
+
+ __chk_cur_pw_status(ad, service);
+
+ /* Some pw types should be changed, according to pw status and current lock type */
+ if (ret_pw_type == SETTING_PW_TYPE_ENTER_LOCK_TYPE) {
+ if (ad->pw_status == SETTING_PW_STATUS_EMPTY) {
+ if (ad->screen_lock_type == SETTING_SCREEN_LOCK_TYPE_PASSWORD)
+ ret_pw_type = SETTING_PW_TYPE_SET_PASSWORD;
+ else if (ad->screen_lock_type == SETTING_SCREEN_LOCK_TYPE_SIMPLE_PASSWORD)
+ ret_pw_type = SETTING_PW_TYPE_SET_SIMPLE_PASSWORD;
+ } else {
+ if (ad->screen_lock_type == SETTING_SCREEN_LOCK_TYPE_PASSWORD)
+ ret_pw_type = SETTING_PW_TYPE_PASSWORD;
+ else if (ad->screen_lock_type == SETTING_SCREEN_LOCK_TYPE_SIMPLE_PASSWORD)
+ ret_pw_type = SETTING_PW_TYPE_SIMPLE_PASSWORD;
+ }
+ }
/* end */
- return ret_pw_type;
+ ad->view_type = ret_pw_type;
+
+ return ad->view_type;
+}
+
+static setting_view *__initialize_view_node_table(int category)
+{
+ setting_view_node_table_intialize();
+
+ if (category == SETTING_PW_CATEGORY_SIM) {
+ setting_view_node_table_register(&setting_view_password_sim, NULL);
+ return &setting_view_password_sim;
+ } else if (category & SETTING_PW_SUB_CATEGORY_SIMPLE) {
+ setting_view_node_table_register(&setting_view_password_simple, NULL);
+ return &setting_view_password_simple;
+ } else {
+ setting_view_node_table_register(&setting_view_password_main, NULL);
+ return &setting_view_password_main;
+ }
+}
+
+static void __destroy_view(SettingPasswordUG *ad)
+{
+ ret_if(!ad);
+
+ if (pw_its[ad->view_type].category == SETTING_PW_CATEGORY_SIM) {
+ setting_view_destroy(&setting_view_password_sim, ad);
+ }
+
+ if (pw_its[ad->view_type].category & SETTING_PW_SUB_CATEGORY_SIMPLE) {
+ setting_view_destroy(&setting_view_password_simple, ad);
+ } else {
+ /* delete the allocated objects. */
+ setting_view_destroy(&setting_view_password_main, ad);
+ }
+}
+
+static void setting_password_rotated_cb(void *data, Evas_Object *obj, void *event)
+{
+ SETTING_TRACE_BEGIN;
+ SettingPasswordUG *ad = (SettingPasswordUG *)data;
+
+ if (ad == NULL || ad->win_get == NULL || obj == NULL)
+ return;
+
+ if (ad->view_type == SETTING_PW_TYPE_PIN_LOCK_OFF
+ || ad->view_type == SETTING_PW_TYPE_PIN_LOCK_ON
+ || ad->view_type == SETTING_PW_TYPE_CHANGE_PIN
+ || ad->view_type == SETTING_PW_TYPE_PIN_BLOCKED) {
+ if (ad->handle) {
+ if (tel_get_sim_lock_info(ad->handle, TAPI_SIM_LOCK_SC, setting_get_pin_lock_info_cb, ad) != 0)
+ SETTING_TRACE_DEBUG("failed to call tel_get_sim_lock_info()");
+ }
+ } else if (ad->view_type == SETTING_PW_TYPE_CHANGE_PIN2
+ || ad->view_type == SETTING_PW_TYPE_PIN2_BLOCKED) {
+ if (ad->handle) {
+ if (tel_get_sim_lock_info(ad->handle, TAPI_SIM_LOCK_FD, setting_get_pin_lock_info_cb, ad) != 0)
+ SETTING_TRACE_DEBUG("failed to call tel_get_sim_lock_info()");
+ }
+ }
+ /* it can manage the cursor self */
+ if (ad->ed_pw1 && (ad->ed_pw1->isFocusFlag == TRUE)) {
+ if (ad->ed_pw1->eo_check) {
+ SETTING_TRACE_DEBUG("set focus on first entry");
+ /* 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);
+ }
+ } else if (ad->ed_pw2 && (ad->ed_pw2->isFocusFlag == TRUE)) {
+ if (ad->ed_pw2->eo_check) {
+ SETTING_TRACE_DEBUG("set focus on second entry");
+ /*no matter how many edifileds, it only need focus on 1st editfiled */
+ elm_object_focus_set(ad->ed_pw2->eo_check, EINA_TRUE);
+ elm_entry_cursor_end_set(ad->ed_pw2->eo_check);
+ }
+ } else if (ad->ed_pw3 && (ad->ed_pw3->isFocusFlag == TRUE)) {
+ if (ad->ed_pw3->eo_check) {
+ SETTING_TRACE_DEBUG("set focus on third entry");
+ /*no matter how many edifileds, it only need focus on 1st editfiled */
+ elm_object_focus_set(ad->ed_pw3->eo_check, EINA_TRUE);
+ elm_entry_cursor_end_set(ad->ed_pw3->eo_check);
+ }
+ } else {
+ SETTING_TRACE_DEBUG("no entry to set focus");
+ }
}
static char *__gl_err_desc_text_get(void *data, Evas_Object *obj, const char *part)
{
+ SETTING_TRACE_BEGIN;
retv_if(data == NULL, NULL);
char buf[256] = {0,};
- snprintf(buf, sizeof(buf)-1, "<font color=#ff0000>%s</font>", (char*)data);
+ snprintf(buf, 256, "<font color=#ff0000>%s</font>", (char *)data);
+
+ SETTING_TRACE_DEBUG("buf is %s", buf);
- return strdup(buf);
+ return (char *)g_strdup(buf);
+}
+
+static void __gl_err_desc_del(void *data, Evas_Object *obj)
+{
+ SETTING_TRACE_BEGIN;
+ char *desc = data;
+ if (desc) {
+ G_FREE(desc);
+ SETTING_TRACE_DEBUG("free err_desc");
+ }
}
static void *setting_password_ug_on_create(ui_gadget_h ug,
- enum ug_mode mode, service_h service,
- void *priv)
+ enum ug_mode mode, app_control_h service,
+ void *priv)
{
+ SETTING_TRACE_BEGIN;
setting_retvm_if((!priv), NULL, "!priv");
SettingPasswordUG *passwordUG = (SettingPasswordUG *)priv;
passwordUG->evas = evas_object_evas_get(passwordUG->win_main_layout);
setting_retvm_if(passwordUG->win_main_layout == NULL, NULL,
- "cannot get main window ");
-
- /* --------------------------------------------------------- */
- char *pa_path = NULL;;
+ "cannot get main window ");
- pa_path = vconf_get_str(VCONFKEY_LANGSET);
- if (!pa_path) {
- SETTING_TRACE
- ("%s*** language setting has no proper value (nil) ***%s",
- SETTING_FONT_BGREEN, SETTING_FONT_BLACK);
- return NULL;
- }
/* set launguage */
- 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";
- passwordUG->itc_seperator.func.text_get = NULL;
- passwordUG->itc_seperator.func.content_get = NULL;
- passwordUG->itc_seperator.func.state_get = NULL;
- passwordUG->itc_seperator.func.del = NULL;
-
- passwordUG->itc_err_desc.item_style = "multiline/1text";
+ bindtextdomain(SETTING_PACKAGE, SETTING_LOCALEDIR);
+ evas_object_smart_callback_add(passwordUG->win_get, "wm,rotation,changed", setting_password_rotated_cb, passwordUG);
+
+ setting_create_Gendial_itc("groupindex", &(passwordUG->itc_title));
+ setting_create_Gendial_itc("1icon", &(passwordUG->itc_variable_height));
+
+ passwordUG->itc_err_desc.item_style = "multiline_sub";
passwordUG->itc_err_desc.func.text_get = __gl_err_desc_text_get;
passwordUG->itc_err_desc.func.content_get = NULL;
passwordUG->itc_err_desc.func.state_get = NULL;
- passwordUG->itc_err_desc.func.del = NULL;
+ passwordUG->itc_err_desc.func.del = __gl_err_desc_del;
+
+ /* get screen lock type */
+ vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &(passwordUG->screen_lock_type));
+ SETTING_TRACE_DEBUG("screen lock type : %d", passwordUG->screen_lock_type);
/* init */
- passwordUG->view_type = __get_password_view_type(passwordUG, service);
- setting_tapi_init(passwordUG);
+ __get_extra_data(passwordUG, service);
+ setting_pw_type ret = __get_password_view_type(passwordUG, service);
+ SETTING_TRACE_DEBUG("initial view type is : %d", ret);
+ passwordUG->step1_str = NULL;
+
+ setting_view *main_view = __initialize_view_node_table(pw_its[passwordUG->view_type].category);
/* creating a view. */
- setting_view_create(&setting_view_password_main,(void *)passwordUG);
+ setting_view_create(main_view, (void *)passwordUG);
evas_object_event_callback_add(passwordUG->win_main_layout,
- EVAS_CALLBACK_RESIZE,
- setting_password_ug_cb_resize,
- passwordUG);
+ EVAS_CALLBACK_RESIZE,
+ setting_password_ug_cb_resize,
+ passwordUG);
+
return passwordUG->ly_main;
}
-static void setting_password_ug_on_start(ui_gadget_h ug, service_h service, void *priv)
+static void setting_password_ug_on_start(ui_gadget_h ug, app_control_h service, void *priv)
{
}
-static void setting_password_ug_on_pause(ui_gadget_h ug, service_h service, void *priv)
+static void setting_password_ug_on_pause(ui_gadget_h ug, app_control_h service, void *priv)
{
+ SETTING_TRACE_BEGIN;
+ SettingPasswordUG *passwordUG = (SettingPasswordUG *)priv;
+
+ if (pw_its[passwordUG->view_type].category & SETTING_PW_SUB_CATEGORY_SIMPLE) {
+ /* If pause, simple password's SIP should be focused out.
+ If not, Our SIP will not be shown after using Other apps with independent SIP. */
+ if (passwordUG->imf_context) {
+ ecore_imf_context_reset(passwordUG->imf_context);
+ ecore_imf_context_focus_out(passwordUG->imf_context);
+ }
+ }
}
-static void setting_password_ug_on_resume(ui_gadget_h ug, service_h service, void *priv)
+static void setting_password_ug_on_resume(ui_gadget_h ug, app_control_h service, void *priv)
{
+ SETTING_TRACE_BEGIN;
+ SettingPasswordUG *passwordUG = (SettingPasswordUG *)priv;
+
+ if (pw_its[passwordUG->view_type].category & SETTING_PW_SUB_CATEGORY_SIMPLE) {
+ /* If resume, simple password's SIP should be focused in.
+ If not, Our SIP will not be shown after using Other apps with independent SIP. */
+ if (passwordUG->imf_context) {
+ /*ecore_imf_context_input_panel_show(passwordUG->imf_context); */
+ ecore_imf_context_focus_in(passwordUG->imf_context);
+ }
+ }
}
-static void setting_password_ug_on_destroy(ui_gadget_h ug, service_h service, void *priv)
+static void setting_password_ug_on_destroy(ui_gadget_h ug, app_control_h service, void *priv)
{
+ SETTING_TRACE_BEGIN;
SettingPasswordUG *passwordUG = (SettingPasswordUG *)priv;
evas_object_event_callback_del(passwordUG->win_main_layout, EVAS_CALLBACK_RESIZE, setting_password_ug_cb_resize); /* fix flash issue for gallery */
+ evas_object_smart_callback_del(passwordUG->win_get, "wm,rotation,changed", setting_password_rotated_cb);
passwordUG->ug = ug;
- setting_tapi_finize(passwordUG);
+
+ if (passwordUG->view_type_string)
+ FREE(passwordUG->view_type_string);
+
+ if (passwordUG->cur_pwd)
+ FREE(passwordUG->cur_pwd);
if (passwordUG->t_info) {
FREE(passwordUG->t_info);
+ passwordUG->t_info = NULL;
}
- if(passwordUG->remove_timer)
- {
- ecore_timer_del(passwordUG->remove_timer);
- passwordUG->remove_timer = NULL;
+
+ if (pw_its[passwordUG->view_type].category & SETTING_PW_SUB_CATEGORY_SIMPLE) {
+ if (passwordUG->imf_context) {
+ ecore_imf_context_del(passwordUG->imf_context);
+ passwordUG->imf_context = NULL;
+ }
}
- /* delete the allocated objects. */
- setting_view_destroy(&setting_view_password_main, passwordUG);
+ __destroy_view(passwordUG);
+
if (NULL != ug_get_layout(passwordUG->ug)) {
evas_object_hide((Evas_Object *) ug_get_layout(passwordUG->ug));
evas_object_del((Evas_Object *) ug_get_layout(passwordUG->ug));
}
+ SETTING_TRACE_END;
}
-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_message(ui_gadget_h ug, app_control_h msg,
+ app_control_h service, void *priv)
{
}
static void setting_password_ug_on_event(ui_gadget_h ug,
- enum ug_event event, service_h service,
- void *priv)
+ enum ug_event event, app_control_h service,
+ void *priv)
{
+ SETTING_TRACE_BEGIN;
if (!priv)
return;
- SettingPasswordUG *ad = (SettingPasswordUG*)priv;
-
+ SettingPasswordUG *ad = (SettingPasswordUG *)priv;
+ /*static int old_event = -1; */
switch (event) {
- case UG_EVENT_LOW_MEMORY:
- break;
- case UG_EVENT_LOW_BATTERY:
- break;
- case UG_EVENT_LANG_CHANGE:
- break;
- case UG_EVENT_ROTATE_PORTRAIT:
- case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
- case UG_EVENT_ROTATE_LANDSCAPE:
- 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);
+ case UG_EVENT_LOW_MEMORY:
+ break;
+ case UG_EVENT_LOW_BATTERY:
+ break;
+ case UG_EVENT_LANG_CHANGE: {
+#if 0
+ /* update toolbar items */
+ Evas_Object *toolbar = elm_object_item_part_content_get(ad->navi_it, "toolbar");
+ if (toolbar != NULL) {
+ Elm_Object_Item *last_item = elm_toolbar_last_item_get(toolbar);
+ Elm_Object_Item *first_item = elm_toolbar_last_item_get(toolbar);
+
+ if (last_item)
+ elm_object_item_text_set(last_item, _("IDS_COM_SK_DONE"));
+ if (first_item && (first_item != last_item))
+ elm_object_item_text_set(last_item, _("IDS_COM_SK_CANCEL"));
+ }
+#endif
}
- }
-
- break;
- case UG_EVENT_REGION_CHANGE:
- break;
- default:
- break;
+ break;
+ case UG_EVENT_ROTATE_PORTRAIT:
+ case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
+ case UG_EVENT_ROTATE_LANDSCAPE:
+ case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
+ break;
+ case UG_EVENT_REGION_CHANGE:
+ break;
+ default:
+ break;
}
}
static void setting_password_ug_on_key_event(ui_gadget_h ug,
- enum ug_key_event event,
- service_h service, void *priv)
+ enum ug_key_event event,
+ app_control_h service, void *priv)
{
if (!priv)
return;
- SettingPasswordUG *ad = (SettingPasswordUG*)priv;
+ SettingPasswordUG *ad = (SettingPasswordUG *)priv;
switch (event) {
- case UG_KEY_EVENT_END:
- if(ad->remove_timer)
- {
- ecore_timer_del(ad->remove_timer);
- ad->remove_timer = NULL;
- }
- ug_destroy_me(ug);
- break;
- default:
- break;
+ case UG_KEY_EVENT_END:
+ ug_destroy_me(ug);
+ break;
+ default:
+ break;
}
}
FREE(passwordUG);
}
-void setting_get_sim_lock_info_cb(TapiHandle *handle, int result, void *data, void *user_data)
-{
- SETTING_TRACE_BEGIN;
- ret_if(data == NULL || user_data == NULL);
-
- 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->err_desc = elm_genlist_item_append(ad->scroller, &(ad->itc_err_desc), temp, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
-}
-
-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->err_desc = elm_genlist_item_append(ad->scroller, &(ad->itc_err_desc), temp, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
-}
-
-void setting_sim_change_pins_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, };
- 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;
- }
- } 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;
- }
- setting_password_ug_display_result_popup(&result_info, user_data);
-}
-
-void setting_sim_verify_puks_cb(TapiHandle *handle, int result, void *data, void *user_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 = (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_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;
- }
- }
-
- 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;
- }
- }
- else
- {
- result_info.stat = SIM_UNKNOWN_ERROR;
- }
- setting_password_ug_display_result_popup(&result_info, user_data);
-}
-
-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;
- }
- }
- /* 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;
- }
- 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);
-}
-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,
- SettingPasswordUG *ad)
-{
- SETTING_TRACE_BEGIN;
- switch (result->stat) {
- case SIM_OPERATION_OK:
- case SIM_LOCK_ON_SUCCESS:
- case SIM_LOCK_OFF_SUCCESS:
- case SIM_PIN_LOCK_ON_SUCCESS:
- case SIM_PIN_LOCK_OFF_SUCCESS:
- {
- if (ad->view_type ==
- SETTING_PW_TYPE_SIM_LOCK_OFF) {
- int err = SETTING_RETURN_SUCCESS;
- /* reset VCONF */
- setting_set_int_slp_key
- (INT_SLP_SETTING_SIM_LOCK_ATTEMPTS_LEFT,
- SIM_LOCK_ATTEMPS_MAX, &err);
- setting_retm_if(err == SETTING_RETURN_FAIL,
- "[Error] set value of vconf fail.");
- }
- /* Success to Operate */
- service_h svc;
- 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);
- }
- break;
- case SIM_LOCK_INCORRECT_PASSWORD:
- {
- 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:
- {
- const char *ret_str = NULL;
- char tmp_str[SETTING_STR_SLP_LEN] = {0,};
-
- if (result->retry_cnt > 1) {
- /* there has '%d' in 'IDS_ST_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT', must transform */
- 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;
- } 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:
- {
- char *ret_str = NULL;
- char tmp_str[SETTING_STR_SLP_LEN] = {0,};
-
- if (result->retry_cnt > 1) {
- /* there has '%d' in 'IDS_ST_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT', must transform */
- 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;
- } else {
- 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:
- {
- char *ret_str = NULL;
- char tmp_str[SETTING_STR_SLP_LEN] = {0,};
-
- if (result->retry_cnt > 1) {
- /* there has '%d' in 'IDS_ST_POP_INCORRECT_PUK1_PD_ATTEMPTS_LEFT', must transform */
- int ret = snprintf(tmp_str, SETTING_STR_SLP_LEN, PUK1_ERR_DESC, result->retry_cnt);
- setting_retm_if(ret < 0, "snprintf fail");
- ret_str = tmp_str;
- } else {
- 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:
- {
- char *ret_str = NULL;
- char tmp_str[SETTING_STR_SLP_LEN] = {0,};
- if (result->retry_cnt > 1) {
- /* there has '%d' in 'IDS_ST_POP_INCORRECT_PUK2_PD_ATTEMPTS_LEFT', must transform*/
- int ret = snprintf(tmp_str, SETTING_STR_SLP_LEN, PUK2_ERR_DESC, result->retry_cnt);
- setting_retm_if(ret < 0, "snprintf fail");
- ret_str = tmp_str;
- } else {
- 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:
- setting_password_ug_create_popup_notitle_nobtn(ad,
- _("IDS_ST_POP_PIN1_CHANGED"), TRUE);
- break;
- case SIM_PIN2_CHANGE_SUCCESS:
- setting_password_ug_create_popup_notitle_nobtn(ad,
- _("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"), 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"), 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;
- case SIM_PIN2_UNBLOCKED:
- setting_password_ug_create_popup_notitle_nobtn(ad,
- _("IDS_ST_POP_PIN2_UNBLOCKED"), TRUE);
- break;
- case SIM_PUK1_BLOCKED:
- setting_password_ug_create_popup_notitle_nobtn(ad,
- _("IDS_ST_BODY_PUK1_BLOCKED"), TRUE);
- /* Phone blocked. Call Permernent UG */
- break;
- case SIM_PUK2_BLOCKED:
- setting_password_ug_create_popup_notitle_nobtn(ad,
- _("IDS_ST_BODY_PUK2_BLOCKED"), TRUE);
- /* 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_HEADER_UNAVAILABLE"), TRUE);
- break;
- case SIM_UNKNOWN_ERROR:
- setting_password_ug_create_popup_notitle_nobtn(ad,
- _("IDS_ST_POP_UNKNOWN_OPERATION"), FALSE);
- break;
- case SIM_ERROR:
- 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;
- }
-
- SETTING_TRACE_END;
-}
-
void setting_password_ug_popup_resp_cb(void *data, Evas_Object *obj,
- void *event_info)
+ void *event_info)
{
retm_if(data == NULL, "Data parameter is NULL");
- service_h svc;
+ app_control_h svc;
SettingPasswordUG *ad = (SettingPasswordUG *) data;
if (ad->destroy) {
/* Success to Operate */
- if (service_create(&svc))
+ if (app_control_create(&svc))
return;
- service_add_extra_data(svc, "result", ad->view_type_string);
+ app_control_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);
+ app_control_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);
+ if (ad->view_type == SETTING_PW_TYPE_PIN_BLOCKED) {
+ ug_destroy_me(ad->ug);
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);
+ } else if (ad->view_type == SETTING_PW_TYPE_PIN2_BLOCKED) {
+ ug_destroy_me(ad->ug);
return;
}
-
+#if SUPPORT_SIMLOCK
+ char *diable_view_type = NULL;
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))
+ if (app_control_create(&svc))
return;
- service_add_extra_data(svc, "result", diable_view_type);
+ app_control_add_extra_data(svc, "result", diable_view_type);
ug_send_result(ad->ug, svc);
- service_destroy(svc);
+ app_control_destroy(svc);
/* Send destroy request */
ug_destroy_me(ad->ug);
}
+#endif
if (ad->focus_data) {
ad->focus_data->isFocusFlag = TRUE;
elm_object_item_data_set(ad->focus_data->item, ad->focus_data);
}
}
}
-static Eina_Bool __remove_desc(void *data)
+
+void setting_password_ug_display_desc(void *data, char *desc, int destroy)
{
SETTING_TRACE_BEGIN;
- retv_if(data == NULL, EINA_FALSE);
+ ret_if(data == NULL || desc == NULL);
SettingPasswordUG *ad = (SettingPasswordUG *)data;
- if(ad->err_desc)
- {
- elm_object_item_del(ad->err_desc);
+ ad->destroy = destroy;
+
+ if (ad->scroller == NULL)
+ return;
+
+ if (ad->err_desc && ad->err_desc->item) {
+ elm_object_item_del(ad->err_desc->item);
ad->err_desc = NULL;
}
- if(ad->remove_timer)
- {
- ecore_timer_del(ad->remove_timer);
- ad->remove_timer = NULL;
- }
+ ad->err_desc = setting_create_Gendial_field_helpitem_without_bottom_separator(
+ ad->scroller,
+ &(itc_multiline_text),
+ SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
+ desc);
+}
- if (ad->destroy) {
- /* Success to Operate */
+void
+setting_password_ug_create_popup_notitle_nobtn(void *data, char *str,
+ int destroy)
+{
+ /* error check */
+ retm_if(data == NULL, "Data parameter is NULL");
- service_h svc;
- if (service_create(&svc))
- return EINA_FALSE;
+ SettingPasswordUG *ad = (SettingPasswordUG *) data;
+ ad->destroy = destroy;
+#if 0
+ /* TMWC-587 */
+ if (ad->notify) {
+ evas_object_del(ad->notify);
+ ad->notify = NULL;
+ }
+ ad->notify = setting_create_popup_without_btn(ad, ad->ly_main, NULL, str,
+ setting_password_ug_popup_resp_cb,
+ POPUP_INTERVAL, FALSE, FALSE);
+#endif
+ setting_create_popup_without_btn(ad, ad->ly_main, NULL, str,
+ setting_password_ug_popup_resp_cb,
+ POPUP_INTERVAL, FALSE, FALSE);
+}
- 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);
+void setting_password_ug_check_attemps_left(void *data)
+{
+ ret_if(!data);
+ SettingPasswordUG *ad = (SettingPasswordUG *) data;
- service_destroy(svc);
- /* Send destroy request */
- ug_destroy_me(ad->ug);
+ 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_PASSWORD) {
+ 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 {
- char *diable_view_type = NULL;
- if (ad->disable_item_type == SETTING_PW_TYPE_SIM_LOCK_OFF) {
- diable_view_type = "SETTING_PW_TYPE_SIM_LOCK_DISABLE";
- }
+ return;
+ }
- if (diable_view_type) {
- /* Success to Operate */
+ 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.");
- service_h svc;
- if (service_create(&svc))
- return EINA_FALSE;
+ value--;
- service_add_extra_data(svc, "result", diable_view_type);
- ug_send_result(ad->ug, svc);
+ 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,};
- service_destroy(svc);
- /* Send destroy request */
- ug_destroy_me(ad->ug);
- }
+ 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);
}
- return ECORE_CALLBACK_CANCEL;
+
}
-void setting_password_ug_display_desc(void *data, char *desc, int destroy)
+int setting_password_check_password(const char *challenge, unsigned int *remain_attempt, unsigned int *valid_sec)
{
SETTING_TRACE_BEGIN;
- ret_if(data == NULL || desc == NULL);
+ retv_if(challenge == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
- SettingPasswordUG *ad = (SettingPasswordUG *)data;
+ int inner_ret = 0;
+ int ret = 0;
+ unsigned int current_attempt = 0;
+ unsigned int max_attempt = 0;
+ unsigned int valid_secs = 0;
-#ifdef SUPPORT_MDM
- if(ad->view_type == SETTING_PW_TYPE_MDM_NEW_POLICY)
- return;
-#endif
+ inner_ret = security_server_chk_pwd(challenge, ¤t_attempt, &max_attempt, &valid_secs);
- ad->destroy = destroy;
+ SETTING_TRACE_DEBUG("chk password : %d", inner_ret);
+ SETTING_TRACE_SECURE_DEBUG("current_attempt : %d, max_attempt : %d, valid_secs : %d secs", current_attempt, max_attempt, valid_secs);
- if(ad->scroller == NULL)
- return;
+ if (valid_sec != NULL)
+ *valid_sec = valid_secs;
- if(ad->err_desc)
- {
- elm_object_item_del(ad->err_desc);
- ad->err_desc = NULL;
+ if (inner_ret == SECURITY_SERVER_API_SUCCESS) {
+ ret = SETTING_RETURN_SUCCESS;
+ } else {
+ if (remain_attempt != NULL) {
+ if ((max_attempt > 0) && (max_attempt >= current_attempt))
+ *remain_attempt = max_attempt - current_attempt;
+ else
+ *remain_attempt = ATTEMPT_INFINITE; /* infinite */
+ }
+ ret = SETTING_RETURN_FAIL;
}
- 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);
-
- /* if pw incorrect, show keyboard again. */
- if(ad->ed_pw1)
- {
- SETTING_TRACE_DEBUG("FOCUS IN");
- ad->ed_pw1->isFocusFlag = TRUE;
- elm_object_focus_set(ad->ed_pw1->eo_check, EINA_TRUE);
- }
+ return ret;
}
-void
-setting_password_ug_create_popup_notitle_nobtn(void *data, char *str,
- int destroy)
+int setting_password_set_password(const char *cur_pwd, const char *new_pwd, void *data)
{
- /* error check */
- retm_if(data == NULL, "Data parameter is NULL");
-
- SettingPasswordUG *ad = (SettingPasswordUG *) data;
+ SETTING_TRACE_BEGIN;
+ retv_if(new_pwd == NULL || data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
- ad->destroy = destroy;
- if(ad->notify)
- {
- evas_object_del(ad->notify);
- ad->notify = NULL;
+ SettingPasswordUG *ad = (SettingPasswordUG *)data;
+ int ret = 0;
+ int err;
+
+ /* To support key manager */
+ uid_t user = 5000;
+
+ /* max attempt count will be handled in passwordug for a while. */
+ if (ad->pw_status == SETTING_PW_STATUS_EMPTY) {
+ ret = security_server_set_pwd(NULL, new_pwd, 0, 0);
+ SETTING_TRACE_DEBUG("[security_server_set_pwd() + empty current] returns %d, INFINITE", ret);
+ if (ret == SECURITY_SERVER_API_SUCCESS) {
+#if 0
+ ckmc_ret = ckmc_reset_user_password(user, new_pwd);
+ SETTING_TRACE("ckmc_reset_user_password() returns %d", ckmc_ret);
+ setting_set_int_slp_key(INT_SLP_SETTING_PHONE_LOCK_ATTEMPTS_LEFT, PHONE_LOCK_ATTEMPS_MAX, &err);
+#endif
+ return SETTING_RETURN_SUCCESS;
+ } else {
+ return SETTING_PW_ERROR_UNKNOWN;
+ }
+ } else {
+ ret = security_server_set_pwd(cur_pwd, new_pwd, 0, 0);
+ SETTING_TRACE_DEBUG("[security_server_set_pwd()] returns %d, INFINITE", ret);
+ if (ret == SECURITY_SERVER_API_SUCCESS) {
+#if 0
+ ckmc_ret = ckmc_change_user_password(user, cur_pwd, new_pwd);
+ SETTING_TRACE("ckmc_change_user_password() returns %d", ckmc_ret);
+ setting_set_int_slp_key(INT_SLP_SETTING_PHONE_LOCK_ATTEMPTS_LEFT, PHONE_LOCK_ATTEMPS_MAX, &err);
+#endif
+ return SETTING_RETURN_SUCCESS;
+ } else {
+ return SETTING_PW_ERROR_UNKNOWN;
+ }
}
- ad->notify = setting_create_popup_without_btn(ad, ad->ly_main, NULL, str,
- setting_password_ug_popup_resp_cb,
- POPUP_INTERVAL, FALSE, FALSE);
}
+