4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
6 * Contact: MyoungJune Park <mj2004.park@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
21 #include <setting-password.h>
22 #include <security-server.h>
25 #define UG_MODULE_API __attribute__ ((visibility("default")))
28 static struct _pw_item pw_its[] = {
29 { SETTING_PW_TYPE_SIM_LOCK_ON, "SETTING_PW_TYPE_SIM_LOCK_ON" },
30 { SETTING_PW_TYPE_SIM_LOCK_OFF, "SETTING_PW_TYPE_SIM_LOCK_OFF" },
31 { SETTING_PW_TYPE_PIN_LOCK_ON, "SETTING_PW_TYPE_PIN_LOCK_ON" },
32 { SETTING_PW_TYPE_PIN_LOCK_OFF, "SETTING_PW_TYPE_PIN_LOCK_OFF" },
33 { SETTING_PW_TYPE_CHANGE_PIN1, "SETTING_PW_TYPE_CHANGE_PIN1" },
34 { SETTING_PW_TYPE_CHANGE_PIN2, "SETTING_PW_TYPE_CHANGE_PIN2" },
35 { SETTING_PW_TYPE_PIN1_BLOCKED, "SETTING_PW_TYPE_PIN1_BLOCKED" },
36 { SETTING_PW_TYPE_PIN2_BLOCKED, "SETTING_PW_TYPE_PIN2_BLOCKED" },
37 { SETTING_PW_TYPE_RESET, "SETTING_PW_TYPE_RESET" },
38 { SETTING_PW_TYPE_MAX, NULL }
41 static void setting_tapi_init(SettingPasswordUG *ad);
42 static void setting_password_ug_display_result_popup(tapi_receive_info *result, SettingPasswordUG *ad);
44 static void setting_password_ug_cb_resize(void *data, Evas *e, Evas_Object *obj, void *event_info)
46 SettingPasswordUG *ad = (SettingPasswordUG *) data;
47 setting_view_update(&setting_view_password_main, ad);
50 static void setting_tapi_init(SettingPasswordUG *ad)
53 switch (ad->view_type) {
54 case SETTING_PW_TYPE_SIM_LOCK_ON:
55 case SETTING_PW_TYPE_SIM_LOCK_OFF:
56 case SETTING_PW_TYPE_PIN_LOCK_ON:
57 case SETTING_PW_TYPE_PIN_LOCK_OFF:
58 case SETTING_PW_TYPE_CHANGE_PIN1:
59 case SETTING_PW_TYPE_CHANGE_PIN2:
60 case SETTING_PW_TYPE_PIN1_BLOCKED:
61 case SETTING_PW_TYPE_PIN2_BLOCKED:
62 ad->handle = tel_init(NULL);
64 SETTING_TRACE_DEBUG("%s*** [ERR] tel_init. ***%s",
65 SETTING_FONT_RED, SETTING_FONT_BLACK);
66 setting_password_ug_create_popup_notitle_nobtn(ad,
67 _("IDS_COM_POP_ERROR"),
78 static void setting_tapi_finize(SettingPasswordUG *ad)
81 switch (ad->view_type) {
82 case SETTING_PW_TYPE_SIM_LOCK_ON:
83 case SETTING_PW_TYPE_SIM_LOCK_OFF:
84 case SETTING_PW_TYPE_PIN_LOCK_ON:
85 case SETTING_PW_TYPE_PIN_LOCK_OFF:
86 case SETTING_PW_TYPE_CHANGE_PIN1:
87 case SETTING_PW_TYPE_CHANGE_PIN2:
88 case SETTING_PW_TYPE_PIN1_BLOCKED:
89 case SETTING_PW_TYPE_PIN2_BLOCKED:
90 if (tel_deinit(ad->handle) != TAPI_API_SUCCESS) {
92 ("%s*** [ERR] setting_network_unsubscribe_tapi_events. ***%s",
93 SETTING_FONT_RED, SETTING_FONT_BLACK);
94 setting_password_ug_create_popup_notitle_nobtn(ad,
95 _("IDS_COM_POP_ERROR"),
105 setting_pw_type __get_password_view_type(SettingPasswordUG *ad, service_h service)
109 service_get_extra_data(service, "viewtype", &(ad->view_type_string));
111 SETTING_TRACE("viewtype:%s", ad->view_type_string);
112 setting_pw_type ret_pw_type = 0;
115 for(i = 0; i < SETTING_PW_TYPE_MAX; i++)
117 if (0 == safeStrCmp(ad->view_type_string, pw_its[i].pw_type_string))
119 ret_pw_type = pw_its[i].pw_type_num;
129 static char *__gl_err_desc_text_get(void *data, Evas_Object *obj, const char *part)
131 retv_if(data == NULL, NULL);
132 char buf[256] = {0,};
134 snprintf(buf, sizeof(buf)-1, "<font color=#ff0000>%s</font>", (char*)data);
139 static void *setting_password_ug_on_create(ui_gadget_h ug,
140 enum ug_mode mode, service_h service,
143 setting_retvm_if((!priv), NULL, "!priv");
145 SettingPasswordUG *passwordUG = (SettingPasswordUG *)priv;
147 passwordUG->win_main_layout = (Evas_Object *) ug_get_parent_layout(ug);
148 passwordUG->win_get = (Evas_Object *) ug_get_window();
149 evas_object_show(passwordUG->win_main_layout);
150 passwordUG->evas = evas_object_evas_get(passwordUG->win_main_layout);
152 setting_retvm_if(passwordUG->win_main_layout == NULL, NULL,
153 "cannot get main window ");
155 /* --------------------------------------------------------- */
156 char *pa_path = NULL;;
158 pa_path = vconf_get_str(VCONFKEY_LANGSET);
161 ("%s*** language setting has no proper value (nil) ***%s",
162 SETTING_FONT_BGREEN, SETTING_FONT_BLACK);
166 setting_set_i18n(SETTING_PACKAGE, SETTING_LOCALEDIR);
169 setting_create_Gendial_itc("dialogue/1icon",&(passwordUG->itc_variable_height));
170 passwordUG->itc_seperator.item_style = "dialogue/separator/21/with_line";
171 passwordUG->itc_seperator.func.text_get = NULL;
172 passwordUG->itc_seperator.func.content_get = NULL;
173 passwordUG->itc_seperator.func.state_get = NULL;
174 passwordUG->itc_seperator.func.del = NULL;
176 passwordUG->itc_err_desc.item_style = "multiline/1text";
177 passwordUG->itc_err_desc.func.text_get = __gl_err_desc_text_get;
178 passwordUG->itc_err_desc.func.content_get = NULL;
179 passwordUG->itc_err_desc.func.state_get = NULL;
180 passwordUG->itc_err_desc.func.del = NULL;
183 passwordUG->view_type = __get_password_view_type(passwordUG, service);
184 setting_tapi_init(passwordUG);
186 /* creating a view. */
187 setting_view_create(&setting_view_password_main,(void *)passwordUG);
188 evas_object_event_callback_add(passwordUG->win_main_layout,
189 EVAS_CALLBACK_RESIZE,
190 setting_password_ug_cb_resize,
192 return passwordUG->ly_main;
195 static void setting_password_ug_on_start(ui_gadget_h ug, service_h service, void *priv)
199 static void setting_password_ug_on_pause(ui_gadget_h ug, service_h service, void *priv)
203 static void setting_password_ug_on_resume(ui_gadget_h ug, service_h service, void *priv)
207 static void setting_password_ug_on_destroy(ui_gadget_h ug, service_h service, void *priv)
209 SettingPasswordUG *passwordUG = (SettingPasswordUG *)priv;
211 evas_object_event_callback_del(passwordUG->win_main_layout, EVAS_CALLBACK_RESIZE, setting_password_ug_cb_resize); /* fix flash issue for gallery */
213 setting_tapi_finize(passwordUG);
215 if (passwordUG->t_info) {
216 FREE(passwordUG->t_info);
218 if(passwordUG->remove_timer)
220 ecore_timer_del(passwordUG->remove_timer);
221 passwordUG->remove_timer = NULL;
224 /* delete the allocated objects. */
225 setting_view_destroy(&setting_view_password_main, passwordUG);
226 if (NULL != ug_get_layout(passwordUG->ug)) {
227 evas_object_hide((Evas_Object *) ug_get_layout(passwordUG->ug));
228 evas_object_del((Evas_Object *) ug_get_layout(passwordUG->ug));
232 static void setting_password_ug_on_message(ui_gadget_h ug, service_h msg,
233 service_h service, void *priv)
238 static void setting_password_ug_on_event(ui_gadget_h ug,
239 enum ug_event event, service_h service,
243 case UG_EVENT_LOW_MEMORY:
245 case UG_EVENT_LOW_BATTERY:
247 case UG_EVENT_LANG_CHANGE:
249 case UG_EVENT_ROTATE_PORTRAIT:
251 case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
253 case UG_EVENT_ROTATE_LANDSCAPE:
255 case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
257 case UG_EVENT_REGION_CHANGE:
264 static void setting_password_ug_on_key_event(ui_gadget_h ug,
265 enum ug_key_event event,
266 service_h service, void *priv)
271 SettingPasswordUG *ad = (SettingPasswordUG*)priv;
274 case UG_KEY_EVENT_END:
277 ecore_timer_del(ad->remove_timer);
278 ad->remove_timer = NULL;
287 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
289 SettingPasswordUG *passwordUG = calloc(1, sizeof(SettingPasswordUG));
290 setting_retvm_if(!passwordUG, -1, "Create SettingPasswordUG obj failed");
292 ops->create = setting_password_ug_on_create;
293 ops->start = setting_password_ug_on_start;
294 ops->pause = setting_password_ug_on_pause;
295 ops->resume = setting_password_ug_on_resume;
296 ops->destroy = setting_password_ug_on_destroy;
297 ops->message = setting_password_ug_on_message;
298 ops->event = setting_password_ug_on_event;
299 ops->key_event = setting_password_ug_on_key_event;
300 ops->priv = passwordUG;
301 ops->opt = UG_OPT_INDICATOR_ENABLE;
306 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
308 struct SettingPasswordUG *passwordUG;
309 setting_retm_if(!ops, "ops == NULL");
311 passwordUG = ops->priv;
316 void setting_sim_change_pins_cb(TapiHandle *handle, int result, void *data, void *user_data)
319 ret_if(!user_data || !data);
320 TelSimPinOperationResult_t sec_rt = result;
321 tapi_receive_info result_info = { 0, };
322 TelSimSecResult_t *sim_event_data = (TelSimSecResult_t *) data;
323 SETTING_TRACE("sec_rt[%d]", sec_rt);
324 SETTING_TRACE("sim_event_data->type:%d", sim_event_data->type);
325 SETTING_TRACE("sim_event_data->retry_count[%d]", sim_event_data->retry_count);
327 if (TAPI_SIM_PIN_OPERATION_SUCCESS == sec_rt) {
328 if (TAPI_SIM_PTYPE_PIN1 == sim_event_data->type)
329 result_info.stat = SIM_PIN1_CHANGE_SUCCESS;
330 else if (TAPI_SIM_PTYPE_PIN2 == sim_event_data->type)
331 result_info.stat = SIM_PIN2_CHANGE_SUCCESS;
332 } else if (TAPI_SIM_PIN_INCORRECT_PASSWORD == sec_rt) {
333 if (TAPI_SIM_PTYPE_PIN1 == sim_event_data->type) {
334 result_info.stat = SIM_INCORRECT_PIN1_CODE;
335 result_info.retry_cnt = sim_event_data->retry_count;
336 } else if (TAPI_SIM_PTYPE_PIN2 == sim_event_data->type) {
337 result_info.stat = SIM_INCORRECT_PIN2_CODE;
338 result_info.retry_cnt = sim_event_data->retry_count;
340 } else if (TAPI_SIM_PUK_REQUIRED == sec_rt) {
341 if (TAPI_SIM_PTYPE_PIN1 == sim_event_data->type)
342 result_info.stat = SIM_PIN1_BLOCKED;
343 else if (TAPI_SIM_PTYPE_PIN2 == sim_event_data->type)
344 result_info.stat = SIM_PIN2_BLOCKED;
347 ("%s*** [ERR] INCORRECTED ***%s",
348 SETTING_FONT_RED, SETTING_FONT_BLACK);
351 setting_password_ug_display_result_popup(&result_info, user_data);
354 void setting_sim_verify_puks_cb(TapiHandle *handle, int result, void *data, void *user_data)
358 ret_if(!user_data || !data);
359 SettingPasswordUG *ad = user_data;
360 TelSimPinOperationResult_t sec_rt = result;
361 tapi_receive_info result_info = { 0, };
362 TelSimSecResult_t *sim_event_data = (TelSimSecResult_t *) data;
363 ad->verify_puks_result = sim_event_data;
364 SETTING_TRACE("sec_rt[%d]", sec_rt);
365 SETTING_TRACE("sim_event_data->type:%d", sim_event_data->type);
366 SETTING_TRACE("sim_event_data->retry_count[%d]", sim_event_data->retry_count);
368 if (TAPI_SIM_PTYPE_PUK1 == sim_event_data->type)
370 if (TAPI_SIM_PIN_OPERATION_SUCCESS == sec_rt){
371 SETTING_TRACE_DEBUG("SIM_PIN1_UNBLOCKED");
372 safeCopyStr(ad->view_type_string, "SETTING_PW_TYPE_PIN1_UNBLOCKED", sizeof("SETTING_PW_TYPE_PIN1_UNBLOCKED")+1);
373 setting_password_ug_create_popup_notitle_nobtn(ad, _("Verfy PUK1 Sucessfully"), TRUE);
375 } else if (TAPI_SIM_PIN_INCORRECT_PASSWORD == sec_rt) {
376 result_info.stat = SIM_INCORRECT_PUK1_CODE;
377 result_info.retry_cnt = sim_event_data->retry_count;
379 result_info.stat = SIM_UNKNOWN_ERROR;
383 else if (TAPI_SIM_PTYPE_PUK2 == sim_event_data->type)
385 if (TAPI_SIM_PIN_OPERATION_SUCCESS == sec_rt){
386 SETTING_TRACE_DEBUG("SIM_PIN2_UNBLOCKED");
387 safeCopyStr(ad->view_type_string, "SETTING_PW_TYPE_PIN2_UNBLOCKED", sizeof("SETTING_PW_TYPE_PIN2_UNBLOCKED")+1);
388 setting_password_ug_create_popup_notitle_nobtn(ad, _("Verfy PUK2 Sucessfully"), TRUE);
390 } else if (TAPI_SIM_PUK_INCORRECT_PASSWORD == sec_rt) {
391 result_info.stat = SIM_INCORRECT_PUK2_CODE;
392 result_info.retry_cnt = sim_event_data->retry_count;
394 result_info.stat = SIM_UNKNOWN_ERROR;
399 result_info.stat = SIM_UNKNOWN_ERROR;
401 setting_password_ug_display_result_popup(&result_info, user_data);
404 void setting_sim_facility_enable_cb(TapiHandle *handle, int result, void *data, void *user_data)
407 ret_if(!user_data || !data);
408 TelSimPinOperationResult_t sec_rt = result;
409 tapi_receive_info result_info = { 0, };
410 TelSimFacilityResult_t *sim_event_data = (TelSimFacilityResult_t *) data;
412 SETTING_TRACE("sec_rt[%d]", sec_rt);
413 SETTING_TRACE("sim_event_data->type:%d", sim_event_data->type);
414 SETTING_TRACE("sim_event_data->retry_count[%d]", sim_event_data->retry_count);
417 if (TAPI_SIM_LOCK_PS == sim_event_data->type) {
418 SETTING_TRACE("CASE TAPI_SIM_PTYPE_SIM == sim_event_data->type");
419 if (TAPI_SIM_PIN_OPERATION_SUCCESS == sec_rt)
420 result_info.stat = SIM_LOCK_ON_SUCCESS;
421 else if (TAPI_SIM_PIN_INCORRECT_PASSWORD == sec_rt)
422 result_info.stat = SIM_LOCK_INCORRECT_PASSWORD;
424 SETTING_TRACE_DEBUG("%s*** [ERR] INCORRECTED ***%s",
431 else if (TAPI_SIM_LOCK_SC == sim_event_data->type) {
432 SETTING_TRACE("CASE TAPI_SIM_PTYPE_PIN1 == sim_event_data->type");
433 if (TAPI_SIM_PIN_OPERATION_SUCCESS == sec_rt)
434 result_info.stat = SIM_PIN_LOCK_ON_SUCCESS;
435 else if (TAPI_SIM_PIN_INCORRECT_PASSWORD == sec_rt) {
436 result_info.stat = SIM_INCORRECT_PIN1_CODE;
437 result_info.retry_cnt = sim_event_data->retry_count;
438 } else if (TAPI_SIM_PUK_REQUIRED == sec_rt)
439 result_info.stat = SIM_PIN1_BLOCKED;
442 else if (TAPI_SIM_INCOMPATIBLE_PIN_OPERATION == sec_rt
443 || TAPI_SIM_CARD_ERROR == sec_rt) {
445 result_info.stat = SIM_OPERATION_UNAVAILABLE;
449 ("%s*** [ERR] INCORRECTED ***%s",
455 setting_password_ug_display_result_popup(&result_info, user_data);
457 void setting_sim_facility_disable_cb(TapiHandle *handle, int result, void *data, void *user_data)
460 ret_if(!user_data || !data);
461 TelSimPinOperationResult_t sec_rt = result;
462 tapi_receive_info result_info = { 0, };
463 TelSimFacilityResult_t *sim_event_data = (TelSimFacilityResult_t *) data;
464 SETTING_TRACE("sec_rt[%d]", sec_rt);
465 SETTING_TRACE("sim_event_data->type:%d", sim_event_data->type);
466 SETTING_TRACE("sim_event_data->retry_count[%d]", sim_event_data->retry_count);
469 if (TAPI_SIM_LOCK_PS == sim_event_data->type) {
470 SETTING_TRACE_DEBUG("SIM lOCK");
471 if (TAPI_SIM_PIN_OPERATION_SUCCESS == sec_rt)
472 result_info.stat = SIM_LOCK_OFF_SUCCESS;
473 else if (TAPI_SIM_PIN_INCORRECT_PASSWORD == sec_rt)
474 result_info.stat = SIM_LOCK_INCORRECT_PASSWORD;
477 ("%s*** [ERR] INCORRECTED ***%s",
484 else if (TAPI_SIM_LOCK_SC == sim_event_data->type) {
485 SETTING_TRACE_DEBUG("PIN LOCK");
486 if (TAPI_SIM_PIN_OPERATION_SUCCESS == sec_rt)
487 result_info.stat = SIM_PIN_LOCK_OFF_SUCCESS;
488 else if (TAPI_SIM_PIN_INCORRECT_PASSWORD == sec_rt) {
489 result_info.stat = SIM_INCORRECT_PIN1_CODE;
490 result_info.retry_cnt = sim_event_data->retry_count;
491 } else if (TAPI_SIM_PUK_REQUIRED == sec_rt)
492 result_info.stat = SIM_PIN1_BLOCKED;
495 else if (TAPI_SIM_INCOMPATIBLE_PIN_OPERATION == sec_rt
496 || TAPI_SIM_CARD_ERROR == sec_rt) {
498 result_info.stat = SIM_OPERATION_UNAVAILABLE;
502 ("%s*** [ERR] INCORRECTED ***%s",
508 setting_password_ug_display_result_popup(&result_info, user_data);
511 static void setting_password_ug_display_result_popup(tapi_receive_info *result,
512 SettingPasswordUG *ad)
514 switch (result->stat) {
515 case SIM_OPERATION_OK:
516 case SIM_LOCK_ON_SUCCESS:
517 case SIM_LOCK_OFF_SUCCESS:
518 case SIM_PIN_LOCK_ON_SUCCESS:
519 case SIM_PIN_LOCK_OFF_SUCCESS:
522 SETTING_PW_TYPE_SIM_LOCK_OFF) {
523 int err = SETTING_RETURN_SUCCESS;
525 setting_set_int_slp_key
526 (INT_SLP_SETTING_SIM_LOCK_ATTEMPTS_LEFT,
527 SIM_LOCK_ATTEMPS_MAX, &err);
528 setting_retm_if(err == SETTING_RETURN_FAIL,
529 "[Error] set value of vconf fail.");
531 /* Success to Operate */
533 if (service_create(&svc))
536 service_add_extra_data(svc, "result", ad->view_type_string);
537 ug_send_result(ad->ug, svc);
538 SETTING_TRACE("Send Result : %s\n", ad->view_type_string);
540 service_destroy(svc);
541 /* Send destroy request */
542 ug_destroy_me(ad->ug);
545 case SIM_LOCK_INCORRECT_PASSWORD:
546 ad->focus_data = ad->ed_pw1;
547 setting_password_ug_check_attemps_left(ad);
549 case SIM_INCORRECT_PIN1_CODE:
551 const char *ret_str = NULL;
552 char tmp_str[SETTING_STR_SLP_LEN] = {0,};
554 if (result->retry_cnt > 1) {
555 /* there has '%d' in 'IDS_ST_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT', must transform */
556 int ret = snprintf(tmp_str, SETTING_STR_SLP_LEN, PIN_ERR_DESC, result->retry_cnt);
557 setting_retm_if(ret < 0, "snprintf fail");
560 int ret = snprintf(tmp_str, SETTING_STR_SLP_LEN, PIN_ERR_DESC, result->retry_cnt);
561 setting_retm_if(ret < 0, "snprintf fail");
563 ret_str = _("IDS_ST_POP_INCORRECT_PIN1_ATTEMPT_LEFT");
565 ad->focus_data = ad->ed_pw1;
567 setting_password_ug_display_desc(ad, (char *)ret_str, FALSE);
571 case SIM_INCORRECT_PIN2_CODE:
573 char *ret_str = NULL;
574 char tmp_str[SETTING_STR_SLP_LEN] = {0,};
576 if (result->retry_cnt > 1) {
577 /* there has '%d' in 'IDS_ST_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT', must transform */
578 int ret = snprintf(tmp_str, SETTING_STR_SLP_LEN, PIN_ERR_DESC, result->retry_cnt);
579 setting_retm_if(ret < 0, "snprintf fail");
582 ret_str = _("IDS_ST_POP_INCORRECT_PIN1_ATTEMPT_LEFT");
584 ad->focus_data = ad->ed_pw1;
586 setting_password_ug_display_desc(ad, ret_str, FALSE);
590 case SIM_INCORRECT_PUK1_CODE:
592 char *ret_str = NULL;
593 char tmp_str[SETTING_STR_SLP_LEN] = {0,};
595 if (result->retry_cnt > 1) {
596 /* there has '%d' in 'IDS_ST_POP_INCORRECT_PUK1_PD_ATTEMPTS_LEFT', must transform */
597 int ret = snprintf(tmp_str, SETTING_STR_SLP_LEN, PUK1_ERR_DESC, result->retry_cnt);
598 setting_retm_if(ret < 0, "snprintf fail");
601 ret_str = _("IDS_ST_POP_INCORRECT_PUK1_CODE");
603 ad->focus_data = ad->ed_pw1;
605 setting_password_ug_display_desc(ad, ret_str, FALSE);
609 case SIM_INCORRECT_PUK2_CODE:
611 char *ret_str = NULL;
612 char tmp_str[SETTING_STR_SLP_LEN] = {0,};
613 if (result->retry_cnt > 1) {
614 /* there has '%d' in 'IDS_ST_POP_INCORRECT_PUK2_PD_ATTEMPTS_LEFT', must transform*/
615 int ret = snprintf(tmp_str, SETTING_STR_SLP_LEN, PUK2_ERR_DESC, result->retry_cnt);
616 setting_retm_if(ret < 0, "snprintf fail");
619 ret_str = _("IDS_ST_POP_INCORRECT_PUK2");
621 ad->focus_data = ad->ed_pw1;
623 setting_password_ug_display_desc(ad, ret_str, FALSE);
627 case SIM_PIN1_CHANGE_SUCCESS:
628 setting_password_ug_create_popup_notitle_nobtn(ad,
629 _("IDS_ST_POP_PIN1_CHANGED"), TRUE);
631 case SIM_PIN2_CHANGE_SUCCESS:
632 setting_password_ug_create_popup_notitle_nobtn(ad,
633 _("IDS_ST_POP_PIN2_CHANGED"), TRUE);
635 case SIM_PIN1_BLOCKED:
636 SETTING_TRACE_DEBUG("SIM_PIN1_BLOCKED");
637 ad->view_type = SETTING_PW_TYPE_PIN1_BLOCKED;
638 safeCopyStr(ad->view_type_string, "SETTING_PW_TYPE_PIN1_BLOCKED", safeStrLen("SETTING_PW_TYPE_PIN1_BLOCKED")+1);
639 setting_password_ug_create_popup_notitle_nobtn(ad,
640 _("IDS_ST_POP_PIN1_BLOCKED"), FALSE);
642 case SIM_PIN2_BLOCKED:
643 SETTING_TRACE_DEBUG("SIM_PIN2_BLOCKED");
644 ad->view_type = SETTING_PW_TYPE_PIN2_BLOCKED;
645 safeCopyStr(ad->view_type_string, "SETTING_PW_TYPE_PIN2_BLOCKED", safeStrLen("SETTING_PW_TYPE_PIN2_BLOCKED")+1);
646 setting_password_ug_create_popup_notitle_nobtn(ad,
647 _("IDS_ST_POP_PIN2_BLOCKED"), FALSE);
649 case SIM_PIN1_UNBLOCKED:
650 SETTING_TRACE_DEBUG("SIM_PIN1_UNBLOCKED");
651 safeCopyStr(ad->view_type_string, "SETTING_PW_TYPE_PIN_LOCK_ON", sizeof("SETTING_PW_TYPE_PIN_LOCK_ON")+1);
652 setting_password_ug_create_popup_notitle_nobtn(ad,
653 _("IDS_ST_POP_PIN_UNBLOCKED"), TRUE);
655 case SIM_PIN2_UNBLOCKED:
656 setting_password_ug_create_popup_notitle_nobtn(ad,
657 _("IDS_ST_POP_PIN2_UNBLOCKED"), TRUE);
659 case SIM_PUK1_BLOCKED:
660 setting_password_ug_create_popup_notitle_nobtn(ad,
661 _("IDS_ST_BODY_PUK1_BLOCKED"), TRUE);
662 /* Phone blocked. Call Permernent UG */
664 case SIM_PUK2_BLOCKED:
665 setting_password_ug_create_popup_notitle_nobtn(ad,
666 _("IDS_ST_BODY_PUK2_BLOCKED"), TRUE);
667 /* Call Permernent UG */
669 case SIM_REQUIRED_PUK_CODE:
670 SETTING_TRACE_DEBUG("SIM_REQUIRED_PUK_CODE");
671 safeCopyStr(ad->view_type_string, "SETTING_PW_TYPE_PIN1_BLOCKED", sizeof("SETTING_PW_TYPE_PIN1_BLOCKED")+1);
672 setting_password_ug_create_popup_notitle_nobtn(ad,
673 _("IDS_ST_POP_PIN1_BLOCKED"), TRUE);
675 case SIM_OPERATION_UNAVAILABLE:
676 setting_password_ug_create_popup_notitle_nobtn(ad,
677 _("IDS_ST_HEADER_UNAVAILABLE"), TRUE);
679 case SIM_UNKNOWN_ERROR:
680 setting_password_ug_create_popup_notitle_nobtn(ad,
681 _("IDS_ST_POP_UNKNOWN_OPERATION"), FALSE);
685 case SIM_OPERATION_OFF:
686 case SIM_LOCK_ON_FAIL:
687 SETTING_TRACE_DEBUG("SIM_LOCK_ON_FAIL");
689 int err = SETTING_RETURN_SUCCESS;
691 if(result->retry_cnt > 0)
693 setting_password_ug_display_desc(ad, PW_ERR_DESC, FALSE);
697 char tmp_str[SETTING_STR_SLP_LEN] = {0,};
698 int ret = snprintf(tmp_str, SETTING_STR_SLP_LEN, PW_ERR_DELAY_DESC, PW_ERR_DELAY_TIME);
699 safeCopyStr(ad->view_type_string, "SETTING_PW_TYPE_SIM_LOCK_DISABLE", sizeof("SETTING_PW_TYPE_SIM_LOCK_DISABLE")+1);
700 setting_password_ug_create_popup_notitle_nobtn(ad, tmp_str, TRUE);
703 case SIM_PIN1_CHANGE_FAIL:
704 case SIM_PIN2_CHANGE_FAIL:
705 setting_password_ug_create_popup_notitle_nobtn(ad,
706 _("Change Failed"), TRUE);
715 void setting_password_ug_popup_resp_cb(void *data, Evas_Object *obj,
718 retm_if(data == NULL, "Data parameter is NULL");
721 SettingPasswordUG *ad = (SettingPasswordUG *) data;
723 /* Success to Operate */
725 if (service_create(&svc))
728 service_add_extra_data(svc, "result", ad->view_type_string);
729 ug_send_result(ad->ug, svc);
730 SETTING_TRACE("Send Result : %s\n", ad->view_type_string);
732 service_destroy(svc);
733 /* Send destroy request */
734 ug_destroy_me(ad->ug);
736 char *diable_view_type = NULL;
737 if (ad->view_type == SETTING_PW_TYPE_PIN1_BLOCKED)
739 setting_view_destroy(&setting_view_password_main, ad);
740 setting_view_create(&setting_view_password_main, ad);
743 else if (ad->view_type == SETTING_PW_TYPE_PIN2_BLOCKED)
745 setting_view_destroy(&setting_view_password_main, ad);
746 setting_view_create(&setting_view_password_main, ad);
750 if (ad->disable_item_type == SETTING_PW_TYPE_SIM_LOCK_OFF) {
751 diable_view_type = "SETTING_PW_TYPE_SIM_LOCK_DISABLE";
754 if (diable_view_type) {
755 /* Success to Operate */
757 if (service_create(&svc))
760 service_add_extra_data(svc, "result", diable_view_type);
761 ug_send_result(ad->ug, svc);
763 service_destroy(svc);
764 /* Send destroy request */
765 ug_destroy_me(ad->ug);
767 if (ad->focus_data) {
768 ad->focus_data->isFocusFlag = TRUE;
769 elm_object_item_data_set(ad->focus_data->item, ad->focus_data);
770 elm_genlist_item_update(ad->focus_data->item);
774 static Eina_Bool __remove_desc(void *data)
777 retv_if(data == NULL, EINA_FALSE);
779 SettingPasswordUG *ad = (SettingPasswordUG *)data;
783 elm_object_item_del(ad->err_desc);
789 ecore_timer_del(ad->remove_timer);
790 ad->remove_timer = NULL;
794 /* Success to Operate */
797 if (service_create(&svc))
800 service_add_extra_data(svc, "result", ad->view_type_string);
801 ug_send_result(ad->ug, svc);
802 SETTING_TRACE("Send Result : %s\n", ad->view_type_string);
804 service_destroy(svc);
805 /* Send destroy request */
806 ug_destroy_me(ad->ug);
808 char *diable_view_type = NULL;
809 if (ad->disable_item_type == SETTING_PW_TYPE_SIM_LOCK_OFF) {
810 diable_view_type = "SETTING_PW_TYPE_SIM_LOCK_DISABLE";
813 if (diable_view_type) {
814 /* Success to Operate */
817 if (service_create(&svc))
820 service_add_extra_data(svc, "result", diable_view_type);
821 ug_send_result(ad->ug, svc);
823 service_destroy(svc);
824 /* Send destroy request */
825 ug_destroy_me(ad->ug);
828 return ECORE_CALLBACK_CANCEL;
831 void setting_password_ug_display_desc(void *data, char *desc, int destroy)
834 ret_if(data == NULL || desc == NULL);
836 SettingPasswordUG *ad = (SettingPasswordUG *)data;
839 if(ad->view_type == SETTING_PW_TYPE_MDM_NEW_POLICY)
843 ad->destroy = destroy;
845 if(ad->scroller == NULL)
850 elm_object_item_del(ad->err_desc);
854 ad->err_desc = elm_genlist_item_append(ad->scroller, &(ad->itc_err_desc), desc, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
855 ad->remove_timer = ecore_timer_add(2.0, __remove_desc, ad);
857 /* if pw incorrect, show keyboard again. */
860 SETTING_TRACE_DEBUG("FOCUS IN");
861 ad->ed_pw1->isFocusFlag = TRUE;
862 elm_object_focus_set(ad->ed_pw1->eo_check, EINA_TRUE);
867 setting_password_ug_create_popup_notitle_nobtn(void *data, char *str,
871 retm_if(data == NULL, "Data parameter is NULL");
873 SettingPasswordUG *ad = (SettingPasswordUG *) data;
875 ad->destroy = destroy;
878 evas_object_del(ad->notify);
881 ad->notify = setting_create_popup_without_btn(ad, ad->ly_main, NULL, str,
882 setting_password_ug_popup_resp_cb,
883 POPUP_INTERVAL, FALSE, FALSE);