3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Flora License, Version 1.0 (the License);
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://floralicense.org/license/
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an AS IS BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 #include <setting-password.h>
18 //#include <security-server.h>
21 #define UG_MODULE_API __attribute__ ((visibility("default")))
24 static struct _pw_item pw_its[] = {
25 { SETTING_PW_TYPE_SIM_LOCK_ON, "SETTING_PW_TYPE_SIM_LOCK_ON" },
26 { SETTING_PW_TYPE_SIM_LOCK_OFF, "SETTING_PW_TYPE_SIM_LOCK_OFF" },
27 { SETTING_PW_TYPE_PIN_LOCK_ON, "SETTING_PW_TYPE_PIN_LOCK_ON" },
28 { SETTING_PW_TYPE_PIN_LOCK_OFF, "SETTING_PW_TYPE_PIN_LOCK_OFF" },
29 { SETTING_PW_TYPE_CHANGE_PIN1, "SETTING_PW_TYPE_CHANGE_PIN1" },
30 { SETTING_PW_TYPE_CHANGE_PIN2, "SETTING_PW_TYPE_CHANGE_PIN2" },
31 { SETTING_PW_TYPE_PIN1_BLOCKED, "SETTING_PW_TYPE_PIN1_BLOCKED" },
32 { SETTING_PW_TYPE_PIN2_BLOCKED, "SETTING_PW_TYPE_PIN2_BLOCKED" },
33 { SETTING_PW_TYPE_RESET, "SETTING_PW_TYPE_RESET" },
34 { SETTING_PW_TYPE_MAX, NULL }
37 static void setting_tapi_init(SettingPasswordUG *ad);
38 static void setting_password_ug_display_result_popup(tapi_receive_info *result, SettingPasswordUG *ad);
40 static void setting_password_ug_cb_resize(void *data, Evas *e, Evas_Object *obj, void *event_info)
42 SettingPasswordUG *ad = (SettingPasswordUG *) data;
43 setting_view_update(&setting_view_password_main, ad);
46 static void setting_tapi_init(SettingPasswordUG *ad)
49 switch (ad->view_type) {
50 case SETTING_PW_TYPE_SIM_LOCK_ON:
51 case SETTING_PW_TYPE_SIM_LOCK_OFF:
52 case SETTING_PW_TYPE_PIN_LOCK_ON:
53 case SETTING_PW_TYPE_PIN_LOCK_OFF:
54 case SETTING_PW_TYPE_CHANGE_PIN1:
55 case SETTING_PW_TYPE_CHANGE_PIN2:
56 case SETTING_PW_TYPE_PIN1_BLOCKED:
57 case SETTING_PW_TYPE_PIN2_BLOCKED:
58 ad->handle = tel_init(NULL);
60 SETTING_TRACE_DEBUG("%s*** [ERR] tel_init. ***%s",
61 SETTING_FONT_RED, SETTING_FONT_BLACK);
62 setting_password_ug_create_popup_notitle_nobtn(ad,
63 _("IDS_COM_POP_ERROR"),
74 static void setting_tapi_finize(SettingPasswordUG *ad)
77 switch (ad->view_type) {
78 case SETTING_PW_TYPE_SIM_LOCK_ON:
79 case SETTING_PW_TYPE_SIM_LOCK_OFF:
80 case SETTING_PW_TYPE_PIN_LOCK_ON:
81 case SETTING_PW_TYPE_PIN_LOCK_OFF:
82 case SETTING_PW_TYPE_CHANGE_PIN1:
83 case SETTING_PW_TYPE_CHANGE_PIN2:
84 case SETTING_PW_TYPE_PIN1_BLOCKED:
85 case SETTING_PW_TYPE_PIN2_BLOCKED:
86 if (tel_deinit(ad->handle) != TAPI_API_SUCCESS) {
88 ("%s*** [ERR] setting_network_unsubscribe_tapi_events. ***%s",
89 SETTING_FONT_RED, SETTING_FONT_BLACK);
90 setting_password_ug_create_popup_notitle_nobtn(ad,
91 _("IDS_COM_POP_ERROR"),
101 setting_pw_type __get_password_view_type(SettingPasswordUG *ad, service_h service)
105 service_get_extra_data(service, "viewtype", &(ad->view_type_string));
107 SETTING_TRACE("viewtype:%s", ad->view_type_string);
108 setting_pw_type ret_pw_type = 0;
111 for(i = 0; i < SETTING_PW_TYPE_MAX; i++)
113 if (0 == safeStrCmp(ad->view_type_string, pw_its[i].pw_type_string))
115 ret_pw_type = pw_its[i].pw_type_num;
125 static char *__gl_err_desc_text_get(void *data, Evas_Object *obj, const char *part)
127 retv_if(data == NULL, NULL);
128 char buf[256] = {0,};
130 snprintf(buf, sizeof(buf)-1, "<font color=#ff0000>%s</font>", (char*)data);
135 static void *setting_password_ug_on_create(ui_gadget_h ug,
136 enum ug_mode mode, service_h service,
139 setting_retvm_if((!priv), NULL, "!priv");
141 SettingPasswordUG *passwordUG = (SettingPasswordUG *)priv;
143 passwordUG->win_main_layout = (Evas_Object *) ug_get_parent_layout(ug);
144 passwordUG->win_get = (Evas_Object *) ug_get_window();
145 evas_object_show(passwordUG->win_main_layout);
146 passwordUG->evas = evas_object_evas_get(passwordUG->win_main_layout);
148 setting_retvm_if(passwordUG->win_main_layout == NULL, NULL,
149 "cannot get main window ");
151 /* --------------------------------------------------------- */
152 char *pa_path = NULL;;
154 pa_path = vconf_get_str(VCONFKEY_LANGSET);
157 ("%s*** language setting has no proper value (nil) ***%s",
158 SETTING_FONT_BGREEN, SETTING_FONT_BLACK);
162 setting_set_i18n(SETTING_PACKAGE, SETTING_LOCALEDIR);
165 setting_create_Gendial_itc("dialogue/title", &(passwordUG->itc_title));
166 setting_create_Gendial_itc("dialogue/1icon",&(passwordUG->itc_variable_height));
167 passwordUG->itc_seperator.item_style = "dialogue/separator";
168 passwordUG->itc_seperator.func.text_get = NULL;
169 passwordUG->itc_seperator.func.content_get = NULL;
170 passwordUG->itc_seperator.func.state_get = NULL;
171 passwordUG->itc_seperator.func.del = NULL;
173 passwordUG->itc_err_desc.item_style = "multiline/1text";
174 passwordUG->itc_err_desc.func.text_get = __gl_err_desc_text_get;
175 passwordUG->itc_err_desc.func.content_get = NULL;
176 passwordUG->itc_err_desc.func.state_get = NULL;
177 passwordUG->itc_err_desc.func.del = NULL;
180 passwordUG->view_type = __get_password_view_type(passwordUG, service);
181 setting_tapi_init(passwordUG);
183 /* creating a view. */
184 setting_view_create(&setting_view_password_main,(void *)passwordUG);
185 evas_object_event_callback_add(passwordUG->win_main_layout,
186 EVAS_CALLBACK_RESIZE,
187 setting_password_ug_cb_resize,
189 return passwordUG->ly_main;
192 static void setting_password_ug_on_start(ui_gadget_h ug, service_h service, void *priv)
196 static void setting_password_ug_on_pause(ui_gadget_h ug, service_h service, void *priv)
200 static void setting_password_ug_on_resume(ui_gadget_h ug, service_h service, void *priv)
204 static void setting_password_ug_on_destroy(ui_gadget_h ug, service_h service, void *priv)
206 SettingPasswordUG *passwordUG = (SettingPasswordUG *)priv;
208 evas_object_event_callback_del(passwordUG->win_main_layout, EVAS_CALLBACK_RESIZE, setting_password_ug_cb_resize); /* fix flash issue for gallery */
210 setting_tapi_finize(passwordUG);
212 if (passwordUG->t_info) {
213 FREE(passwordUG->t_info);
215 if(passwordUG->remove_timer)
217 ecore_timer_del(passwordUG->remove_timer);
218 passwordUG->remove_timer = NULL;
221 /* delete the allocated objects. */
222 setting_view_destroy(&setting_view_password_main, passwordUG);
223 if (NULL != ug_get_layout(passwordUG->ug)) {
224 evas_object_hide((Evas_Object *) ug_get_layout(passwordUG->ug));
225 evas_object_del((Evas_Object *) ug_get_layout(passwordUG->ug));
229 static void setting_password_ug_on_message(ui_gadget_h ug, service_h msg,
230 service_h service, void *priv)
235 static void setting_password_ug_on_event(ui_gadget_h ug,
236 enum ug_event event, service_h service,
242 SettingPasswordUG *ad = (SettingPasswordUG*)priv;
245 case UG_EVENT_LOW_MEMORY:
247 case UG_EVENT_LOW_BATTERY:
249 case UG_EVENT_LANG_CHANGE:
251 case UG_EVENT_ROTATE_PORTRAIT:
252 case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
253 case UG_EVENT_ROTATE_LANDSCAPE:
254 case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
256 SETTING_TRACE_DEBUG("get rotation event");
259 if (ad->ed_pw1->isFocusFlag || (ad->ed_pw1->eo_check != NULL))
261 SETTING_TRACE_DEBUG("set focus");
262 /* no matter how many edifileds, it only need focus on 1st editfiled */
263 elm_object_focus_set(ad->ed_pw1->eo_check, EINA_TRUE);
264 elm_entry_cursor_end_set(ad->ed_pw1->eo_check);
269 case UG_EVENT_REGION_CHANGE:
276 static void setting_password_ug_on_key_event(ui_gadget_h ug,
277 enum ug_key_event event,
278 service_h service, void *priv)
283 SettingPasswordUG *ad = (SettingPasswordUG*)priv;
286 case UG_KEY_EVENT_END:
289 ecore_timer_del(ad->remove_timer);
290 ad->remove_timer = NULL;
299 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
301 SettingPasswordUG *passwordUG = calloc(1, sizeof(SettingPasswordUG));
302 setting_retvm_if(!passwordUG, -1, "Create SettingPasswordUG obj failed");
304 ops->create = setting_password_ug_on_create;
305 ops->start = setting_password_ug_on_start;
306 ops->pause = setting_password_ug_on_pause;
307 ops->resume = setting_password_ug_on_resume;
308 ops->destroy = setting_password_ug_on_destroy;
309 ops->message = setting_password_ug_on_message;
310 ops->event = setting_password_ug_on_event;
311 ops->key_event = setting_password_ug_on_key_event;
312 ops->priv = passwordUG;
313 ops->opt = UG_OPT_INDICATOR_ENABLE;
315 memset(passwordUG, 0x00, sizeof(SettingPasswordUG));
320 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
323 struct SettingPasswordUG *passwordUG;
324 setting_retm_if(!ops, "ops == NULL");
326 passwordUG = ops->priv;
331 void setting_get_sim_lock_info_cb(TapiHandle *handle, int result, void *data, void *user_data)
334 ret_if(data == NULL || user_data == NULL);
336 TelSimPinOperationResult_t sec_rt = result;
337 TelSimLockInfo_t *lock = data;
339 SettingPasswordUG *ad = (SettingPasswordUG *)user_data;
341 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);
343 char temp[256] ={0,};
344 if(lock->retry_count > 1)
345 snprintf(temp, 256, _(ATTEMPTS_DESC), lock->retry_count);
346 else if(lock->retry_count > 0)
347 snprintf(temp, 256, _(ATTEMPT_DESC), lock->retry_count);
351 elm_object_item_del(ad->err_desc);
355 ad->err_desc = elm_genlist_item_append(ad->scroller, &(ad->itc_err_desc), temp, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
358 void setting_get_pin_lock_info_cb(TapiHandle *handle, int result, void *data, void *user_data)
362 TelSimPinOperationResult_t sec_rt = result;
363 TelSimLockInfo_t *lock = data;
365 SettingPasswordUG *ad = (SettingPasswordUG *)user_data;
367 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);
369 char temp[256] ={0,};
370 if(lock->retry_count > 1)
371 snprintf(temp, 256, _(ATTEMPTS_DESC), lock->retry_count);
372 else if(lock->retry_count > 0)
373 snprintf(temp, 256, _(ATTEMPT_DESC), lock->retry_count);
377 elm_object_item_del(ad->err_desc);
381 ad->err_desc = elm_genlist_item_append(ad->scroller, &(ad->itc_err_desc), temp, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
384 void setting_sim_change_pins_cb(TapiHandle *handle, int result, void *data, void *user_data)
387 ret_if(!user_data || !data);
388 TelSimPinOperationResult_t sec_rt = result;
389 tapi_receive_info result_info = { 0, };
390 TelSimSecResult_t *sim_event_data = (TelSimSecResult_t *) data;
391 SETTING_TRACE("sec_rt[%d]", sec_rt);
392 SETTING_TRACE("sim_event_data->type:%d", sim_event_data->type);
393 SETTING_TRACE("sim_event_data->retry_count[%d]", sim_event_data->retry_count);
395 if (TAPI_SIM_PIN_OPERATION_SUCCESS == sec_rt) {
396 if (TAPI_SIM_PTYPE_PIN1 == sim_event_data->type)
397 result_info.stat = SIM_PIN1_CHANGE_SUCCESS;
398 else if (TAPI_SIM_PTYPE_PIN2 == sim_event_data->type)
399 result_info.stat = SIM_PIN2_CHANGE_SUCCESS;
400 } else if (TAPI_SIM_PIN_INCORRECT_PASSWORD == sec_rt) {
401 if (TAPI_SIM_PTYPE_PIN1 == sim_event_data->type) {
402 result_info.stat = SIM_INCORRECT_PIN1_CODE;
403 result_info.retry_cnt = sim_event_data->retry_count;
404 } else if (TAPI_SIM_PTYPE_PIN2 == sim_event_data->type) {
405 result_info.stat = SIM_INCORRECT_PIN2_CODE;
406 result_info.retry_cnt = sim_event_data->retry_count;
408 } else if (TAPI_SIM_PUK_REQUIRED == sec_rt) {
409 if (TAPI_SIM_PTYPE_PIN1 == sim_event_data->type)
410 result_info.stat = SIM_PIN1_BLOCKED;
411 else if (TAPI_SIM_PTYPE_PIN2 == sim_event_data->type)
412 result_info.stat = SIM_PIN2_BLOCKED;
415 ("%s*** [ERR] INCORRECTED ***%s",
416 SETTING_FONT_RED, SETTING_FONT_BLACK);
419 setting_password_ug_display_result_popup(&result_info, user_data);
422 void setting_sim_verify_puks_cb(TapiHandle *handle, int result, void *data, void *user_data)
426 ret_if(!user_data || !data);
427 SettingPasswordUG *ad = user_data;
428 TelSimPinOperationResult_t sec_rt = result;
429 tapi_receive_info result_info = { 0, };
430 TelSimSecResult_t *sim_event_data = (TelSimSecResult_t *) data;
431 ad->verify_puks_result = sim_event_data;
432 SETTING_TRACE("sec_rt[%d]", sec_rt);
433 SETTING_TRACE("sim_event_data->type:%d", sim_event_data->type);
434 SETTING_TRACE("sim_event_data->retry_count[%d]", sim_event_data->retry_count);
436 if (TAPI_SIM_PTYPE_PUK1 == sim_event_data->type)
438 //if (TAPI_SIM_PIN_REQUIRED == sec_rt){
439 if (TAPI_SIM_PIN_OPERATION_SUCCESS == sec_rt){
440 SETTING_TRACE_DEBUG("SIM_PIN1_UNBLOCKED");
441 safeCopyStr(ad->view_type_string, "SETTING_PW_TYPE_PIN1_UNBLOCKED", sizeof("SETTING_PW_TYPE_PIN1_UNBLOCKED")+1);
442 setting_password_ug_create_popup_notitle_nobtn(ad, _("Verfy PUK1 Sucessfully"), TRUE);
444 } else if (TAPI_SIM_PIN_INCORRECT_PASSWORD == sec_rt) {
445 result_info.stat = SIM_INCORRECT_PUK1_CODE;
446 result_info.retry_cnt = sim_event_data->retry_count;
448 result_info.stat = SIM_UNKNOWN_ERROR;
452 else if (TAPI_SIM_PTYPE_PUK2 == sim_event_data->type)
454 //if (TAPI_SIM_PUK_REQUIRED == sec_rt)
455 if (TAPI_SIM_PIN_OPERATION_SUCCESS == sec_rt){
456 SETTING_TRACE_DEBUG("SIM_PIN2_UNBLOCKED");
457 safeCopyStr(ad->view_type_string, "SETTING_PW_TYPE_PIN2_UNBLOCKED", sizeof("SETTING_PW_TYPE_PIN2_UNBLOCKED")+1);
458 setting_password_ug_create_popup_notitle_nobtn(ad, _("Verfy PUK2 Sucessfully"), TRUE);
460 } else if (TAPI_SIM_PUK_INCORRECT_PASSWORD == sec_rt) {
461 result_info.stat = SIM_INCORRECT_PUK2_CODE;
462 result_info.retry_cnt = sim_event_data->retry_count;
464 result_info.stat = SIM_UNKNOWN_ERROR;
469 result_info.stat = SIM_UNKNOWN_ERROR;
471 setting_password_ug_display_result_popup(&result_info, user_data);
474 void setting_sim_facility_enable_cb(TapiHandle *handle, int result, void *data, void *user_data)
477 ret_if(!user_data || !data);
478 TelSimPinOperationResult_t sec_rt = result;
479 tapi_receive_info result_info = { 0, };
480 TelSimFacilityResult_t *sim_event_data = (TelSimFacilityResult_t *) data;
482 SETTING_TRACE("sec_rt[%d]", sec_rt);
483 SETTING_TRACE("sim_event_data->type:%d", sim_event_data->type);
484 SETTING_TRACE("sim_event_data->retry_count[%d]", sim_event_data->retry_count);
487 if (TAPI_SIM_LOCK_PS == sim_event_data->type) {
488 SETTING_TRACE("CASE TAPI_SIM_PTYPE_SIM == sim_event_data->type");
489 if (TAPI_SIM_PIN_OPERATION_SUCCESS == sec_rt)
490 result_info.stat = SIM_LOCK_ON_SUCCESS;
491 else if (TAPI_SIM_PIN_INCORRECT_PASSWORD == sec_rt)
492 result_info.stat = SIM_LOCK_INCORRECT_PASSWORD;
494 SETTING_TRACE_DEBUG("%s*** [ERR] INCORRECTED ***%s",
501 else if (TAPI_SIM_LOCK_SC == sim_event_data->type) {
502 SETTING_TRACE("CASE TAPI_SIM_PTYPE_PIN1 == sim_event_data->type");
503 if (TAPI_SIM_PIN_OPERATION_SUCCESS == sec_rt)
504 result_info.stat = SIM_PIN_LOCK_ON_SUCCESS;
505 else if (TAPI_SIM_PIN_INCORRECT_PASSWORD == sec_rt) {
506 result_info.stat = SIM_INCORRECT_PIN1_CODE;
507 result_info.retry_cnt = sim_event_data->retry_count;
508 } else if (TAPI_SIM_PUK_REQUIRED == sec_rt)
509 result_info.stat = SIM_PIN1_BLOCKED;
512 else if (TAPI_SIM_INCOMPATIBLE_PIN_OPERATION == sec_rt
513 || TAPI_SIM_CARD_ERROR == sec_rt) {
515 result_info.stat = SIM_OPERATION_UNAVAILABLE;
519 ("%s*** [ERR] INCORRECTED ***%s",
525 setting_password_ug_display_result_popup(&result_info, user_data);
527 void setting_sim_facility_disable_cb(TapiHandle *handle, int result, void *data, void *user_data)
530 ret_if(!user_data || !data);
531 TelSimPinOperationResult_t sec_rt = result;
532 tapi_receive_info result_info = { 0, };
533 TelSimFacilityResult_t *sim_event_data = (TelSimFacilityResult_t *) data;
534 SETTING_TRACE("sec_rt[%d]", sec_rt);
535 SETTING_TRACE("sim_event_data->type:%d", sim_event_data->type);
536 SETTING_TRACE("sim_event_data->retry_count[%d]", sim_event_data->retry_count);
539 if (TAPI_SIM_LOCK_PS == sim_event_data->type) {
540 SETTING_TRACE_DEBUG("SIM lOCK");
541 if (TAPI_SIM_PIN_OPERATION_SUCCESS == sec_rt)
542 result_info.stat = SIM_LOCK_OFF_SUCCESS;
543 else if (TAPI_SIM_PIN_INCORRECT_PASSWORD == sec_rt)
544 result_info.stat = SIM_LOCK_INCORRECT_PASSWORD;
547 ("%s*** [ERR] INCORRECTED ***%s",
554 else if (TAPI_SIM_LOCK_SC == sim_event_data->type) {
555 SETTING_TRACE_DEBUG("PIN LOCK");
556 if (TAPI_SIM_PIN_OPERATION_SUCCESS == sec_rt)
557 result_info.stat = SIM_PIN_LOCK_OFF_SUCCESS;
558 else if (TAPI_SIM_PIN_INCORRECT_PASSWORD == sec_rt) {
559 result_info.stat = SIM_INCORRECT_PIN1_CODE;
560 result_info.retry_cnt = sim_event_data->retry_count;
561 } else if (TAPI_SIM_PUK_REQUIRED == sec_rt)
562 result_info.stat = SIM_PIN1_BLOCKED;
565 else if (TAPI_SIM_INCOMPATIBLE_PIN_OPERATION == sec_rt
566 || TAPI_SIM_CARD_ERROR == sec_rt) {
568 result_info.stat = SIM_OPERATION_UNAVAILABLE;
572 ("%s*** [ERR] INCORRECTED ***%s",
578 setting_password_ug_display_result_popup(&result_info, user_data);
581 static void setting_password_ug_display_result_popup(tapi_receive_info *result,
582 SettingPasswordUG *ad)
585 switch (result->stat) {
586 case SIM_OPERATION_OK:
587 case SIM_LOCK_ON_SUCCESS:
588 case SIM_LOCK_OFF_SUCCESS:
589 case SIM_PIN_LOCK_ON_SUCCESS:
590 case SIM_PIN_LOCK_OFF_SUCCESS:
593 SETTING_PW_TYPE_SIM_LOCK_OFF) {
594 int err = SETTING_RETURN_SUCCESS;
596 setting_set_int_slp_key
597 (INT_SLP_SETTING_SIM_LOCK_ATTEMPTS_LEFT,
598 SIM_LOCK_ATTEMPS_MAX, &err);
599 setting_retm_if(err == SETTING_RETURN_FAIL,
600 "[Error] set value of vconf fail.");
602 /* Success to Operate */
604 if (service_create(&svc))
607 service_add_extra_data(svc, "result", ad->view_type_string);
608 ug_send_result(ad->ug, svc);
609 SETTING_TRACE("Send Result : %s\n", ad->view_type_string);
611 service_destroy(svc);
612 /* Send destroy request */
613 ug_destroy_me(ad->ug);
616 case SIM_LOCK_INCORRECT_PASSWORD:
618 SETTING_TRACE_DEBUG("SIM LOCK INCORRECT PASSWORD");
619 ad->focus_data = ad->ed_pw1;
620 setting_password_ug_display_desc(ad, PW_ERR_DESC, FALSE);
623 case SIM_INCORRECT_PIN1_CODE:
625 const char *ret_str = NULL;
626 char tmp_str[SETTING_STR_SLP_LEN] = {0,};
628 if (result->retry_cnt > 1) {
629 /* there has '%d' in 'IDS_ST_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT', must transform */
630 int ret = snprintf(tmp_str, SETTING_STR_SLP_LEN, PIN_ERR_DESC, result->retry_cnt);
631 setting_retm_if(ret < 0, "snprintf fail");
634 int ret = snprintf(tmp_str, SETTING_STR_SLP_LEN, PIN_ERR_DESC, result->retry_cnt);
635 setting_retm_if(ret < 0, "snprintf fail");
637 ret_str = _("IDS_ST_POP_INCORRECT_PIN1_ATTEMPT_LEFT");
639 ad->focus_data = ad->ed_pw1;
641 setting_password_ug_display_desc(ad, (char *)ret_str, FALSE);
645 case SIM_INCORRECT_PIN2_CODE:
647 char *ret_str = NULL;
648 char tmp_str[SETTING_STR_SLP_LEN] = {0,};
650 if (result->retry_cnt > 1) {
651 /* there has '%d' in 'IDS_ST_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT', must transform */
652 int ret = snprintf(tmp_str, SETTING_STR_SLP_LEN, PIN_ERR_DESC, result->retry_cnt);
653 setting_retm_if(ret < 0, "snprintf fail");
656 ret_str = _("IDS_ST_POP_INCORRECT_PIN1_ATTEMPT_LEFT");
658 ad->focus_data = ad->ed_pw1;
660 setting_password_ug_display_desc(ad, ret_str, FALSE);
664 case SIM_INCORRECT_PUK1_CODE:
666 char *ret_str = NULL;
667 char tmp_str[SETTING_STR_SLP_LEN] = {0,};
669 if (result->retry_cnt > 1) {
670 /* there has '%d' in 'IDS_ST_POP_INCORRECT_PUK1_PD_ATTEMPTS_LEFT', must transform */
671 int ret = snprintf(tmp_str, SETTING_STR_SLP_LEN, PUK1_ERR_DESC, result->retry_cnt);
672 setting_retm_if(ret < 0, "snprintf fail");
675 ret_str = _("IDS_ST_POP_INCORRECT_PUK1_CODE");
677 ad->focus_data = ad->ed_pw1;
679 setting_password_ug_display_desc(ad, ret_str, FALSE);
683 case SIM_INCORRECT_PUK2_CODE:
685 char *ret_str = NULL;
686 char tmp_str[SETTING_STR_SLP_LEN] = {0,};
687 if (result->retry_cnt > 1) {
688 /* there has '%d' in 'IDS_ST_POP_INCORRECT_PUK2_PD_ATTEMPTS_LEFT', must transform*/
689 int ret = snprintf(tmp_str, SETTING_STR_SLP_LEN, PUK2_ERR_DESC, result->retry_cnt);
690 setting_retm_if(ret < 0, "snprintf fail");
693 ret_str = _("IDS_ST_POP_INCORRECT_PUK2");
695 ad->focus_data = ad->ed_pw1;
697 setting_password_ug_display_desc(ad, ret_str, FALSE);
701 case SIM_PIN1_CHANGE_SUCCESS:
702 setting_password_ug_create_popup_notitle_nobtn(ad,
703 _("IDS_ST_POP_PIN1_CHANGED"), TRUE);
705 case SIM_PIN2_CHANGE_SUCCESS:
706 setting_password_ug_create_popup_notitle_nobtn(ad,
707 _("IDS_ST_POP_PIN2_CHANGED"), TRUE);
709 case SIM_PIN1_BLOCKED:
710 SETTING_TRACE_DEBUG("SIM_PIN1_BLOCKED");
711 ad->view_type = SETTING_PW_TYPE_PIN1_BLOCKED;
712 safeCopyStr(ad->view_type_string, "SETTING_PW_TYPE_PIN1_BLOCKED", safeStrLen("SETTING_PW_TYPE_PIN1_BLOCKED")+1);
713 setting_password_ug_create_popup_notitle_nobtn(ad,
714 _("IDS_ST_POP_PIN1_BLOCKED"), FALSE);
716 case SIM_PIN2_BLOCKED:
717 SETTING_TRACE_DEBUG("SIM_PIN2_BLOCKED");
718 ad->view_type = SETTING_PW_TYPE_PIN2_BLOCKED;
719 safeCopyStr(ad->view_type_string, "SETTING_PW_TYPE_PIN2_BLOCKED", safeStrLen("SETTING_PW_TYPE_PIN2_BLOCKED")+1);
720 setting_password_ug_create_popup_notitle_nobtn(ad,
721 _("IDS_ST_POP_PIN2_BLOCKED"), FALSE);
723 case SIM_PIN1_UNBLOCKED:
724 SETTING_TRACE_DEBUG("SIM_PIN1_UNBLOCKED");
725 safeCopyStr(ad->view_type_string, "SETTING_PW_TYPE_PIN_LOCK_ON", sizeof("SETTING_PW_TYPE_PIN_LOCK_ON")+1);
726 setting_password_ug_create_popup_notitle_nobtn(ad,
727 _("IDS_ST_POP_PIN_UNBLOCKED"), TRUE);
729 case SIM_PIN2_UNBLOCKED:
730 setting_password_ug_create_popup_notitle_nobtn(ad,
731 _("IDS_ST_POP_PIN2_UNBLOCKED"), TRUE);
733 case SIM_PUK1_BLOCKED:
734 setting_password_ug_create_popup_notitle_nobtn(ad,
735 _("IDS_ST_BODY_PUK1_BLOCKED"), TRUE);
736 /* Phone blocked. Call Permernent UG */
738 case SIM_PUK2_BLOCKED:
739 setting_password_ug_create_popup_notitle_nobtn(ad,
740 _("IDS_ST_BODY_PUK2_BLOCKED"), TRUE);
741 /* Call Permernent UG */
743 case SIM_REQUIRED_PUK_CODE:
744 SETTING_TRACE_DEBUG("SIM_REQUIRED_PUK_CODE");
745 safeCopyStr(ad->view_type_string, "SETTING_PW_TYPE_PIN1_BLOCKED", sizeof("SETTING_PW_TYPE_PIN1_BLOCKED")+1);
746 setting_password_ug_create_popup_notitle_nobtn(ad,
747 _("IDS_ST_POP_PIN1_BLOCKED"), TRUE);
749 case SIM_OPERATION_UNAVAILABLE:
750 setting_password_ug_create_popup_notitle_nobtn(ad,
751 _("IDS_ST_HEADER_UNAVAILABLE"), TRUE);
753 case SIM_UNKNOWN_ERROR:
754 setting_password_ug_create_popup_notitle_nobtn(ad,
755 _("IDS_ST_POP_UNKNOWN_OPERATION"), FALSE);
759 case SIM_OPERATION_OFF:
760 case SIM_LOCK_ON_FAIL:
761 SETTING_TRACE_DEBUG("SIM_LOCK_ON_FAIL");
763 int err = SETTING_RETURN_SUCCESS;
765 if(result->retry_cnt > 0)
767 setting_password_ug_display_desc(ad, PW_ERR_DESC, FALSE);
771 char tmp_str[SETTING_STR_SLP_LEN] = {0,};
772 int ret = snprintf(tmp_str, SETTING_STR_SLP_LEN, PW_ERR_DELAY_DESC, PW_ERR_DELAY_TIME);
773 safeCopyStr(ad->view_type_string, "SETTING_PW_TYPE_SIM_LOCK_DISABLE", sizeof("SETTING_PW_TYPE_SIM_LOCK_DISABLE")+1);
774 setting_password_ug_create_popup_notitle_nobtn(ad, tmp_str, TRUE);
778 case SIM_PIN1_CHANGE_FAIL:
779 case SIM_PIN2_CHANGE_FAIL:
780 setting_password_ug_create_popup_notitle_nobtn(ad,
781 _("Change Failed"), TRUE);
790 void setting_password_ug_popup_resp_cb(void *data, Evas_Object *obj,
793 retm_if(data == NULL, "Data parameter is NULL");
796 SettingPasswordUG *ad = (SettingPasswordUG *) data;
798 /* Success to Operate */
800 if (service_create(&svc))
803 service_add_extra_data(svc, "result", ad->view_type_string);
804 ug_send_result(ad->ug, svc);
805 SETTING_TRACE("Send Result : %s\n", ad->view_type_string);
807 service_destroy(svc);
808 /* Send destroy request */
809 ug_destroy_me(ad->ug);
811 char *diable_view_type = NULL;
812 if (ad->view_type == SETTING_PW_TYPE_PIN1_BLOCKED)
814 setting_view_destroy(&setting_view_password_main, ad);
815 setting_view_create(&setting_view_password_main, ad);
818 else if (ad->view_type == SETTING_PW_TYPE_PIN2_BLOCKED)
820 setting_view_destroy(&setting_view_password_main, ad);
821 setting_view_create(&setting_view_password_main, ad);
825 if (ad->disable_item_type == SETTING_PW_TYPE_SIM_LOCK_OFF) {
826 diable_view_type = "SETTING_PW_TYPE_SIM_LOCK_DISABLE";
829 if (diable_view_type) {
830 /* Success to Operate */
832 if (service_create(&svc))
835 service_add_extra_data(svc, "result", diable_view_type);
836 ug_send_result(ad->ug, svc);
838 service_destroy(svc);
839 /* Send destroy request */
840 ug_destroy_me(ad->ug);
842 if (ad->focus_data) {
843 ad->focus_data->isFocusFlag = TRUE;
844 elm_object_item_data_set(ad->focus_data->item, ad->focus_data);
845 elm_genlist_item_update(ad->focus_data->item);
849 static Eina_Bool __remove_desc(void *data)
852 retv_if(data == NULL, EINA_FALSE);
854 SettingPasswordUG *ad = (SettingPasswordUG *)data;
858 elm_object_item_del(ad->err_desc);
864 ecore_timer_del(ad->remove_timer);
865 ad->remove_timer = NULL;
869 /* Success to Operate */
872 if (service_create(&svc))
875 service_add_extra_data(svc, "result", ad->view_type_string);
876 ug_send_result(ad->ug, svc);
877 SETTING_TRACE("Send Result : %s\n", ad->view_type_string);
879 service_destroy(svc);
880 /* Send destroy request */
881 ug_destroy_me(ad->ug);
883 char *diable_view_type = NULL;
884 if (ad->disable_item_type == SETTING_PW_TYPE_SIM_LOCK_OFF) {
885 diable_view_type = "SETTING_PW_TYPE_SIM_LOCK_DISABLE";
888 if (diable_view_type) {
889 /* Success to Operate */
892 if (service_create(&svc))
895 service_add_extra_data(svc, "result", diable_view_type);
896 ug_send_result(ad->ug, svc);
898 service_destroy(svc);
899 /* Send destroy request */
900 ug_destroy_me(ad->ug);
903 return ECORE_CALLBACK_CANCEL;
906 void setting_password_ug_display_desc(void *data, char *desc, int destroy)
909 ret_if(data == NULL || desc == NULL);
911 SettingPasswordUG *ad = (SettingPasswordUG *)data;
914 if(ad->view_type == SETTING_PW_TYPE_MDM_NEW_POLICY)
918 ad->destroy = destroy;
920 if(ad->scroller == NULL)
925 elm_object_item_del(ad->err_desc);
929 ad->err_desc = elm_genlist_item_append(ad->scroller, &(ad->itc_err_desc), desc, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
930 ad->remove_timer = ecore_timer_add(2.0, __remove_desc, ad);
932 /* if pw incorrect, show keyboard again. */
935 SETTING_TRACE_DEBUG("FOCUS IN");
936 ad->ed_pw1->isFocusFlag = TRUE;
937 elm_object_focus_set(ad->ed_pw1->eo_check, EINA_TRUE);
942 setting_password_ug_create_popup_notitle_nobtn(void *data, char *str,
946 retm_if(data == NULL, "Data parameter is NULL");
948 SettingPasswordUG *ad = (SettingPasswordUG *) data;
950 ad->destroy = destroy;
953 evas_object_del(ad->notify);
956 ad->notify = setting_create_popup_without_btn(ad, ad->ly_main, NULL, str,
957 setting_password_ug_popup_resp_cb,
958 POPUP_INTERVAL, FALSE, FALSE);