4 * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
6 * This file is part of org.tizen.setting
7 * Written by Hyejin Kim <hyejin0906.kim@samsung.com>
9 * PROPRIETARY/CONFIDENTIAL
11 * This software is the confidential and proprietary information of
12 * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
13 * disclose such Confidential Information and shall use it only in
14 * accordance with the terms of the license agreement you entered
15 * into with SAMSUNG ELECTRONICS.
17 * SAMSUNG make no representations or warranties about the suitability
18 * of the software, either express or implied, including but not limited
19 * to the implied warranties of merchantability, fitness for a particular
20 * purpose, or non-infringement. SAMSUNG shall not be liable for any
21 * damages suffered by licensee as a result of using, modifying or
22 * distributing this software or its derivatives.
26 #include <setting-password.h>
27 #include <setting-password-main.h>
28 #include <openssl/sha.h>
30 static int setting_password_main_create(void *cb);
31 static int setting_password_main_destroy(void *cb);
32 static int setting_password_main_update(void *cb);
33 static int setting_password_main_cleanup(void *cb);
35 setting_view setting_view_password_main = {
36 .create = setting_password_main_create,
37 .destroy = setting_password_main_destroy,
38 .update = setting_password_main_update,
39 .cleanup = setting_password_main_cleanup,
42 /** @todo add i18n supports */
43 const char *sp_titles[5] = { "IDS_ST_BODY_ENTER_PASSWORD",
44 "IDS_ST_BODY_ENTER_NEW_PASSWORD",
45 "IDS_ST_BODY_ENTER_PASSWORD_AGAIN",
46 "IDS_ST_BODY_ENTER_CURRENT_PASSWORD",
49 #define SETTING_SP_TITLE_INDEX_START 0
50 #define SETTING_SP_TITLE_INDEX_MAX 3
52 #define ENTRY_CALLBACK_REPEAT_MAX 3
53 #define SETTING_COMPARE_PW_FAIL -2
55 static void _sp_changed_cb1(void *data, Evas_Object *obj, void *event_info);
56 static void _sp_changed_cb2(void *data, Evas_Object *obj, void *event_info);
57 static void _sp_changed_cb3(void *data, Evas_Object *obj, void *event_info);
58 static void _sp_changed_cb4(void *data, Evas_Object *obj, void *event_info);
60 /* ***************************************************
64 ***************************************************/
66 __password_main_gl_mouse_up(void *data, Evas *e, Evas_Object *obj,
70 SettingPasswordUG *ad = (SettingPasswordUG *) data;
72 setting_hide_input_pannel_cb(ad->ed_pw1->eo_check);
75 setting_hide_input_pannel_cb(ad->ed_pw1->eo_check);
78 setting_hide_input_pannel_cb(ad->ed_pw1->eo_check);
83 static char *setting_password_main_get_title_str(void *data)
85 retvm_if(data == NULL, NULL,
86 "[Setting > Password] Data parameter is NULL");
87 SettingPasswordUG *ad = (SettingPasswordUG *) data;
88 char title[MAX_DISPLAY_NAME_LEN_ON_UI] ={0,};
90 switch (ad->view_type) {
91 case SETTING_PW_TYPE_POWER_ON_LOCK:
92 case SETTING_PW_TYPE_PHONE_LOCK:
93 case SETTING_PW_TYPE_RESET:
94 case SETTING_PW_TYPE_CLEAR:
95 case SETTING_PW_TYPE_SIMPLE_PASSWORD:
96 case SETTING_PW_TYPE_CHANGE_PASSWORD:
97 return _("IDS_COM_BODY_AUTH_PASSWORD");
99 case SETTING_PW_TYPE_SET_PASSWORD:
100 if(safeStrCmp(ad->view_type_string, "SETTING_PW_TYPE_LOCK_FOR_APP") == 0)
102 snprintf(title, sizeof(title), "%s %s", _("IDS_ST_BODY_PHONE_LOCK"), _("IDS_COM_BODY_AUTH_PASSWORD"));
103 return strdup(title);
107 return _("IDS_COM_BODY_AUTH_PASSWORD");
110 case SETTING_PW_TYPE_LOCK_FOR_APP:
111 snprintf(title, sizeof(title), "%s %s", _("IDS_ST_BODY_PHONE_LOCK"), _("IDS_COM_BODY_AUTH_PASSWORD"));
112 return strdup(title);
114 case SETTING_PW_TYPE_SIM_LOCK_ON:
115 case SETTING_PW_TYPE_SIM_LOCK_OFF:
116 return _("IDS_COM_BODY_AUTH_PASSWORD");
118 case SETTING_PW_TYPE_PIN_LOCK_ON:
119 case SETTING_PW_TYPE_PIN_LOCK_OFF:
120 return _("IDS_ST_BODY_PIN1");
122 case SETTING_PW_TYPE_CHANGE_PIN1:
123 return _("IDS_ST_BODY_CHANGE_PIN1");
126 case SETTING_PW_TYPE_FDN_MODE_ON:
127 case SETTING_PW_TYPE_FDN_MODE_OFF:
128 return _("IDS_ST_BODY_PIN2");
131 case SETTING_PW_TYPE_CHANGE_PIN2:
132 return _("IDS_ST_BODY_CHANGE_PIN2");
135 case SETTING_PW_TYPE_PIN1_BLOCKED:
136 return _("IDS_ST_BODY_PUK1_CODE");
138 case SETTING_PW_TYPE_PIN2_BLOCKED:
140 return _("IDS_ST_BODY_PUK2");
143 SETTING_TRACE_DEBUG("%s*** Unknown Password Type. ***%s",
144 SETTING_FONT_BGREEN, SETTING_FONT_BLACK);
152 _sp_back_key_up(void *data, Evas *e, Evas_Object *obj, void *event)
154 retm_if(data == NULL || event == NULL, "[Setting > Password] Data parameter is NULL");
156 SettingPasswordUG *ad = (SettingPasswordUG *) data;
158 ret_if(ad->sp_focused == NULL || ad->sp_entry1 == NULL || ad->sp_entry2 == NULL
159 || ad->sp_entry3 == NULL || ad->sp_entry4 == NULL);
161 Evas_Object *cur_entry = NULL;
162 Evas_Object *move_to = NULL;
164 Evas_Event_Key_Up *ev = (Evas_Event_Key_Up*)event;
166 cur_entry = ad->sp_focused;
168 if(cur_entry == ad->sp_entry1)
170 /* nothing to move. */
173 else if(cur_entry == ad->sp_entry2)
175 move_to = ad->sp_entry1;
177 else if(cur_entry == ad->sp_entry3)
179 move_to = ad->sp_entry2;
181 else if(cur_entry == ad->sp_entry4)
183 move_to = ad->sp_entry3;
190 if(strcmp(ev->keyname, "BackSpace") == 0)
192 elm_object_focus_set(move_to, EINA_TRUE);
193 elm_entry_entry_set(move_to, "<font_size=52 align=center>");
194 elm_entry_cursor_end_set(move_to);
195 ad->sp_focused = move_to;
199 Elm_Object_Item* __create_navi_bar_with_left_button(void *data, Evas_Object *content, Evas_Object *navibar)
201 retv_if(data == NULL || content == NULL || navibar == NULL, NULL);
203 SettingPasswordUG *ad = (SettingPasswordUG *)data;
205 Elm_Object_Item *navi_item = setting_create_navi_bar_top_buttons(setting_password_main_get_title_str(ad),
206 _("IDS_COM_SK_CANCEL"), NULL, NULL,
207 setting_password_main_click_softkey_cancel_cb,
208 setting_password_main_click_softkey_done_cb,
209 NULL, ad, content, navibar);
210 retv_if(!navi_item, NULL);
214 Elm_Object_Item* __create_navi_bar_with_both_button(void *data, Evas_Object *content, Evas_Object *navibar)
216 retv_if(data == NULL || content == NULL || navibar == NULL, NULL);
218 SettingPasswordUG *ad = (SettingPasswordUG *)data;
220 Elm_Object_Item *navi_item = setting_create_navi_bar_top_buttons(setting_password_main_get_title_str(ad),
221 _("IDS_COM_SK_CANCEL"), _("IDS_COM_SK_DONE"), NULL,
222 setting_password_main_click_softkey_cancel_cb,
223 setting_password_main_click_softkey_done_cb,
224 NULL, ad, content, navibar);
226 retv_if(!navi_item, NULL);
228 Evas_Object *done_btn = elm_object_item_part_content_get(navi_item, "title_right_btn");
231 setting_disable_evas_object(done_btn);
232 setting_dim_evas_object(done_btn, TRUE);
237 static int __create_common_password_frame(void *data)
239 retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
241 SettingPasswordUG *ad = (SettingPasswordUG *)data;
242 Evas_Object *navi_bar = NULL;
243 static int count = 0;
247 if(ad->scroller != NULL)
249 evas_object_del(ad->scroller);
252 Evas_Object *pw_list = elm_genlist_add(ad->win_main_layout);
254 return SETTING_RETURN_FAIL;
256 elm_genlist_clear(pw_list); /* first to clear list */
257 elm_genlist_homogeneous_set(pw_list, EINA_TRUE);
258 elm_genlist_mode_set(pw_list, ELM_LIST_COMPRESS);
261 #if SUPPORT_BOTTOM_BTNS
262 ad->ly_main = setting_create_win_layout(ad->win_main_layout, ad->win_get);
263 retv_if(!ad->ly_main, SETTING_RETURN_FAIL);
265 navi_bar = setting_create_navi_bar(ad->ly_main);
266 retv_if(!navi_bar, SETTING_RETURN_FAIL);
269 if((ad->is_simple_password_on == 1) &&
270 ((ad->view_type == SETTING_PW_TYPE_PHONE_LOCK)
271 || (ad->view_type == SETTING_PW_TYPE_SET_PASSWORD)
272 || (ad->view_type == SETTING_PW_TYPE_SIMPLE_PASSWORD)
273 || (ad->view_type == SETTING_PW_TYPE_CHANGE_PASSWORD)
274 || (ad->view_type == SETTING_PW_TYPE_RESET)
275 || (ad->view_type == SETTING_PW_TYPE_LOCK_FOR_APP) ))
277 if((ad->view_type == SETTING_PW_TYPE_SIMPLE_PASSWORD) && count == 2)
279 /* from simple password to normal password */
280 ad->navi_it = __create_navi_bar_with_both_button(ad, pw_list, navi_bar);
284 ad->navi_it = __create_navi_bar_with_left_button(ad, pw_list, navi_bar);
289 if((ad->view_type == SETTING_PW_TYPE_SIMPLE_PASSWORD) && count == 2)
291 /* from normal password to simple password */
292 ad->navi_it = __create_navi_bar_with_left_button(ad, pw_list, navi_bar);
296 ad->navi_it = __create_navi_bar_with_both_button(ad, pw_list, navi_bar);
300 retv_if(!ad->navi_it, SETTING_RETURN_FAIL);
303 setting_create_layout_navi_bar(ad->win_main_layout, ad->win_get,
304 setting_password_main_get_title_str
305 (ad), _("IDS_COM_SK_CANCEL"),
306 _("IDS_COM_SK_DONE"), NULL,
307 setting_password_main_click_softkey_cancel_cb,
308 setting_password_main_click_softkey_done_cb,
309 NULL, ad, pw_list /* contents */ ,
310 &navi_bar, &(ad->controllbar));
311 elm_object_item_disabled_set(elm_toolbar_last_item_get(ad->controllbar), EINA_TRUE);
313 if(ad->ly_main == NULL)
314 return SETTING_RETURN_FAIL;
317 evas_object_event_callback_add(pw_list, EVAS_CALLBACK_MOUSE_UP,
318 __password_main_gl_mouse_up, ad);
320 Elm_Object_Item *item = elm_genlist_item_append(pw_list,
321 &(ad->itc_seperator), NULL, NULL,
322 ELM_GENLIST_ITEM_NONE, NULL, NULL);
323 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
325 ad->scroller = pw_list;
327 return SETTING_RETURN_SUCCESS;
330 static void _copy_chars_from_sp_entries(void *data, char *collection)
332 ret_if(data == NULL || collection == NULL);
334 SettingPasswordUG *ad = (SettingPasswordUG *) data;
336 if(ad->sp_entry1 == NULL || ad->sp_entry2 == NULL ||
337 ad->sp_entry3 == NULL || ad->sp_entry4 == NULL)
340 strncpy(&collection[0], elm_entry_entry_get(ad->sp_entry1), 1);
341 strncpy(&collection[1], elm_entry_entry_get(ad->sp_entry2), 1);
342 strncpy(&collection[2], elm_entry_entry_get(ad->sp_entry3), 1);
343 strncpy(&collection[3], elm_entry_entry_get(ad->sp_entry4), 1);
346 static int _handle_step1(void *data, char *collection)
348 retv_if(data == NULL, SETTING_RETURN_FAIL);
350 SettingPasswordUG *ad = (SettingPasswordUG *) data;
354 char svalue[SHA256_DIGEST_LENGTH];
355 memset(svalue, 0x0, SHA256_DIGEST_LENGTH);
357 _copy_chars_from_sp_entries(ad, collection);
359 ret = setting_password_main_check_simple_password(collection);
362 setting_password_main_draw_simple_password(ad, 3);
363 return SETTING_RETURN_FAIL;
366 ret = setting_password_check_password(collection);
367 if(ret != SETTING_RETURN_SUCCESS)
369 setting_password_main_draw_simple_password(ad, 3);
370 return SETTING_COMPARE_PW_FAIL;
373 /* reset static variables */
374 memset(collection, 0x00, SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH+1);
378 if (0 == safeStrCmp(ad->view_type_string, "SETTING_PW_TYPE_PHONE_LOCK"))
380 setting_get_bool_slp_key(BOOL_SLP_SETTING_POWER_ON_LOCK, &value, &err);
381 SETTING_TRACE_DEBUG("get VCONF POWER_ON_LOCK : %d", value);
384 ret = setting_set_bool_slp_key(BOOL_SLP_SETTING_POWER_ON_LOCK,
385 SETTING_ON_OFF_BTN_ON, &err);
387 ret = setting_set_bool_slp_key(BOOL_SLP_SETTING_POWER_ON_LOCK,
388 SETTING_ON_OFF_BTN_OFF, &err);
391 setting_set_int_slp_key(INT_SLP_SETTING_PHONE_LOCK_ATTEMPTS_LEFT,
392 PHONE_LOCK_ATTEMPS_MAX, &err);
393 setting_retvm_if(err == SETTING_RETURN_FAIL, SETTING_RETURN_FAIL, "[Error] set value of vconf fail.");
395 /* Correct Password. Send Bundle to caller for status change */
398 bundle *b = bundle_create();
401 setting_password_main_draw_simple_password(ad, 3);
402 return SETTING_RETURN_FAIL;
405 bundle_add(b, "result", ad->view_type_string);
406 ug_send_result(ad->ug, b);
407 SETTING_TRACE("Send Result : %s\n", ad->view_type_string);
409 /* Send destroy request */
410 ug_destroy_me(ad->ug);
412 return SETTING_RETURN_SUCCESS;
415 static int _handle_step_sp(void *data, int *step, char *collection1, char *collection2)
417 retv_if(data == NULL, SETTING_RETURN_FAIL);
419 SettingPasswordUG *ad = (SettingPasswordUG *) data;
422 char svalue[SHA256_DIGEST_LENGTH];
423 memset(svalue, 0x0, SHA256_DIGEST_LENGTH);
425 if(ad->is_simple_password_on == 1)
427 SETTING_TRACE_DEBUG("case ON->OFF");
428 _copy_chars_from_sp_entries(ad, collection1);
430 ret = setting_password_main_check_simple_password(collection1);
433 setting_password_main_draw_simple_password(ad, 3);
434 return SETTING_RETURN_FAIL;
437 SETTING_TRACE_DEBUG("collection_step1 : %s", collection1);
439 ret = setting_password_check_password(collection1);
440 if(ret != SETTING_RETURN_SUCCESS)
442 setting_password_main_draw_simple_password(ad, 3);
443 return SETTING_RETURN_FAIL;
445 ad->cur_pwd = (char*)strdup(collection1);
447 /* reset static variables */
448 memset(collection1, 0x00, SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH+1);
450 if(ad->sp_entry1 == NULL || ad->sp_entry2 == NULL || ad->sp_entry3 == NULL || ad->sp_entry4 == NULL)
451 return SETTING_RETURN_FAIL;
453 evas_object_event_callback_del(ad->sp_entry1, EVAS_CALLBACK_KEY_UP, _sp_back_key_up);
454 evas_object_event_callback_del(ad->sp_entry2, EVAS_CALLBACK_KEY_UP, _sp_back_key_up);
455 evas_object_event_callback_del(ad->sp_entry3, EVAS_CALLBACK_KEY_UP, _sp_back_key_up);
456 evas_object_event_callback_del(ad->sp_entry4, EVAS_CALLBACK_KEY_UP, _sp_back_key_up);
458 evas_object_smart_callback_del(ad->sp_entry1, "changed", _sp_changed_cb1);
459 evas_object_smart_callback_del(ad->sp_entry2, "changed", _sp_changed_cb2);
460 evas_object_smart_callback_del(ad->sp_entry3, "changed", _sp_changed_cb3);
461 evas_object_smart_callback_del(ad->sp_entry4, "changed", _sp_changed_cb4);
465 evas_object_del(ad->ly_main);
470 ecore_timer_del(ad->remove_timer);
471 ad->remove_timer = NULL;
474 __create_common_password_frame(ad);
475 setting_password_main_draw_2line_password(ad, NULL);
477 else if(ad->is_simple_password_on == 0)
479 SETTING_TRACE_DEBUG("case OFF->ON");
480 if(*step == 0) /* Enter new password */
482 _copy_chars_from_sp_entries(ad, collection1);
484 ret = setting_password_main_check_simple_password(collection1);
487 setting_password_main_draw_simple_password(ad, 1);
488 return SETTING_RETURN_FAIL;
491 setting_password_main_draw_next_simple_password(ad, 2);
493 else if(*step == 1) /* Enter password again */
495 _copy_chars_from_sp_entries(ad, collection2);
497 ret = setting_password_main_check_simple_password(collection2);
500 setting_password_main_draw_simple_password(ad, 2);
501 return SETTING_RETURN_FAIL;
504 SETTING_TRACE_DEBUG("collection_step1 : %s", collection1);
505 SETTING_TRACE_DEBUG("collection_step2 : %s", collection2);
507 /* compare two input passwords : collection_step1, collection_step2 */
508 if(safeStrNCmp(collection1, collection2, 4) == 0)
510 ret = setting_password_set_password(ad->cur_pwd, collection1, ad);
513 /* Modify Setting Password */
514 if (SETTING_RETURN_SUCCESS == ret) {
515 SETTING_TRACE_DEBUG("success to save new password");
517 /* set vconfkey ON : if fail, try one more time. */
518 if(vconf_set_bool(VCONFKEY_SETAPPL_STATE_SIMPLE_PASSWORD_BOOL, 1) < 0)
519 return SETTING_RETURN_FAIL;
521 SETTING_TRACE_DEBUG("set vconfkey : simple password is ON");
524 setting_password_ug_create_popup_notitle_nobtn(ad,
525 _("IDS_ST_POP_NEW_PASSWD_SAVED"), TRUE);
528 /* reset static variables */
529 memset(collection1, 0x00, SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH+1);
530 memset(collection2, 0x00, SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH+1);
532 /* Correct Password. Send Bundle to caller for status change */
533 bundle *b = bundle_create();
536 setting_password_main_draw_simple_password(ad, 2);
537 return SETTING_RETURN_FAIL;
540 bundle_add(b, "result", ad->view_type_string);
541 ug_send_result(ad->ug, b);
542 SETTING_TRACE("Send Result : %s\n", ad->view_type_string);
544 /* Send destroy request */
545 ug_destroy_me(ad->ug);
549 setting_password_main_draw_simple_password(ad, 2);
550 return SETTING_RETURN_FAIL;
555 setting_password_main_draw_simple_password(ad, 2);
556 return SETTING_RETURN_FAIL;
561 return SETTING_RETURN_SUCCESS;
564 static int _handle_step2(void *data, int *step, char *collection1, char*collection2)
566 retv_if(data == NULL, SETTING_RETURN_FAIL);
568 SettingPasswordUG *ad = (SettingPasswordUG *) data;
571 if(*step == 0) /* Enter new password */
573 _copy_chars_from_sp_entries(ad, collection1);
575 ret = setting_password_main_check_simple_password(collection1);
578 setting_password_main_draw_simple_password(ad, 2);
579 return SETTING_RETURN_FAIL;
582 setting_password_main_draw_next_simple_password(ad, 2);
584 else if(*step == 1) /* Enter password again */
586 _copy_chars_from_sp_entries(ad, collection2);
588 ret = setting_password_main_check_simple_password(collection2);
591 setting_password_main_draw_simple_password(ad, 2);
592 return SETTING_RETURN_FAIL;
595 /* compare two input passwords : collection_step1, collection_step2 */
596 if(safeStrNCmp(collection1, collection2, 4) == 0)
598 ret = setting_password_set_password(NULL, collection1, ad);
600 if (SETTING_RETURN_SUCCESS == ret) {
601 if (0 == safeStrCmp(ad->view_type_string, "SETTING_PW_TYPE_PHONE_LOCK"))
606 ret = setting_set_bool_slp_key(BOOL_SLP_SETTING_POWER_ON_LOCK,
607 SETTING_ON_OFF_BTN_ON, &err);
608 retvm_if(ret < 0, SETTING_RETURN_FAIL, "[ERR] setting vconfkey failed.");
610 bundle *b = bundle_create();
612 return SETTING_RETURN_FAIL;
614 bundle_add(b, "result", "SETTING_PW_TYPE_PHONE_LOCK");
615 ug_send_result(ad->ug, b);
616 SETTING_TRACE("Send Result : %s\n", "SETTING_PW_TYPE_PHONE_LOCK");
619 else if (0 == safeStrCmp(ad->view_type_string, "SETTING_PW_TYPE_LOCK_FOR_APP"))
621 bundle *b = bundle_create();
623 return SETTING_RETURN_FAIL;
625 bundle_add(b, "result", "SETTING_PW_TYPE_LOCK_FOR_APP");
626 ug_send_result(ad->ug, b);
627 SETTING_TRACE("Send Result : %s\n", "SETTING_PW_TYPE_LOCK_FOR_APP");
631 setting_password_ug_create_popup_notitle_nobtn(ad,
632 _("IDS_ST_POP_NEW_PASSWD_SAVED"), TRUE);
636 /* reset static variables */
637 memset(collection1, 0x00, SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH+1);
638 memset(collection2, 0x00, SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH+1);
639 /* Send destroy request */
640 ug_destroy_me(ad->ug);
644 setting_password_main_draw_simple_password(ad, 2);
645 return SETTING_RETURN_FAIL;
648 return SETTING_RETURN_SUCCESS;
651 static int _handle_step3(void *data, int *step, char *collection1, char *collection2, char *collection3)
653 retv_if(data == NULL, SETTING_RETURN_FAIL);
655 SettingPasswordUG *ad = (SettingPasswordUG *) data;
659 char svalue[SHA256_DIGEST_LENGTH];
660 memset(svalue, 0x0, SHA256_DIGEST_LENGTH);
662 if(*step == 0) /* Enter current password */
664 _copy_chars_from_sp_entries(ad, collection1);
666 ret = setting_password_main_check_simple_password(collection1);
669 setting_password_main_draw_simple_password(ad, 3);
670 return SETTING_RETURN_FAIL;
673 ret = setting_password_check_password(collection1);
674 if(ret != SETTING_RETURN_SUCCESS)
676 setting_password_main_draw_simple_password(ad, 3);
677 return SETTING_RETURN_FAIL;
680 setting_password_main_draw_next_simple_password(ad, 1);
682 else if(*step == 1) /* Enter new password */
684 _copy_chars_from_sp_entries(ad, collection2);
686 ret = setting_password_main_check_simple_password(collection2);
689 setting_password_main_draw_simple_password(ad, 1);
690 return SETTING_RETURN_FAIL;
694 setting_password_main_draw_next_simple_password(ad, 2);
696 else if(*step == 2) /* Enter password again */
698 _copy_chars_from_sp_entries(ad, collection3);
700 ret = setting_password_main_check_simple_password(collection3);
703 setting_password_main_draw_simple_password(ad, 2);
704 return SETTING_RETURN_FAIL;
707 /* compare two input passwords : collection_step1, collection_step2 */
708 if(safeStrNCmp(collection2, collection3, 4) == 0)
710 ret = setting_password_set_password(collection1, collection2, ad);
711 /* Modify Setting Password */
712 if (SETTING_RETURN_FAIL != ret) {
714 setting_password_ug_create_popup_notitle_nobtn(ad,
715 _("IDS_ST_POP_PASSWORD_CHANGED"), TRUE);
718 SETTING_TRACE_DEBUG("%s*** [ERR] setting_set_string_slp_key err=%d ***%s",
719 SETTING_FONT_RED, err, SETTING_FONT_BLACK);
720 setting_password_ug_create_popup_notitle_nobtn(ad,
721 _("IDS_COM_POP_ERROR"), FALSE);
726 setting_password_main_draw_simple_password(ad, 2);
727 return SETTING_RETURN_FAIL;
730 /* reset static variables */
731 memset(collection1, 0x00, SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH+1);
732 memset(collection2, 0x00, SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH+1);
733 memset(collection3, 0x00, SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH+1);
735 /* Send destroy request */
736 ug_destroy_me(ad->ug);
738 return SETTING_RETURN_SUCCESS;
741 static int setting_password_main_done_simple_password(void *data, int on_locking)
744 retv_if(data == NULL, SETTING_RETURN_FAIL);
746 SettingPasswordUG *ad = (SettingPasswordUG *) data;
750 static char collection_step1[SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH+1] = {0,};
751 static char collection_step2[SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH+1] = {0,};
752 static char collection_step3[SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH+1] = {0,};
754 switch(ad->view_type)
756 case SETTING_PW_TYPE_RESET:
757 case SETTING_PW_TYPE_LOCK_FOR_APP:
758 case SETTING_PW_TYPE_PHONE_LOCK: /* Enter a password */
759 SETTING_TRACE_DEBUG("case PHONE_LOCK");
761 return SETTING_RETURN_FAIL;
763 return _handle_step1(ad, collection_step1);
765 case SETTING_PW_TYPE_SIMPLE_PASSWORD:
766 SETTING_TRACE_DEBUG("case SIMPLE_PASSWORD");
767 return _handle_step_sp(ad, &step, collection_step1, collection_step2);
769 case SETTING_PW_TYPE_SET_PASSWORD:
770 SETTING_TRACE_DEBUG("case SET_PASSWORD");
771 return _handle_step2(ad, &step, collection_step1, collection_step2);
773 case SETTING_PW_TYPE_CHANGE_PASSWORD:
774 SETTING_TRACE_DEBUG("case CHANGE_PASSWORD");
775 return _handle_step3(ad, &step, collection_step1, collection_step2, collection_step3);
780 return SETTING_RETURN_SUCCESS;
783 static void _sp_changed_cb1(void *data, Evas_Object *obj, void *event_info)
785 ret_if(data == NULL);
787 SettingPasswordUG *ad = (SettingPasswordUG *)data;
789 if((ad->sp_entry1 == NULL) || (ad->sp_entry1 != obj) || (ad->sp_entry2 == NULL))
792 if(!elm_entry_is_empty(ad->sp_entry1) && elm_entry_is_empty(ad->sp_entry2))
794 SETTING_TRACE_DEBUG("entry1 : %s", elm_entry_entry_get(ad->sp_entry1));
795 if(safeStrNCmp(elm_entry_entry_get(ad->sp_entry1), "<font_size=52 align=center>", safeStrLen("<font_size=52 align=center>")) == 0)
797 /* focus on next entry */
798 elm_object_focus_set(ad->sp_entry2, EINA_TRUE);
799 elm_entry_entry_set(ad->sp_entry2, "<font_size=52 align=center>");
800 elm_entry_cursor_end_set(ad->sp_entry2);
801 ad->sp_focused = ad->sp_entry2;
805 static void _sp_changed_cb2(void *data, Evas_Object *obj, void *event_info)
807 ret_if(data == NULL);
809 SettingPasswordUG *ad = (SettingPasswordUG *)data;
811 if((ad->sp_entry2 == NULL) || (ad->sp_entry2 != obj) || (ad->sp_entry3 == NULL))
814 if(!elm_entry_is_empty(ad->sp_entry2) && elm_entry_is_empty(ad->sp_entry3))
816 SETTING_TRACE_DEBUG("entry2 : %s", elm_entry_entry_get(ad->sp_entry2));
817 if(safeStrNCmp(elm_entry_entry_get(ad->sp_entry2), "<font_size=52 align=center>", safeStrLen("<font_size=52 align=center>")) == 0)
819 /* focus on next entry */
820 elm_object_focus_set(ad->sp_entry3, EINA_TRUE);
821 elm_entry_entry_set(ad->sp_entry3, "<font_size=52 align=center>");
822 elm_entry_cursor_end_set(ad->sp_entry3);
823 ad->sp_focused = ad->sp_entry3;
827 static void _sp_changed_cb3(void *data, Evas_Object *obj, void *event_info)
829 ret_if(data == NULL);
831 SettingPasswordUG *ad = (SettingPasswordUG *)data;
833 if((ad->sp_entry3 == NULL) || (ad->sp_entry3 != obj) || (ad->sp_entry4 == NULL))
836 if(!elm_entry_is_empty(ad->sp_entry3) && elm_entry_is_empty(ad->sp_entry4))
838 SETTING_TRACE_DEBUG("entry3 : %s", elm_entry_entry_get(ad->sp_entry3));
839 if(safeStrNCmp(elm_entry_entry_get(ad->sp_entry3), "<font_size=52 align=center>", safeStrLen("<font_size=52 align=center>")) == 0)
841 /* focus on next entry */
842 elm_object_focus_set(ad->sp_entry4, EINA_TRUE);
843 elm_entry_entry_set(ad->sp_entry4, "<font_size=52 align=center>");
844 elm_entry_cursor_end_set(ad->sp_entry4);
845 ad->sp_focused = ad->sp_entry4;
849 static void _sp_changed_cb4(void *data, Evas_Object *obj, void *event_info)
851 ret_if(data == NULL);
853 static int counter = 0;
855 SettingPasswordUG *ad = (SettingPasswordUG *)data;
857 if((ad->sp_entry4 == NULL) || (ad->sp_entry4 != obj))
859 if((ad->sp_entry1 == NULL) || (ad->sp_entry2 == NULL) || (ad->sp_entry3 == NULL))
862 if(strcmp(elm_entry_entry_get(ad->sp_entry4), "") == 0)
864 SETTING_TRACE_DEBUG("this is align text");
867 if(safeStrNCmp(elm_entry_entry_get(ad->sp_entry4), "<font_size=52 align=center>", safeStrLen("<font_size=52 align=center>")) == 0)
870 SETTING_TRACE_DEBUG("entry4 : %s", elm_entry_entry_get(ad->sp_entry4));
871 /* add this below for removing IMF faster */
872 /* need to discuss with IMF or Entry developer more */
873 elm_object_focus_set(ad->sp_entry4, EINA_FALSE);
877 if(counter == ENTRY_CALLBACK_REPEAT_MAX)
881 ret = setting_password_main_done_simple_password(ad, TRUE);
883 if(ret == SETTING_RETURN_FAIL)
885 setting_password_ug_display_desc(ad, _("IDS_ST_BODY_INCORRECT_PASSWORD_TRY_AGAIN"), FALSE);
887 else if(ret == SETTING_COMPARE_PW_FAIL)
889 /** @todo setting_password_ug_check_attemps_left */
890 setting_int_slp_list item_attempts_left;
891 setting_str_slp_list item_lock_timestamp;
892 int attemps_left_max = 5;
894 item_attempts_left = INT_SLP_SETTING_PHONE_LOCK_ATTEMPTS_LEFT;
895 item_lock_timestamp = STR_SLP_SETTING_PHONE_LOCK_TIMESTAMP;
896 attemps_left_max = PHONE_LOCK_ATTEMPS_MAX;
899 int err = SETTING_RETURN_SUCCESS;
900 setting_get_int_slp_key(item_attempts_left, &value, &err);
901 setting_retm_if(err == SETTING_RETURN_FAIL, "[Error] get value of vconf fail.");
905 if (value > 0 && value <= attemps_left_max) {
906 setting_set_int_slp_key(item_attempts_left, value, &err);
907 setting_retm_if(err == SETTING_RETURN_FAIL, "[Error] set value of vconf fail.");
909 char speciliztion[MAX_SPECIALIZITION_LEN] = { 0, };
910 char temp[MAX_SPECIALIZITION_LEN] = {0,};
913 snprintf(temp, sizeof(temp), "%s. %s.", PW_ERR_DESC, ATTEMPTS_DESC);
915 snprintf(temp, sizeof(temp), "%s. %s.", PW_ERR_DESC, ATTEMPT_DESC);
917 snprintf(speciliztion, sizeof(speciliztion), temp, value);
918 setting_password_ug_display_desc(ad, speciliztion, FALSE);
919 } else if (value == 0) {
920 /* store the lock timestamp */
921 elm_object_focus_set(ad->sp_entry1, EINA_FALSE);
922 time_t cur_time = time(NULL);
923 char cur_timestamp[LOCK_TIMESTAMP_LEN] = { 0, };
924 int ret = snprintf(cur_timestamp, sizeof(cur_timestamp), "%ld", cur_time);
927 setting_set_string_slp_key(item_lock_timestamp, cur_timestamp, &err);
928 setting_retm_if(err == SETTING_RETURN_FAIL,
929 "[Error] set value of vconf fail.");
931 setting_set_int_slp_key(item_attempts_left, value, &err);
932 setting_retm_if(err == SETTING_RETURN_FAIL,
933 "[Error] set value of vconf fail.");
935 ad->disable_item_type = ad->view_type;
937 char temp[MAX_SPECIALIZITION_LEN] = {0,};
938 snprintf(temp, sizeof(temp), PW_ERR_DELAY_DESC, PW_ERR_DELAY_TIME);
939 setting_password_ug_create_popup_notitle_nobtn(ad, temp, TRUE);
944 /* if you have more cases, modify here. */
953 static char *__gl_sp_text_get(void *data, Evas_Object *obj, const char *part)
955 retv_if(data == NULL, NULL);
956 SettingPasswordUG *ad = (SettingPasswordUG*)data;
958 SETTING_TRACE_DEBUG("[sp_label_get] label intex, %d", ad->sp_title_index);
960 if(ad->sp_title_index < SETTING_SP_TITLE_INDEX_START || ad->sp_title_index > SETTING_SP_TITLE_INDEX_MAX)
962 SETTING_TRACE_DEBUG("title index is invalid");
967 return strdup(_(sp_titles[ad->sp_title_index]));
971 static Evas_Object* __gl_sp_content_get(void *data, Evas_Object *obj, const char *part)
973 retv_if(data == NULL, NULL);
974 SettingPasswordUG *ad = (SettingPasswordUG*)data;
976 Evas_Object *entry = NULL;
978 static Elm_Entry_Filter_Limit_Size limit_filter_data;
979 limit_filter_data.max_byte_count = 0;
980 limit_filter_data.max_char_count = 1;
982 entry = elm_entry_add(obj);
983 elm_entry_password_set(entry, EINA_TRUE);
984 elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &limit_filter_data);
985 elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_NUMBERONLY);
986 elm_entry_entry_set(entry, "<font_size=52 align=center>");
987 evas_object_event_callback_add(entry, EVAS_CALLBACK_KEY_UP, _sp_back_key_up, ad);
989 elm_config_password_show_last_set(EINA_TRUE);
990 elm_config_password_show_last_timeout_set(0.1);
992 if(safeStrCmp("elm.icon.1", part) == 0)
994 SETTING_TRACE_DEBUG("create entry1");
995 evas_object_smart_callback_add(entry, "changed", _sp_changed_cb1, ad);
996 ad->sp_entry1 = entry;
998 else if(safeStrCmp("elm.icon.2", part) == 0)
1000 SETTING_TRACE_DEBUG("create entry2");
1001 evas_object_smart_callback_add(entry, "changed", _sp_changed_cb2, ad);
1002 ad->sp_entry2 = entry;
1004 else if(safeStrCmp("elm.icon.3", part) == 0)
1006 SETTING_TRACE_DEBUG("create entry3");
1007 evas_object_smart_callback_add(entry, "changed", _sp_changed_cb3, ad);
1008 ad->sp_entry3 = entry;
1010 else if(safeStrCmp("elm.icon.4", part) == 0)
1012 SETTING_TRACE_DEBUG("create entry4");
1013 evas_object_smart_callback_add(entry, "changed", _sp_changed_cb4, ad);
1014 ad->sp_entry4 = entry;
1021 setting_password_main_create(void *cb)
1023 SETTING_TRACE_BEGIN;
1025 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1027 SettingPasswordUG *ad = (SettingPasswordUG *) cb;
1030 ad->itc_sp_bg_1icon.item_style = "dialogue/1text.4icon";
1031 ad->itc_sp_bg_1icon.func.text_get = __gl_sp_text_get;
1032 ad->itc_sp_bg_1icon.func.content_get = __gl_sp_content_get;
1033 ad->itc_sp_bg_1icon.func.state_get = NULL;
1034 ad->itc_sp_bg_1icon.func.del = NULL;
1036 ret = __create_common_password_frame(ad);
1039 return SETTING_RETURN_FAIL;
1041 setting_password_main_create_ui(ad);
1043 setting_view_password_main.is_create = 1;
1044 return SETTING_RETURN_SUCCESS;
1047 static int setting_password_main_destroy(void *cb)
1050 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1052 SettingPasswordUG *ad = (SettingPasswordUG *) cb;
1053 if (ad->remove_timer) {
1054 ecore_timer_del(ad->remove_timer);
1055 ad->remove_timer = NULL;
1058 if((ad->is_simple_password_on == 1) &&
1059 ((ad->view_type == SETTING_PW_TYPE_PHONE_LOCK)
1060 || (ad->view_type == SETTING_PW_TYPE_SET_PASSWORD)
1061 || (ad->view_type == SETTING_PW_TYPE_SIMPLE_PASSWORD)
1062 || (ad->view_type == SETTING_PW_TYPE_CHANGE_PASSWORD)
1063 || (ad->view_type == SETTING_PW_TYPE_RESET)
1064 || (ad->view_type == SETTING_PW_TYPE_LOCK_FOR_APP) ))
1067 evas_object_event_callback_del(ad->sp_entry1, EVAS_CALLBACK_KEY_UP, _sp_back_key_up);
1069 evas_object_event_callback_del(ad->sp_entry2, EVAS_CALLBACK_KEY_UP, _sp_back_key_up);
1071 evas_object_event_callback_del(ad->sp_entry3, EVAS_CALLBACK_KEY_UP, _sp_back_key_up);
1073 evas_object_event_callback_del(ad->sp_entry4, EVAS_CALLBACK_KEY_UP, _sp_back_key_up);
1078 SETTING_TRACE_DEBUG("delete scroller");
1079 elm_genlist_clear(ad->scroller);
1080 evas_object_del(ad->scroller);
1081 ad->scroller = NULL;
1084 if (ad->ly_main != NULL) {
1085 evas_object_del(ad->ly_main);
1087 setting_view_password_main.is_create = 0;
1090 return SETTING_RETURN_SUCCESS;
1093 static int setting_password_main_update(void *cb)
1096 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1098 SettingPasswordUG *ad = (SettingPasswordUG *) cb;
1100 if (ad->ly_main != NULL) {
1101 evas_object_show(ad->ly_main);
1104 return SETTING_RETURN_SUCCESS;
1107 static int setting_password_main_cleanup(void *cb)
1110 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1112 SettingPasswordUG *ad = (SettingPasswordUG *) cb;
1114 if (ad->ly_main != NULL) {
1115 evas_object_hide(ad->ly_main);
1118 return SETTING_RETURN_SUCCESS;
1121 /* ***************************************************
1125 ***************************************************/
1127 static int setting_password_main_create_ui(void *data)
1130 retvm_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER,
1131 "[Setting > Password] Data parameter is NULL");
1133 SettingPasswordUG *ad = (SettingPasswordUG *) data;
1135 SETTING_TRACE_DEBUG("ad->view_type=%d ***", ad->view_type);
1137 switch (ad->view_type) {
1138 case SETTING_PW_TYPE_POWER_ON_LOCK:
1139 case SETTING_PW_TYPE_CLEAR:
1140 case SETTING_PW_TYPE_SIM_LOCK_OFF:
1141 case SETTING_PW_TYPE_PIN_LOCK_ON:
1142 case SETTING_PW_TYPE_PIN_LOCK_OFF:
1143 case SETTING_PW_TYPE_FDN_MODE_ON:
1144 case SETTING_PW_TYPE_FDN_MODE_OFF:
1145 setting_password_main_draw_1line_password(ad, NULL);
1147 case SETTING_PW_TYPE_PHONE_LOCK:
1148 case SETTING_PW_TYPE_RESET:
1149 case SETTING_PW_TYPE_LOCK_FOR_APP:
1150 if(ad->is_simple_password_on == 1)
1151 setting_password_main_draw_simple_password(ad, 3);
1153 setting_password_main_draw_1line_password(ad, NULL);
1156 case SETTING_PW_TYPE_SIM_LOCK_ON:
1157 setting_password_main_draw_2line_password(ad, NULL);
1159 case SETTING_PW_TYPE_SET_PASSWORD:
1160 if(ad->is_simple_password_on == 1)
1161 setting_password_main_draw_simple_password(ad, 1);
1163 setting_password_main_draw_2line_password(ad, NULL);
1166 case SETTING_PW_TYPE_CHANGE_PIN1:
1167 case SETTING_PW_TYPE_CHANGE_PIN2:
1168 case SETTING_PW_TYPE_PIN1_BLOCKED:
1169 case SETTING_PW_TYPE_PIN2_BLOCKED:
1170 setting_password_main_draw_3line_password(ad, NULL);
1173 case SETTING_PW_TYPE_CHANGE_PASSWORD:
1174 if(ad->is_simple_password_on == 1)
1175 setting_password_main_draw_simple_password(ad, 3);
1177 setting_password_main_draw_3line_password(ad, NULL);
1179 case SETTING_PW_TYPE_SIMPLE_PASSWORD:
1180 if(ad->is_simple_password_on == 1) /* ON -> OFF */
1181 setting_password_main_draw_simple_password(ad, 3);
1182 else if(ad->is_simple_password_on == 0) /* OFF -> ON */
1183 setting_password_main_draw_1line_password(ad, NULL);
1186 SETTING_TRACE_DEBUG("%s*** Unknown Password Type. ***%s",
1187 SETTING_FONT_BGREEN, SETTING_FONT_BLACK);
1191 /** @todo this function always return 0, not verifying the function flow with the value */
1196 setting_password_main_entry_changed_cb(void *data, Evas_Object *obj,
1199 retm_if(data == NULL, "[Setting > Password] Data parameter is NULL");
1200 Setting_GenGroupItem_Data *list_item =
1201 (Setting_GenGroupItem_Data *) data;
1202 SettingPasswordUG *ad = (SettingPasswordUG *) list_item->userdata;
1203 const char *entry_str = elm_entry_entry_get(obj);
1204 list_item->sub_desc = (char *)g_strdup(entry_str);
1205 bool isFoundEmptyEntry = FALSE;
1206 Evas_Object *layout = elm_object_parent_widget_get(obj);
1207 elm_object_part_text_set(layout, "elm.guidetext", "");
1211 entry_str = ad->ed_pw1->sub_desc;
1212 if (NULL == entry_str || '\0' == entry_str[0]) {
1213 isFoundEmptyEntry = TRUE;
1218 entry_str = ad->ed_pw2->sub_desc;
1219 if (NULL == entry_str || '\0' == entry_str[0]) {
1220 isFoundEmptyEntry = TRUE;
1225 entry_str = ad->ed_pw3->sub_desc;
1226 if (NULL == entry_str || '\0' == entry_str[0]) {
1227 isFoundEmptyEntry = TRUE;
1234 bool disableFlag = isFoundEmptyEntry;
1236 #if SUPPORT_BOTTOM_BTNS
1237 Evas_Object *done_btn = elm_object_item_part_content_get(ad->navi_it, "title_right_btn");
1239 if (!evas_object_pass_events_get(done_btn)) { /* it had not yet been disabled */
1240 setting_disable_evas_object(done_btn);
1241 setting_dim_evas_object(done_btn, TRUE);
1242 }/* else already disabled */
1244 setting_enable_evas_object(done_btn);
1245 setting_undo_dim_evas_object(done_btn, TRUE);
1248 elm_object_item_disabled_set(elm_toolbar_last_item_get
1249 (ad->controllbar), disableFlag);
1254 static Eina_Bool __focus_on_idler(void *data)
1257 retv_if(data == NULL, FALSE);
1259 SettingPasswordUG *ad = (SettingPasswordUG *) data;
1262 if((ad->is_simple_password_on == FALSE) && (ad->ed_pw1 != NULL))
1264 if (ad->ed_pw1->isFocusFlag || (ad->ed_pw1->eo_check != NULL))
1266 /* no matter how many edifileds, it only need focus on 1st editfiled */
1267 elm_object_focus_set(ad->ed_pw1->eo_check, EINA_TRUE);
1271 if((ad->is_simple_password_on == TRUE) && (ad->sp_entry1 != NULL))
1273 elm_object_focus_set(ad->sp_entry1, EINA_TRUE);
1274 ad->sp_focused = ad->sp_entry1;
1277 return ECORE_CALLBACK_CANCEL;
1281 static int setting_password_main_draw_next_simple_password(void *data, int title_index)
1284 retvm_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER,
1285 "[Setting > Password] Data parameter is NULL");
1287 SettingPasswordUG *ad = (SettingPasswordUG *) data;
1289 setting_password_main_draw_simple_password(ad, title_index);
1291 return SETTING_RETURN_SUCCESS;
1294 static int setting_password_main_draw_simple_password(void *data, int title_index)
1297 retvm_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER,
1298 "[Setting > Password] Data parameter is NULL");
1300 SettingPasswordUG *ad = (SettingPasswordUG *) data;
1302 switch (ad->view_type) {
1303 case SETTING_PW_TYPE_PHONE_LOCK:
1304 case SETTING_PW_TYPE_SET_PASSWORD:
1305 case SETTING_PW_TYPE_CHANGE_PASSWORD:
1306 case SETTING_PW_TYPE_SIMPLE_PASSWORD:
1307 case SETTING_PW_TYPE_RESET:
1308 case SETTING_PW_TYPE_LOCK_FOR_APP:
1310 ad->sp_title_index = title_index;
1312 if(ad->sp_item != NULL)
1314 elm_genlist_item_update(ad->sp_item);
1318 elm_genlist_clear(ad->scroller);
1319 ad->sp_item = elm_genlist_item_append(ad->scroller, &(ad->itc_sp_bg_1icon), ad, NULL,
1320 ELM_GENLIST_ITEM_NONE, NULL, NULL);
1323 ecore_idler_add(__focus_on_idler, ad);
1330 static int setting_password_main_draw_1line_password(void *data, void *cb)
1333 retvm_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER,
1334 "[Setting > Password] Data parameter is NULL");
1336 SettingPasswordUG *ad = (SettingPasswordUG *) data;
1338 switch (ad->view_type) {
1339 case SETTING_PW_TYPE_POWER_ON_LOCK:
1340 case SETTING_PW_TYPE_PHONE_LOCK:
1341 case SETTING_PW_TYPE_SIMPLE_PASSWORD:
1342 case SETTING_PW_TYPE_RESET:
1343 case SETTING_PW_TYPE_CLEAR:
1344 case SETTING_PW_TYPE_LOCK_FOR_APP:
1346 setting_create_Gendial_field_entry(ad->scroller,
1348 (ad->itc_variable_height),
1350 SWALLOW_Type_LAYOUT_ENTRY,
1352 "IDS_COM_BODY_PASSWORD",
1354 setting_password_main_entry_changed_cb,
1355 ELM_INPUT_PANEL_LAYOUT_NORMAL,
1357 SETTING_PW_UG_NORMAL_PASSWORD_MAX_LENGTH,
1360 case SETTING_PW_TYPE_SIM_LOCK_OFF:
1362 setting_create_Gendial_field_entry(ad->scroller,
1364 (ad->itc_variable_height),
1366 SWALLOW_Type_LAYOUT_ENTRY,
1368 "IDS_ST_BODY_SIM_PASSWORD",
1370 setting_password_main_entry_changed_cb,
1371 ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
1373 SETTING_PW_UG_SIM_MAX_LENGTH,
1374 0, "0123456789", NULL);
1377 case SETTING_PW_TYPE_PIN_LOCK_ON:
1378 case SETTING_PW_TYPE_PIN_LOCK_OFF:
1380 setting_create_Gendial_field_entry(ad->scroller,
1382 (ad->itc_variable_height),
1384 SWALLOW_Type_LAYOUT_ENTRY,
1386 "IDS_ST_BODY_PIN1", NULL,
1387 setting_password_main_entry_changed_cb,
1388 ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
1390 SETTING_PW_UG_PIN_MAX_LENGTH,
1391 0, "0123456789", NULL);
1394 case SETTING_PW_TYPE_FDN_MODE_ON:
1395 case SETTING_PW_TYPE_FDN_MODE_OFF:
1397 setting_create_Gendial_field_entry(ad->scroller,
1399 (ad->itc_variable_height),
1401 SWALLOW_Type_LAYOUT_ENTRY,
1403 "IDS_ST_BODY_PIN2", NULL,
1404 setting_password_main_entry_changed_cb,
1405 ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
1407 SETTING_PW_UG_PIN_MAX_LENGTH,
1408 0, "0123456789", NULL);
1414 ecore_idler_add(__focus_on_idler, ad);
1418 static int setting_password_main_clear_1line_password(void *data)
1421 retvm_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER,
1422 "[Setting > Password] Data parameter is NULL");
1424 SettingPasswordUG *ad = (SettingPasswordUG *) data;
1425 retv_if(NULL == ad->ed_pw1, -1);
1427 ad->ed_pw1->sub_desc = NULL;
1428 ad->ed_pw1->isFocusFlag = FALSE;
1430 elm_entry_entry_set(ad->ed_pw1->eo_check, "");
1434 static int setting_password_main_draw_2line_password(void *data, void *cb)
1437 retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1439 SettingPasswordUG *ad = (SettingPasswordUG *) data;
1441 switch (ad->view_type) {
1442 case SETTING_PW_TYPE_SET_PASSWORD:
1443 case SETTING_PW_TYPE_SIMPLE_PASSWORD:
1445 setting_create_Gendial_field_entry(ad->scroller,
1447 (ad->itc_variable_height),
1449 SWALLOW_Type_LAYOUT_ENTRY,
1451 "IDS_ST_BODY_NEW_PASSWORD",
1453 setting_password_main_entry_changed_cb,
1454 ELM_INPUT_PANEL_LAYOUT_NORMAL,
1456 SETTING_PW_UG_NORMAL_PASSWORD_MAX_LENGTH,
1460 setting_create_Gendial_field_entry(ad->scroller,
1462 (ad->itc_variable_height),
1464 SWALLOW_Type_LAYOUT_ENTRY,
1466 "IDS_ST_BODY_CONFIRM_PASSWORD",
1468 setting_password_main_entry_changed_cb,
1469 ELM_INPUT_PANEL_LAYOUT_NORMAL,
1471 SETTING_PW_UG_NORMAL_PASSWORD_MAX_LENGTH,
1475 case SETTING_PW_TYPE_SIM_LOCK_ON:
1477 setting_create_Gendial_field_entry(ad->scroller,
1479 (ad->itc_variable_height),
1481 SWALLOW_Type_LAYOUT_ENTRY,
1483 "IDS_ST_BODY_SIM_PASSWORD",
1485 setting_password_main_entry_changed_cb,
1486 ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
1488 SETTING_PW_UG_SIM_MAX_LENGTH,
1489 0, "0123456789", NULL);
1492 setting_create_Gendial_field_entry(ad->scroller,
1494 (ad->itc_variable_height),
1496 SWALLOW_Type_LAYOUT_ENTRY,
1498 "IDS_ST_BODY_CONFIRM_SIM_PASSWORD",
1500 setting_password_main_entry_changed_cb,
1501 ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
1503 SETTING_PW_UG_SIM_MAX_LENGTH,
1504 0, "0123456789", NULL);
1510 ecore_idler_add(__focus_on_idler, ad);
1514 static int setting_password_main_clear_2line_password(void *data)
1517 retvm_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER,
1518 "[Setting > Password] Data parameter is NULL");
1520 SettingPasswordUG *ad = (SettingPasswordUG *) data;
1522 retv_if(NULL == ad->ed_pw1, -1);
1523 ad->ed_pw1->sub_desc = NULL;
1524 ad->ed_pw1->isFocusFlag = FALSE;
1525 elm_entry_entry_set(ad->ed_pw1->eo_check, "");
1527 retv_if(NULL == ad->ed_pw2, -1);
1528 ad->ed_pw2->sub_desc = NULL;
1529 ad->ed_pw2->isFocusFlag = FALSE;
1530 elm_entry_entry_set(ad->ed_pw2->eo_check, "");
1534 static int setting_password_main_draw_3line_password(void *data, void *cb)
1537 retvm_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER,
1538 "[Setting > Password] Data parameter is NULL");
1540 SettingPasswordUG *ad = (SettingPasswordUG *) data;
1542 switch (ad->view_type) {
1543 case SETTING_PW_TYPE_CHANGE_PASSWORD:
1545 setting_create_Gendial_field_entry(ad->scroller,
1546 &(ad->itc_variable_height),
1548 SWALLOW_Type_LAYOUT_ENTRY,
1550 "IDS_ST_BODY_CURRENT_PASSWORD",
1552 setting_password_main_entry_changed_cb,
1553 ELM_INPUT_PANEL_LAYOUT_NORMAL,
1555 SETTING_PW_UG_NORMAL_PASSWORD_MAX_LENGTH,
1559 setting_create_Gendial_field_entry(ad->scroller,
1560 &(ad->itc_variable_height),
1562 SWALLOW_Type_LAYOUT_ENTRY,
1564 "IDS_ST_BODY_NEW_PASSWORD",
1566 setting_password_main_entry_changed_cb,
1567 ELM_INPUT_PANEL_LAYOUT_NORMAL,
1569 SETTING_PW_UG_NORMAL_PASSWORD_MAX_LENGTH,
1573 setting_create_Gendial_field_entry(ad->scroller,
1574 &(ad->itc_variable_height),
1576 SWALLOW_Type_LAYOUT_ENTRY,
1578 "IDS_ST_BODY_CONFIRM_PASSWORD",
1580 setting_password_main_entry_changed_cb,
1581 ELM_INPUT_PANEL_LAYOUT_NORMAL,
1583 SETTING_PW_UG_NORMAL_PASSWORD_MAX_LENGTH,
1587 case SETTING_PW_TYPE_CHANGE_PIN1:
1589 setting_create_Gendial_field_entry(ad->scroller,
1590 &(ad->itc_variable_height),
1592 SWALLOW_Type_LAYOUT_ENTRY,
1594 "IDS_ST_BODY_CURRENT_PIN1",
1596 setting_password_main_entry_changed_cb,
1597 ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
1599 SETTING_PW_UG_PIN_MAX_LENGTH,
1600 0, "0123456789", NULL);
1603 setting_create_Gendial_field_entry(ad->scroller,
1604 &(ad->itc_variable_height),
1606 SWALLOW_Type_LAYOUT_ENTRY,
1608 "IDS_ST_BODY_NEW_PIN1",
1610 setting_password_main_entry_changed_cb,
1611 ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
1613 SETTING_PW_UG_PIN_MAX_LENGTH,
1614 0, "0123456789", NULL);
1617 setting_create_Gendial_field_entry(ad->scroller,
1618 &(ad->itc_variable_height),
1620 SWALLOW_Type_LAYOUT_ENTRY,
1622 "IDS_ST_BODY_CONFIRM_NEW_PIN1",
1624 setting_password_main_entry_changed_cb,
1625 ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
1627 SETTING_PW_UG_PIN_MAX_LENGTH,
1628 0, "0123456789", NULL);
1631 case SETTING_PW_TYPE_CHANGE_PIN2:
1633 setting_create_Gendial_field_entry(ad->scroller,
1634 &(ad->itc_variable_height),
1636 SWALLOW_Type_LAYOUT_ENTRY,
1638 "IDS_ST_BODY_CURRENT_PIN2",
1640 setting_password_main_entry_changed_cb,
1641 ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
1643 SETTING_PW_UG_PIN_MAX_LENGTH,
1644 0, "0123456789", NULL);
1647 setting_create_Gendial_field_entry(ad->scroller,
1648 &(ad->itc_variable_height),
1650 SWALLOW_Type_LAYOUT_ENTRY,
1652 "IDS_ST_BODY_NEW_PIN2",
1654 setting_password_main_entry_changed_cb,
1655 ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
1657 SETTING_PW_UG_PIN_MAX_LENGTH,
1658 0, "0123456789", NULL);
1661 setting_create_Gendial_field_entry(ad->scroller,
1662 &(ad->itc_variable_height),
1664 SWALLOW_Type_LAYOUT_ENTRY,
1666 "IDS_ST_BODY_CONFIRM_NEW_PIN2",
1668 setting_password_main_entry_changed_cb,
1669 ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
1671 SETTING_PW_UG_PIN_MAX_LENGTH,
1672 0, "0123456789", NULL);
1675 case SETTING_PW_TYPE_PIN1_BLOCKED:
1677 setting_create_Gendial_field_entry(ad->scroller,
1678 &(ad->itc_variable_height),
1680 SWALLOW_Type_LAYOUT_ENTRY,
1682 "IDS_ST_BODY_PUK1_CODE",
1684 setting_password_main_entry_changed_cb,
1685 ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
1687 SETTING_PW_UG_PIN_MAX_LENGTH,
1688 0, "0123456789", NULL);
1691 setting_create_Gendial_field_entry(ad->scroller,
1692 &(ad->itc_variable_height),
1694 SWALLOW_Type_LAYOUT_ENTRY,
1696 "IDS_ST_BODY_NEW_PIN1",
1698 setting_password_main_entry_changed_cb,
1699 ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
1701 SETTING_PW_UG_PIN_MAX_LENGTH,
1702 0, "0123456789", NULL);
1705 setting_create_Gendial_field_entry(ad->scroller,
1706 &(ad->itc_variable_height),
1708 SWALLOW_Type_LAYOUT_ENTRY,
1710 "IDS_ST_BODY_CONFIRM_NEW_PIN1",
1712 setting_password_main_entry_changed_cb,
1713 ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
1715 SETTING_PW_UG_PIN_MAX_LENGTH,
1716 0, "0123456789", NULL);
1719 case SETTING_PW_TYPE_PIN2_BLOCKED:
1721 setting_create_Gendial_field_entry(ad->scroller,
1722 &(ad->itc_variable_height),
1724 SWALLOW_Type_LAYOUT_ENTRY,
1726 "IDS_ST_BODY_PUK2", NULL,
1727 setting_password_main_entry_changed_cb,
1728 ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
1730 SETTING_PW_UG_PIN_MAX_LENGTH,
1731 0, "0123456789", NULL);
1734 setting_create_Gendial_field_entry(ad->scroller,
1735 &(ad->itc_variable_height),
1737 SWALLOW_Type_LAYOUT_ENTRY,
1739 "IDS_ST_BODY_NEW_PIN2",
1741 setting_password_main_entry_changed_cb,
1742 ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
1744 SETTING_PW_UG_PIN_MAX_LENGTH,
1745 0, "0123456789", NULL);
1748 setting_create_Gendial_field_entry(ad->scroller,
1749 &(ad->itc_variable_height),
1751 SWALLOW_Type_LAYOUT_ENTRY,
1753 "IDS_ST_BODY_CONFIRM_NEW_PIN2",
1755 setting_password_main_entry_changed_cb,
1756 ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
1758 SETTING_PW_UG_PIN_MAX_LENGTH,
1759 0, "0123456789", NULL);
1765 ecore_idler_add(__focus_on_idler, ad);
1769 static int setting_password_main_clear_3line_password(void *data)
1772 retvm_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER,
1773 "[Setting > Password] Data parameter is NULL");
1775 SettingPasswordUG *ad = (SettingPasswordUG *) data;
1777 retv_if(NULL == ad->ed_pw1, -1);
1778 ad->ed_pw1->sub_desc = NULL;
1779 ad->ed_pw1->isFocusFlag = FALSE;
1780 elm_entry_entry_set(ad->ed_pw1->eo_check, "");
1782 retv_if(NULL == ad->ed_pw2, -1);
1783 ad->ed_pw2->sub_desc = NULL;
1784 ad->ed_pw2->isFocusFlag = FALSE;
1785 elm_entry_entry_set(ad->ed_pw2->eo_check, "");
1787 retv_if(NULL == ad->ed_pw3, -1);
1788 ad->ed_pw3->sub_desc = NULL;
1789 ad->ed_pw3->isFocusFlag = FALSE;
1790 elm_entry_entry_set(ad->ed_pw3->eo_check, "");
1794 static int setting_password_main_check_simple_password(const char *collection)
1796 retv_if(collection == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1798 int sp_len = safeStrLen(collection);
1802 SETTING_TRACE_DEBUG("collection length is %d", sp_len);
1805 return SETTING_RETURN_FAIL;
1807 /* check if digit. */
1808 for(index = 0; index < sp_len; index++)
1810 temp = (char)(collection[index]);
1811 if((temp < '0') || ( temp > '9'))
1812 return SETTING_RETURN_FAIL;
1814 SETTING_TRACE_DEBUG("temp %c", temp);
1817 return SETTING_RETURN_SUCCESS;
1820 static int setting_password_main_check_1line_password(void *data)
1823 retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1825 SettingPasswordUG *ad = (SettingPasswordUG *) data;
1827 const char *entry_str = ad->ed_pw1->sub_desc;
1828 ad->focus_data = ad->ed_pw1;
1831 if (isEmptyStr(entry_str)) {
1832 setting_password_ug_display_desc(ad, _("IDS_ST_BODY_PASSWORD_EMPTY"), FALSE);
1833 return SETTING_ENTRY_RETURN_NULL_STR_ERR;
1837 int entry_str_len = safeStrLen(entry_str);
1838 switch (ad->view_type) {
1839 case SETTING_PW_TYPE_POWER_ON_LOCK:
1840 case SETTING_PW_TYPE_PHONE_LOCK:
1841 case SETTING_PW_TYPE_RESET:
1842 case SETTING_PW_TYPE_CLEAR:
1843 case SETTING_PW_TYPE_LOCK_FOR_APP:
1845 if (entry_str_len < SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH
1846 || entry_str_len > SETTING_PW_UG_NORMAL_PASSWORD_MAX_LENGTH) {
1847 setting_password_main_warning_entry_added_byte_popup
1848 (ad, SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH, SETTING_PW_UG_NORMAL_PASSWORD_MAX_LENGTH);
1849 return SETTING_ENTRY_REQUIRED_CORRECT_DIGIT_PW;
1853 case SETTING_PW_TYPE_PIN_LOCK_ON:
1854 case SETTING_PW_TYPE_PIN_LOCK_OFF:
1855 case SETTING_PW_TYPE_FDN_MODE_ON:
1856 case SETTING_PW_TYPE_FDN_MODE_OFF:
1858 if (entry_str_len < SETTING_PW_UG_PIN_MIN_LENGTH
1859 || entry_str_len > SETTING_PW_UG_PIN_MAX_LENGTH) {
1860 setting_password_main_warning_entry_added_byte_popup
1861 (ad, SETTING_PW_UG_PIN_MIN_LENGTH, SETTING_PW_UG_PIN_MAX_LENGTH);
1862 return SETTING_ENTRY_REQUIRED_CORRECT_DIGIT_PW;
1866 case SETTING_PW_TYPE_SIM_LOCK_OFF:
1868 if (entry_str_len < SETTING_PW_UG_SIM_MIN_LENGTH
1869 || entry_str_len > SETTING_PW_UG_SIM_MAX_LENGTH) {
1870 setting_password_main_warning_entry_added_byte_popup
1871 (ad, SETTING_PW_UG_SIM_MIN_LENGTH, SETTING_PW_UG_SIM_MAX_LENGTH);
1872 return SETTING_ENTRY_REQUIRED_CORRECT_DIGIT_PW;
1878 return SETTING_RETURN_SUCCESS;
1881 static int setting_password_main_check_2line_password(void *data)
1884 retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1886 SettingPasswordUG *ad = (SettingPasswordUG *) data;
1888 const char *entry_str1 = ad->ed_pw1->sub_desc;
1889 const char *entry_str2 = ad->ed_pw2->sub_desc;
1890 ad->focus_data = ad->ed_pw1;
1893 if (isEmptyStr(entry_str1)) {
1894 setting_password_ug_display_desc(ad, _("IDS_ST_BODY_PASSWORD_EMPTY"), FALSE);
1895 return SETTING_ENTRY_RETURN_NULL_STR_ERR;
1898 if (isEmptyStr(entry_str2)) {
1899 ad->focus_data = ad->ed_pw2;
1900 setting_password_ug_display_desc(ad, _("IDS_ST_BODY_PASSWORD_EMPTY"), FALSE);
1901 return SETTING_ENTRY_RETURN_NULL_STR_ERR;
1905 int entry_str_len = safeStrLen(entry_str1);
1906 switch (ad->view_type) {
1907 case SETTING_PW_TYPE_SET_PASSWORD:
1909 if (entry_str_len < SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH
1910 || entry_str_len > SETTING_PW_UG_NORMAL_PASSWORD_MAX_LENGTH) {
1911 setting_password_main_warning_entry_added_byte_popup
1912 (ad, SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH, SETTING_PW_UG_NORMAL_PASSWORD_MAX_LENGTH);
1913 return SETTING_ENTRY_REQUIRED_CORRECT_DIGIT_PW;
1918 case SETTING_PW_TYPE_SIM_LOCK_ON:
1920 if (entry_str_len < SETTING_PW_UG_SIM_MIN_LENGTH
1921 || entry_str_len > SETTING_PW_UG_SIM_MAX_LENGTH) {
1922 setting_password_main_warning_entry_added_byte_popup
1923 (ad, SETTING_PW_UG_SIM_MIN_LENGTH, SETTING_PW_UG_SIM_MAX_LENGTH);
1924 return SETTING_ENTRY_REQUIRED_CORRECT_DIGIT_PW;
1933 if (0 != safeStrCmp(entry_str1, entry_str2)) {
1934 setting_password_ug_display_desc(ad, _("IDS_ST_POP_PASSWORDS_DO_NOT_MATCH"), FALSE);
1935 return SETTING_ENTRY_NOT_MATCH_NEW_CONF_PW;
1938 return SETTING_RETURN_SUCCESS;
1942 setting_password_main_warning_entry_added_byte_popup(SettingPasswordUG *ad,
1945 char str[MAX_SPECIALIZITION_LEN + 1] = { 0 };
1947 snprintf(str, MAX_SPECIALIZITION_LEN, "%d~%d %s", min, max, _("characters required"));
1949 setting_password_ug_display_desc(ad, str, FALSE);
1952 static int setting_password_main_check_3line_password(void *data)
1955 retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
1957 SettingPasswordUG *ad = (SettingPasswordUG *) data;
1959 const char *entry_str1 = ad->ed_pw1->sub_desc;
1960 const char *entry_str2 = ad->ed_pw2->sub_desc;
1961 const char *entry_str3 = ad->ed_pw3->sub_desc;
1962 ad->focus_data = ad->ed_pw1;
1965 if (isEmptyStr(entry_str1)) {
1966 setting_password_ug_display_desc(ad, _("IDS_ST_BODY_PASSWORD_EMPTY"), FALSE);
1967 return SETTING_ENTRY_RETURN_NULL_STR_ERR;
1970 if (isEmptyStr(entry_str2)) {
1971 ad->focus_data = ad->ed_pw2;
1972 setting_password_ug_display_desc(ad, _("IDS_ST_BODY_PASSWORD_EMPTY"), FALSE);
1973 return SETTING_ENTRY_RETURN_NULL_STR_ERR;
1976 if (isEmptyStr(entry_str3)) {
1977 ad->focus_data = ad->ed_pw3;
1978 setting_password_ug_display_desc(ad, _("IDS_ST_BODY_PASSWORD_EMPTY"), FALSE);
1979 return SETTING_ENTRY_RETURN_NULL_STR_ERR;
1983 int entry_str1_len = safeStrLen(entry_str1);
1984 int entry_str2_len = safeStrLen(entry_str2);
1985 int entry_str3_len = safeStrLen(entry_str3);
1986 switch (ad->view_type) {
1987 case SETTING_PW_TYPE_CHANGE_PASSWORD:
1989 if (entry_str1_len < SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH
1990 || entry_str1_len > SETTING_PW_UG_NORMAL_PASSWORD_MAX_LENGTH) {
1991 setting_password_main_warning_entry_added_byte_popup
1992 (ad, SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH, SETTING_PW_UG_NORMAL_PASSWORD_MAX_LENGTH);
1993 return SETTING_ENTRY_REQUIRED_CORRECT_DIGIT_PW;
1995 if (entry_str2_len < SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH
1996 || entry_str2_len > SETTING_PW_UG_NORMAL_PASSWORD_MAX_LENGTH) {
1997 ad->focus_data = ad->ed_pw2;
1998 setting_password_main_warning_entry_added_byte_popup
1999 (ad, SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH, SETTING_PW_UG_NORMAL_PASSWORD_MAX_LENGTH);
2000 return SETTING_ENTRY_REQUIRED_CORRECT_DIGIT_PW;
2002 if (entry_str3_len < SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH
2003 || entry_str3_len > SETTING_PW_UG_NORMAL_PASSWORD_MAX_LENGTH) {
2004 ad->focus_data = ad->ed_pw3;
2005 setting_password_main_warning_entry_added_byte_popup
2006 (ad, SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH, SETTING_PW_UG_NORMAL_PASSWORD_MAX_LENGTH);
2007 return SETTING_ENTRY_REQUIRED_CORRECT_DIGIT_PW;
2012 case SETTING_PW_TYPE_PIN1_BLOCKED:
2013 case SETTING_PW_TYPE_PIN2_BLOCKED:
2014 case SETTING_PW_TYPE_CHANGE_PIN1:
2015 case SETTING_PW_TYPE_CHANGE_PIN2:
2017 if (entry_str1_len < SETTING_PW_UG_PIN_MIN_LENGTH
2018 || entry_str1_len > SETTING_PW_UG_PIN_MAX_LENGTH) {
2019 setting_password_main_warning_entry_added_byte_popup
2020 (ad, SETTING_PW_UG_PIN_MIN_LENGTH, SETTING_PW_UG_PIN_MAX_LENGTH);
2021 return SETTING_ENTRY_REQUIRED_CORRECT_DIGIT_PW;
2023 if (entry_str2_len < SETTING_PW_UG_PIN_MIN_LENGTH
2024 || entry_str2_len > SETTING_PW_UG_PIN_MAX_LENGTH) {
2025 ad->focus_data = ad->ed_pw2;
2026 setting_password_main_warning_entry_added_byte_popup
2027 (ad, SETTING_PW_UG_PIN_MIN_LENGTH, SETTING_PW_UG_PIN_MAX_LENGTH);
2028 return SETTING_ENTRY_REQUIRED_CORRECT_DIGIT_PW;
2030 if (entry_str3_len < SETTING_PW_UG_PIN_MIN_LENGTH
2031 || entry_str3_len > SETTING_PW_UG_PIN_MAX_LENGTH) {
2032 ad->focus_data = ad->ed_pw3;
2033 setting_password_main_warning_entry_added_byte_popup
2034 (ad, SETTING_PW_UG_PIN_MIN_LENGTH, SETTING_PW_UG_PIN_MAX_LENGTH);
2035 return SETTING_ENTRY_REQUIRED_CORRECT_DIGIT_PW;
2044 if (0 != safeStrCmp(entry_str2, entry_str3)) {
2045 ad->focus_data = ad->ed_pw2;
2046 setting_password_ug_display_desc(ad, _("IDS_ST_POP_PASSWORDS_DO_NOT_MATCH"), FALSE);
2047 return SETTING_ENTRY_NOT_MATCH_NEW_CONF_PW;
2050 return SETTING_RETURN_SUCCESS;
2054 setting_password_main_click_softkey_cancel_cb(void *data, Evas_Object *obj,
2058 retm_if(data == NULL, "[Setting > Password] Data parameter is NULL");
2060 SettingPasswordUG *ad = (SettingPasswordUG *) data;
2064 /* add this below for removing IMF faster */
2065 /* need to discuss with IMF or Entry developer more */
2066 elm_object_focus_set(ad->sp_entry4, EINA_FALSE);
2070 /* for updating toggle button of simple password in security menu correctly. */
2071 if(ad->view_type == SETTING_PW_TYPE_SIMPLE_PASSWORD)
2073 bundle *b = bundle_create();
2076 bundle_add(b, "result", ad->view_type_string);
2077 ug_send_result(ad->ug, b);
2078 SETTING_TRACE("Send Result : %s\n", ad->view_type_string);
2081 /* Send destroy request */
2082 ug_destroy_me(ad->ug);
2087 setting_password_main_click_softkey_done_cb(void *data, Evas_Object *obj,
2091 retm_if(data == NULL, "[Setting > Password] Data parameter is NULL");
2095 char svalue[SHA256_DIGEST_LENGTH] = { 0, };
2097 memset(svalue, 0x0, SHA256_DIGEST_LENGTH);
2099 SettingPasswordUG *ad = (SettingPasswordUG *) data;
2102 SETTING_TRACE("ad->view_type:%d", ad->view_type);
2104 switch (ad->view_type) {
2105 case SETTING_PW_TYPE_RESET:
2106 case SETTING_PW_TYPE_CLEAR:
2107 case SETTING_PW_TYPE_POWER_ON_LOCK:
2108 case SETTING_PW_TYPE_PHONE_LOCK:
2109 case SETTING_PW_TYPE_LOCK_FOR_APP:
2110 ret = setting_password_main_check_1line_password(ad);
2112 if (ret == SETTING_RETURN_SUCCESS) {
2113 const char *entry_str;
2114 entry_str = ad->ed_pw1->sub_desc;
2116 ret = setting_password_check_password(entry_str);
2117 if(ret == SETTING_RETURN_SUCCESS)
2123 if (SETTING_PW_TYPE_PHONE_LOCK == ad->view_type) {
2125 setting_get_bool_slp_key(BOOL_SLP_SETTING_POWER_ON_LOCK, &value, &err);
2128 ret = setting_set_bool_slp_key(BOOL_SLP_SETTING_POWER_ON_LOCK,
2129 SETTING_ON_OFF_BTN_ON, &err);
2131 ret = setting_set_bool_slp_key(BOOL_SLP_SETTING_POWER_ON_LOCK,
2132 SETTING_ON_OFF_BTN_OFF, &err);
2135 setting_set_int_slp_key(INT_SLP_SETTING_PHONE_LOCK_ATTEMPTS_LEFT,
2136 PHONE_LOCK_ATTEMPS_MAX, &err);
2137 setting_retm_if(err == SETTING_RETURN_FAIL, "[Error] set value of vconf fail.");
2139 /* Correct Password. Send Bundle to caller for status change */
2140 b = bundle_create();
2144 bundle_add(b, "result", ad->view_type_string);
2145 ug_send_result(ad->ug, b);
2146 SETTING_TRACE("Send Result : %s\n", ad->view_type_string);
2148 /* Send destroy request */
2149 ug_destroy_me(ad->ug);
2151 /* Incorrect Password. Display Popup. */
2152 setting_password_main_clear_1line_password(ad);
2153 ad->focus_data = ad->ed_pw1;
2154 if (SETTING_PW_TYPE_PHONE_LOCK == ad->view_type) {
2155 setting_password_ug_check_attemps_left(ad);
2158 setting_password_ug_display_desc(ad, PW_ERR_DESC, FALSE);
2162 setting_password_main_clear_1line_password(ad);
2166 case SETTING_PW_TYPE_SIMPLE_PASSWORD:
2167 if(ad->is_simple_password_on == 0) /* OFF -> ON */
2169 SETTING_TRACE("case SIMPLE_PASSWORD OFF->ON");
2170 ret = setting_password_main_check_1line_password(ad);
2172 if (ret == SETTING_RETURN_SUCCESS) {
2173 const char *entry_str = ad->ed_pw1->sub_desc;
2175 ret = setting_password_check_password(entry_str);
2176 if(ret == SETTING_RETURN_SUCCESS)
2178 ad->cur_pwd = (char*)strdup(entry_str);
2180 elm_genlist_clear(ad->scroller);
2181 /* disable "Done" button of navigation bar */
2183 if (ad->ly_main != NULL) {
2184 evas_object_del(ad->ly_main);
2186 __create_common_password_frame(ad);
2187 setting_password_main_draw_simple_password(ad, 1);
2190 /* Incorrect Password. Display Popup. */
2191 setting_password_main_clear_1line_password(ad);
2192 ad->focus_data = ad->ed_pw1;
2193 setting_password_ug_display_desc(ad, PW_ERR_DESC, FALSE);
2198 setting_password_main_clear_1line_password(ad);
2201 else if(ad->is_simple_password_on == 1) /* ON -> OFF */
2203 SETTING_TRACE("case SIMPLE_PASSWORD ON->OFF");
2204 ret = setting_password_main_check_2line_password(ad);
2206 if (SETTING_RETURN_SUCCESS == ret) {
2207 const char *entry_str;
2208 entry_str = ad->ed_pw1->sub_desc;
2210 if (isEmptyStr(entry_str)) {
2211 ad->focus_data = ad->ed_pw1;
2212 SETTING_TRACE_DEBUG("%s*** [ERR] elm_entry_entry_get return NULL ***%s",
2213 SETTING_FONT_RED, SETTING_FONT_BLACK);
2214 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2218 ret = setting_password_set_password(ad->cur_pwd, entry_str, ad);
2221 /* Modify Setting Password */
2222 if (SETTING_RETURN_FAIL != ret) {
2224 /* set vconfkey OFF */
2225 if(vconf_set_bool(VCONFKEY_SETAPPL_STATE_SIMPLE_PASSWORD_BOOL, 0) < 0)
2226 vconf_set_bool(VCONFKEY_SETAPPL_STATE_SIMPLE_PASSWORD_BOOL, 0);
2227 setting_password_ug_create_popup_notitle_nobtn(ad,
2228 _("IDS_ST_POP_NEW_PASSWD_SAVED"), TRUE);
2231 ad->focus_data = ad->ed_pw1;
2233 SETTING_TRACE_DEBUG("%s*** [ERR] setting_set_string_slp_key err=%d ***%s",
2234 SETTING_FONT_RED, err, SETTING_FONT_BLACK);
2235 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2239 setting_password_main_clear_2line_password(ad);
2244 case SETTING_PW_TYPE_SET_PASSWORD:
2246 SETTING_TRACE("case SETTING_PW_TYPE_SET_PASSWORD");
2247 ret = setting_password_main_check_2line_password(ad);
2249 if (SETTING_RETURN_SUCCESS == ret) {
2250 const char *entry_str;
2251 entry_str = ad->ed_pw1->sub_desc;
2253 if (isEmptyStr(entry_str)) {
2254 ad->focus_data = ad->ed_pw1;
2255 SETTING_TRACE_DEBUG("%s*** [ERR] elm_entry_entry_get return NULL ***%s",
2256 SETTING_FONT_RED, SETTING_FONT_BLACK);
2257 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2261 ret = setting_password_set_password(NULL, entry_str,ad);
2263 /* Modify Setting Password */
2264 if (SETTING_RETURN_FAIL != ret) {
2265 if (0 == safeStrCmp(ad->view_type_string, "SETTING_PW_TYPE_PHONE_LOCK")) {
2269 ret = setting_set_bool_slp_key(BOOL_SLP_SETTING_POWER_ON_LOCK,
2270 SETTING_ON_OFF_BTN_ON, &err);
2271 retm_if(ret < 0, "[ERR] setting vconfkey failed.");
2273 b = bundle_create();
2277 bundle_add(b, "result", "SETTING_PW_TYPE_PHONE_LOCK");
2278 ug_send_result(ad->ug, b);
2279 SETTING_TRACE("Send Result : %s\n", "SETTING_PW_TYPE_PHONE_LOCK");
2281 ug_destroy_me(ad->ug);
2283 else if ( 0 == safeStrCmp(ad->view_type_string, "SETTING_PW_TYPE_SIMPLE_PASSWORD")){
2284 if (ad->ly_main != NULL) {
2285 evas_object_del(ad->ly_main);
2288 b = bundle_create();
2292 bundle_add(b, "result", "SETTING_PW_TYPE_SET_PASSWORD");
2293 ug_send_result(ad->ug, b);
2294 SETTING_TRACE("Send Result : %s\n", "SETTING_PW_TYPE_SET_PASSWORD");
2296 /* Send destroy request */
2297 ug_destroy_me(ad->ug);
2301 else if ( 0 == safeStrCmp(ad->view_type_string, "SETTING_PW_TYPE_LOCK_FOR_APP")){
2302 if (ad->ly_main != NULL) {
2303 evas_object_del(ad->ly_main);
2306 b = bundle_create();
2310 bundle_add(b, "result", "SETTING_PW_TYPE_LOCK_FOR_APP");
2311 ug_send_result(ad->ug, b);
2312 SETTING_TRACE("Send Result : %s\n", "SETTING_PW_TYPE_LOCK_FOR_APP");
2314 /* Send destroy request */
2315 ug_destroy_me(ad->ug);
2320 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_ST_POP_NEW_PASSWD_SAVED"), TRUE);
2322 ad->focus_data = ad->ed_pw1;
2324 SETTING_TRACE_DEBUG("%s*** [ERR] setting_set_string_slp_key err=%d ***%s",
2325 SETTING_FONT_RED, err, SETTING_FONT_BLACK);
2326 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2330 setting_password_main_clear_2line_password(ad);
2336 case SETTING_PW_TYPE_CHANGE_PASSWORD:
2338 SETTING_TRACE("case SETTING_PW_TYPE_CHANGE_PASSWORD");
2339 ret = setting_password_main_check_3line_password(ad);
2341 if (SETTING_RETURN_SUCCESS == ret) {
2342 const char *entry_str;
2344 entry_str = ad->ed_pw1->sub_desc;
2345 ret = setting_password_check_password(entry_str);
2346 if(ret != SETTING_RETURN_SUCCESS){
2347 setting_password_main_clear_3line_password(ad);
2348 ad->focus_data = ad->ed_pw1;
2349 setting_password_ug_display_desc(ad, PW_ERR_DESC, FALSE);
2353 entry_str = ad->ed_pw2->sub_desc;
2355 if (isEmptyStr(entry_str)) {
2356 ad->focus_data = ad->ed_pw2;
2357 SETTING_TRACE_DEBUG("%s*** [ERR] elm_entry_entry_get(pw2) return NULL ***%s",
2358 SETTING_FONT_RED, SETTING_FONT_BLACK);
2359 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2363 ret = setting_password_set_password(ad->ed_pw1->sub_desc, entry_str, ad);
2365 /* Modify Setting Password */
2366 if (SETTING_RETURN_FAIL != ret) {
2368 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_ST_POP_PASSWORD_CHANGED"), TRUE);
2370 ad->focus_data = ad->ed_pw2;
2372 SETTING_TRACE_DEBUG("%s*** [ERR] setting_set_string_slp_key err=%d ***%s",
2373 SETTING_FONT_RED, err, SETTING_FONT_BLACK);
2374 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2379 setting_password_main_clear_3line_password(ad);
2385 case SETTING_PW_TYPE_PIN_LOCK_ON:
2387 SETTING_TRACE("case SETTING_PW_TYPE_PIN_LOCK_ON");
2389 ret = setting_password_main_check_1line_password(ad);
2390 if (ret == SETTING_RETURN_SUCCESS) {
2391 TelSimSecPw_t sim_sec_data = { 0, };
2392 int tapi_ret = TAPI_API_SUCCESS;
2394 const char *entry_str;
2396 entry_str = ad->ed_pw1->sub_desc;
2397 if (isEmptyStr(entry_str)) {
2398 ad->focus_data = ad->ed_pw1;
2399 SETTING_TRACE_ERROR("[ERR] elm_entry_entry_get(ad->ed_pw1) return NULL!");
2400 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2404 sim_sec_data.type = TAPI_SIM_PTYPE_PIN1;
2405 sim_sec_data.pw = (unsigned char *)entry_str;
2406 sim_sec_data.pw_len = safeStrLen(entry_str);
2408 tapi_ret = tel_enable_sim_security(&sim_sec_data, &ReqId);
2409 setting_password_main_clear_1line_password(ad);
2411 if (TAPI_API_SUCCESS != tapi_ret) {
2412 ad->focus_data = ad->ed_pw1;
2413 SETTING_TRACE_DEBUG("%s*** [ERR] tel_enable_sim_security err=%d ***%s",
2414 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
2415 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2418 /* Success. Send Message to Caller for Modify Pin Lock slider status */
2419 SETTING_TRACE_DEBUG("%s*** [SUCCESS] tel_enable_sim_security err=%d ***%s",
2420 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
2423 setting_password_main_clear_1line_password(ad);
2427 case SETTING_PW_TYPE_PIN_LOCK_OFF:
2429 SETTING_TRACE("case SETTING_PW_TYPE_PIN_LOCK_OFF");
2431 ret = setting_password_main_check_1line_password(ad);
2433 if (ret == SETTING_RETURN_SUCCESS) {
2434 TelSimSecPw_t sim_sec_data = { 0, };
2435 int tapi_ret = TAPI_API_SUCCESS;
2437 const char *entry_str;
2439 entry_str = ad->ed_pw1->sub_desc;
2440 if (isEmptyStr(entry_str)) {
2441 ad->focus_data = ad->ed_pw1;
2442 SETTING_TRACE_ERROR("[ERR] elm_entry_entry_get(ad->ed_pw1) return NULL!");
2443 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2447 sim_sec_data.type = TAPI_SIM_PTYPE_PIN1;
2448 sim_sec_data.pw = (unsigned char *)entry_str;
2449 sim_sec_data.pw_len = safeStrLen(entry_str);
2451 tapi_ret = tel_disable_sim_security(&sim_sec_data, &ReqId);
2452 setting_password_main_clear_1line_password(ad);
2454 if (TAPI_API_SUCCESS != tapi_ret) {
2455 ad->focus_data = ad->ed_pw1;
2456 SETTING_TRACE_DEBUG("%s*** [ERR] tel_disable_sim_security err=%d ***%s",
2457 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
2458 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2461 /* Success. Send Message to Caller for Modify Pin Lock slider status */
2464 setting_password_main_clear_1line_password(ad);
2469 case SETTING_PW_TYPE_PIN1_BLOCKED:
2471 /* PIN1 Status is "Blocked": User should input puk code and new pin1 code. */
2472 /* If puk code is correct and success to modify pin1 code, display pin1 code change popup */
2473 /* But, if this menu is "Pin Lock", pinlock status will not be changed. */
2474 SETTING_TRACE("case SETTING_PW_TYPE_PIN1_BLOCKED");
2475 ret = setting_password_main_check_3line_password(ad);
2477 if (ret == SETTING_RETURN_SUCCESS) {
2478 TelSimSecPw_t puk1_data = { 0, };
2479 TelSimSecPw_t pin1_data = { 0, };
2480 int tapi_ret = TAPI_API_SUCCESS;
2483 const char *new_pin1;
2485 puk = ad->ed_pw1->sub_desc;
2486 new_pin1 = ad->ed_pw2->sub_desc;
2487 if (isEmptyStr(puk)) {
2488 ad->focus_data = ad->ed_pw1;
2489 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2493 if (isEmptyStr(new_pin1)) {
2494 ad->focus_data = ad->ed_pw2;
2495 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2499 puk1_data.type = TAPI_SIM_PTYPE_PUK1;
2500 puk1_data.pw = (unsigned char *)puk;
2501 puk1_data.pw_len = safeStrLen(puk);
2503 pin1_data.type = TAPI_SIM_PTYPE_PIN1;
2504 pin1_data.pw = (unsigned char *)new_pin1;
2505 pin1_data.pw_len = safeStrLen(new_pin1);
2507 tapi_ret = tel_verify_sim_puks(&puk1_data, &pin1_data, &ReqId);
2508 setting_password_main_clear_3line_password(ad);
2510 if (TAPI_API_SUCCESS != tapi_ret) {
2511 ad->focus_data = ad->ed_pw1;
2512 SETTING_TRACE_DEBUG("%s*** [ERR] tel_verify_sim_puks err=%d ***%s",
2513 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
2514 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2517 /* Success. Send Message to Caller for Modify Pin Lock slider status */
2521 setting_password_main_clear_3line_password(ad);
2525 case SETTING_PW_TYPE_PIN2_BLOCKED:
2527 SETTING_TRACE("case SETTING_PW_TYPE_PIN2_BLOCKED");
2528 ret = setting_password_main_check_3line_password(ad);
2530 if (ret == SETTING_RETURN_SUCCESS) {
2531 TelSimSecPw_t puk2_data = { 0, };
2532 TelSimSecPw_t pin2_data = { 0, };
2533 int tapi_ret = TAPI_API_SUCCESS;
2536 const char *new_pin2;
2538 puk = ad->ed_pw1->sub_desc;
2539 new_pin2 = ad->ed_pw2->sub_desc;
2540 if (isEmptyStr(puk)) {
2541 ad->focus_data = ad->ed_pw1;
2542 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2546 if (isEmptyStr(new_pin2)) {
2547 ad->focus_data = ad->ed_pw2;
2548 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2552 puk2_data.type = TAPI_SIM_PTYPE_PUK2;
2553 puk2_data.pw = (unsigned char *)puk;
2554 puk2_data.pw_len = safeStrLen(puk);
2556 pin2_data.type = TAPI_SIM_PTYPE_PIN2;
2557 pin2_data.pw = (unsigned char *)new_pin2;
2558 pin2_data.pw_len = safeStrLen(new_pin2);
2560 tapi_ret = tel_verify_sim_puks(&puk2_data, &pin2_data, &ReqId);
2561 setting_password_main_clear_3line_password(ad);
2563 if (TAPI_API_SUCCESS != tapi_ret) {
2564 ad->focus_data = ad->ed_pw1;
2565 SETTING_TRACE_DEBUG("%s*** [ERR] tel_verify_sim_puks err=%d ***%s",
2566 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
2567 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2570 /* Success. Send Message to Caller for Modify Pin Lock slider status */
2574 setting_password_main_clear_3line_password(ad);
2578 case SETTING_PW_TYPE_CHANGE_PIN1:
2580 SETTING_TRACE("case SETTING_PW_TYPE_CHANGE_PIN1");
2582 ret = setting_password_main_check_3line_password(ad);
2583 if (ret == SETTING_RETURN_SUCCESS) {
2586 TelSimSecPw_t sim_old_sec_data = { 0, };
2587 TelSimSecPw_t sim_new_sec_data = { 0, };
2588 int tapi_ret = TAPI_API_SUCCESS;
2591 old_pw = ad->ed_pw1->sub_desc;
2592 new_pw = ad->ed_pw2->sub_desc;
2593 if (isEmptyStr(old_pw)) {
2594 ad->focus_data = ad->ed_pw1;
2595 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2599 if (isEmptyStr(new_pw)) {
2600 ad->focus_data = ad->ed_pw2;
2601 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2605 sim_old_sec_data.type = sim_new_sec_data.type = TAPI_SIM_PTYPE_PIN1;
2606 sim_old_sec_data.pw = (unsigned char *)old_pw;
2607 sim_old_sec_data.pw_len = safeStrLen(old_pw);
2608 sim_new_sec_data.pw = (unsigned char *)new_pw;
2609 sim_new_sec_data.pw_len = safeStrLen(new_pw);
2611 tapi_ret = tel_change_sim_pins(&sim_old_sec_data, &sim_new_sec_data, &ReqId);
2612 setting_password_main_clear_3line_password(ad);
2614 if (TAPI_API_SUCCESS != tapi_ret) {
2615 ad->focus_data = ad->ed_pw1;
2616 SETTING_TRACE_DEBUG("%s*** [ERR] TelTapiSimChangePIN err=%d ***%s",
2617 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
2618 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2621 /* Success popup and send message to caller */
2622 /* setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_ST_POP_PIN1_CHANGED")); */
2625 setting_password_main_clear_3line_password(ad);
2630 case SETTING_PW_TYPE_CHANGE_PIN2:
2632 SETTING_TRACE("case SETTING_PW_TYPE_CHANGE_PIN2");
2633 ret = setting_password_main_check_3line_password(ad);
2634 if (ret == SETTING_RETURN_SUCCESS) {
2637 TelSimSecPw_t sim_old_sec_data = { 0, };
2638 TelSimSecPw_t sim_new_sec_data = { 0, };
2639 int tapi_ret = TAPI_API_SUCCESS;
2642 old_pw = ad->ed_pw1->sub_desc;
2643 new_pw = ad->ed_pw2->sub_desc;
2644 if (isEmptyStr(old_pw)) {
2645 ad->focus_data = ad->ed_pw1;
2646 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2650 if (isEmptyStr(new_pw)) {
2651 ad->focus_data = ad->ed_pw2;
2652 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2656 sim_old_sec_data.type = sim_new_sec_data.type = TAPI_SIM_PTYPE_PIN2;
2657 sim_old_sec_data.pw = (unsigned char *)old_pw;
2658 sim_old_sec_data.pw_len = safeStrLen(old_pw);
2659 sim_new_sec_data.pw = (unsigned char *)new_pw;
2660 sim_new_sec_data.pw_len = safeStrLen(new_pw);
2662 tapi_ret = tel_change_sim_pins(&sim_old_sec_data, &sim_new_sec_data, &ReqId);
2663 setting_password_main_clear_3line_password(ad);
2665 if (TAPI_API_SUCCESS != tapi_ret) {
2666 ad->focus_data = ad->ed_pw1;
2667 SETTING_TRACE_DEBUG("%s*** [ERR] TelTapiSimChangePIN err=%d ***%s",
2668 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
2669 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2672 /* Success popup and send message to caller */
2673 /* setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_ST_POP_PIN2_CHANGED")); */
2676 setting_password_main_clear_3line_password(ad);
2682 case SETTING_PW_TYPE_SIM_LOCK_ON:
2684 SETTING_TRACE("case SETTING_PW_TYPE_SIM_LOCK_ON");
2686 ret = setting_password_main_check_2line_password(ad);
2688 if (ret == SETTING_RETURN_SUCCESS) {
2689 TelSimSecPw_t sim_sec_data = { 0, };
2690 int tapi_ret = TAPI_API_SUCCESS;
2692 const char *entry_str;
2693 entry_str = ad->ed_pw1->sub_desc;
2694 if (isEmptyStr(entry_str)) {
2695 ad->focus_data = ad->ed_pw1;
2696 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2700 sim_sec_data.type = TAPI_SIM_PTYPE_SIM;
2701 sim_sec_data.pw = (unsigned char *)entry_str;
2702 sim_sec_data.pw_len = safeStrLen(entry_str);
2704 tapi_ret = tel_enable_sim_security(&sim_sec_data, &ReqId);
2705 setting_password_main_clear_2line_password(ad);
2707 SETTING_TRACE("SIM Lock password : %s\n", (char *)(sim_sec_data.pw));
2708 if (TAPI_API_SUCCESS != tapi_ret) {
2709 ad->focus_data = ad->ed_pw1;
2710 SETTING_TRACE_DEBUG("%s*** [ERR] tel_enable_sim_security err=%d ***%s",
2711 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
2712 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2715 /* Success. Send Message to Caller for Modify Pin Lock slider status */
2719 setting_password_main_clear_2line_password(ad);
2724 case SETTING_PW_TYPE_SIM_LOCK_OFF:
2726 SETTING_TRACE("case SETTING_PW_TYPE_SIM_LOCK_OFF");
2728 ret = setting_password_main_check_1line_password(ad);
2729 if (ret == SETTING_RETURN_SUCCESS) {
2730 TelSimSecPw_t sim_sec_data = { 0, };
2731 int tapi_ret = TAPI_API_SUCCESS;
2733 const char *entry_str;
2735 entry_str = ad->ed_pw1->sub_desc;
2736 if (isEmptyStr(entry_str)) {
2737 ad->focus_data = ad->ed_pw1;
2738 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2742 sim_sec_data.type = TAPI_SIM_PTYPE_SIM;
2743 sim_sec_data.pw = (unsigned char *)entry_str;
2744 sim_sec_data.pw_len = safeStrLen(entry_str);
2746 tapi_ret = tel_disable_sim_security(&sim_sec_data, &ReqId);
2747 setting_password_main_clear_1line_password(ad);
2749 if (TAPI_API_SUCCESS != tapi_ret) {
2750 ad->focus_data = ad->ed_pw1;
2751 SETTING_TRACE_DEBUG("%s*** [ERR] tel_disable_sim_security err=%d ***%s",
2752 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
2753 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
2756 /* Success. Send Message to Caller for Modify Pin Lock slider status */
2760 setting_password_main_clear_1line_password(ad);
2766 /* Send destroy request */
2767 ug_destroy_me(ad->ug);