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-common-data-type.h>
22 #include <setting-common-data-slp-setting.h>
23 #include <setting-common-draw-widget.h>
24 #include <setting-common-view.h>
26 #include <setting-locktype-main.h>
27 #include <security-server.h>
28 #include <pkgmgr-info.h>
30 #include <efl_assist.h>
31 #if SUPPORT_ENCRYPTION
38 #if SUPPORT_FINGERPRINT
39 #include <fingerprint_manager.h>
44 static int setting_locktype_main_create(void *cb);
45 static int setting_locktype_main_destroy(void *cb);
46 static int setting_locktype_main_update(void *cb);
47 static int setting_locktype_main_cleanup(void *cb);
48 static void __record_btn_click_cb(void *data, Evas_Object *obj, void *event_info);
49 setting_view setting_view_locktype_main = {
50 .create = setting_locktype_main_create,
51 .destroy = setting_locktype_main_destroy,
52 .update = setting_locktype_main_update,
53 .cleanup = setting_locktype_main_cleanup,
56 openlock_appdata *lockapp_data = NULL;
58 /* ***************************************************
62 ****************************************************/
64 static int __get_lockapp_index_from_appname(char *app_name)
68 return SETTING_RETURN_FAIL;
70 openlock_appdata *item = lockapp_data;
71 for(; item != NULL; item = item->next)
73 if(safeStrCmp(item->app_name, app_name) == 0)
76 return SETTING_RETURN_FAIL;
78 static char* __get_lockapp_pkgname_from_appname(char *app_name)
84 openlock_appdata *item = lockapp_data;
85 for(; item != NULL; item = item->next)
87 if(safeStrCmp(item->app_name, app_name) == 0)
88 return item->pkg_name;
93 int __get_appinfo_cb(pkgmgrinfo_appinfo_h appinfo, void *user_data)
98 SETTING_TRACE_DEBUG("handle is NULL");
102 openlock_appdata *item = lockapp_data;
103 openlock_appdata *new_item = NULL;
104 char *app_name = NULL;
106 ail_appinfo_h handle;
109 ret = pkgmgrinfo_appinfo_get_appid(appinfo, &app_id);
112 SETTING_TRACE_DEBUG("pkgmgrinfo_appinfo_get_appid() returns error");
118 SETTING_TRACE_DEBUG("app_id is NULL");
122 SETTING_TRACE_DEBUG("app_id %s", app_id);
124 ret = ail_get_appinfo(app_id, &handle);
125 if(ret != AIL_ERROR_OK)
127 SETTING_TRACE_DEBUG("ail_get_appinfo() returns error");
131 ail_appinfo_get_str(handle, AIL_PROP_NAME_STR, &app_name);
134 SETTING_TRACE_DEBUG("ail_appinfo_get_str() returns error");
135 ail_destroy_appinfo(handle);
139 SETTING_TRACE_DEBUG("app_name %s", app_name);
141 while(item->next != NULL)
144 if(item->index == 0 && item->pkg_name == NULL)
146 SETTING_TRACE_DEBUG("first app");
148 item->pkg_name = (char*)strdup(app_id);
149 item->app_name = (char*)strdup(app_name);
151 if(app_id && app_name)
152 SETTING_TRACE_DEBUG("app info %d %s %s", item->index, item->pkg_name, item->app_name);
156 SETTING_TRACE_DEBUG("create new");
158 new_item = (openlock_appdata*)malloc(sizeof(openlock_appdata));
161 memset(new_item, 0x00, sizeof(openlock_appdata));
162 new_item->pkg_name = (char*)strdup(app_id);
163 new_item->app_name = (char*)strdup(app_name);
164 new_item->index = item->index + 1;
165 new_item->prev = item;
166 item->next = new_item;
168 if(app_id && app_name)
169 SETTING_TRACE_DEBUG("app info %d %s %s", new_item->index, new_item->pkg_name, new_item->app_name);
173 SETTING_TRACE_DEBUG("malloc() failed");
182 static int __add_3rd_party_lock(void *data)
185 retv_if(data == NULL, -1);
188 SettingLocktypeUG *ad = (SettingLocktypeUG *) data;
190 /* Get info from AIL */
191 pkgmgrinfo_appinfo_filter_h filter = NULL;
195 ret = pkgmgrinfo_appinfo_filter_create(&filter);
198 SETTING_TRACE_DEBUG("pkgmgrinfo_appinfo_filter_create() failed");
201 ret = pkgmgrinfo_appinfo_filter_add_string(filter, PMINFO_APPINFO_PROP_APP_CATEGORY, "http://tizen.org/category/lockapp");
202 ret = pkgmgrinfo_appinfo_filter_count(filter, &count);
203 SETTING_TRACE_DEBUG("There is/are %d 3rd lock app(s)", count);
206 SETTING_TRACE_DEBUG("No 3rd lock app");
207 pkgmgrinfo_appinfo_filter_destroy(filter);
212 // delete if already exist.
215 openlock_appdata *list = lockapp_data;
218 openlock_appdata *cur = list;
219 FREE(list->app_name);
220 FREE(list->pkg_name);
227 lockapp_data = (openlock_appdata*)malloc(sizeof(openlock_appdata));
228 if(lockapp_data == NULL)
230 SETTING_TRACE_DEBUG("malloc() failed");
234 memset(lockapp_data, 0x00, sizeof(openlock_appdata));
235 lockapp_data->prev = NULL;
236 lockapp_data->next = NULL;
237 lockapp_data->pkg_name = NULL;
238 lockapp_data->app_name = NULL;
239 lockapp_data->index = 0;
241 ret = pkgmgrinfo_appinfo_filter_foreach_appinfo(filter, __get_appinfo_cb, NULL);
242 SETTING_TRACE("ret:%d", ret);
243 pkgmgrinfo_appinfo_filter_destroy(filter);
247 openlock_appdata *list = lockapp_data;
249 for(index = 0; index < count; index++)
251 ad->data_locktype_3rd[index] = setting_create_Gendial_field_1radio(ad->genlist,
252 &(itc_1text_1icon_3),
253 setting_locktype_main_mouse_up_Gendial_list_cb, /*add to sel_cb */
256 ad->lock_type_rd, SETTING_SCREEN_LOCK_TYPE_OTHER + index,
259 if (ad->data_locktype_3rd[index]) {
260 ad->data_locktype_3rd[index]->userdata = ad;
262 SETTING_TRACE_ERROR("item_data is NULL");
265 char *open_lock_name = NULL;
266 open_lock_name = vconf_get_str(VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR);
267 if(safeStrCmp(open_lock_name, list->app_name) == 0)
269 FREE(open_lock_name);
278 static void __change_simple_password_cb(void *data, Evas_Object *obj, void *event_info)
280 retm_if(data == NULL, "Data parameter is NULL");
281 Setting_GenGroupItem_Data *list_item =
282 (Setting_GenGroupItem_Data *) data;
285 SettingLocktypeUG *ad = (SettingLocktypeUG *)list_item->userdata;
289 ad->pw_type = SETTING_LOCKTYPE_PW_CHANGE_SIMPLE_PASSWD;
290 setting_locktype_create_password_sg(ad);
293 static void __change_password_cb(void *data, Evas_Object *obj, void *event_info)
295 retm_if(data == NULL, "Data parameter is NULL");
296 Setting_GenGroupItem_Data *list_item =
297 (Setting_GenGroupItem_Data *) data;
300 SettingLocktypeUG *ad = (SettingLocktypeUG *)list_item->userdata;
304 ad->pw_type = SETTING_LOCKTYPE_PW_CHANGE_PASSWD;
305 setting_locktype_create_password_sg(ad);
308 void __add_locktype_items(void *data)
311 ret_if(data == NULL);
313 SettingLocktypeUG *ad = (SettingLocktypeUG *) data;
315 Elm_Object_Item *item = NULL;
320 vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &locktype);
321 SETTING_TRACE("locktype is %d", locktype);
323 radio = elm_radio_add(ad->genlist);
326 elm_radio_state_value_set(radio, -1);
327 ad->lock_type_rd = radio;
330 ADD_GL_SEPARATOR(ad->genlist)
332 evas_object_smart_callback_add(ad->genlist, "realized", __gl_realized_cb, NULL);
334 /* to do : radio menu */
338 ad->data_locktype_none =
339 setting_create_Gendial_field_1radio(ad->genlist,
340 &(itc_1text_1icon_3),
341 setting_locktype_main_mouse_up_Gendial_list_cb, /*add to sel_cb */
344 radio, SETTING_SCREEN_LOCK_TYPE_NONE,
346 setting_locktype_main_click_radio_cb);
347 if (ad->data_locktype_none) {
348 ad->data_locktype_none->userdata = ad;
349 ad->data_locktype_none->group_style = SETTING_GROUP_STYLE_TOP;
351 SETTING_TRACE_ERROR("item_data is NULL");
356 ad->data_locktype_swipe =
357 setting_create_Gendial_field_1radio(ad->genlist,
358 &(itc_1text_1icon_3),
359 setting_locktype_main_mouse_up_Gendial_list_cb, /*add to sel_cb */
362 radio, SETTING_SCREEN_LOCK_TYPE_SWIPE,
364 setting_locktype_main_click_radio_cb);
365 if (ad->data_locktype_swipe) {
366 ad->data_locktype_swipe->userdata = ad;
367 ad->data_locktype_swipe->group_style = SETTING_GROUP_STYLE_CENTER;
369 SETTING_TRACE_ERROR("item_data is NULL");
374 /* 4) simple password */
375 if(locktype == SETTING_SCREEN_LOCK_TYPE_SIMPLE_PASSWORD)
377 ad->data_locktype_simple =
378 setting_create_Gendial_field_1radio_1button(ad->genlist,
379 &(itc_1text_2icon_2),
380 setting_locktype_main_mouse_up_Gendial_list_cb, /*add to sel_cb */
382 SWALLOW_Type_1RADIO_1BTN,
383 "option", /* button style */
384 radio, SETTING_SCREEN_LOCK_TYPE_SIMPLE_PASSWORD,
385 "IDS_ST_BODY_SIMPLE_PASSWORD",
386 setting_locktype_main_click_radio_cb, /* radio callback */
387 __change_simple_password_cb); /* button callback */
391 ad->data_locktype_simple =
392 setting_create_Gendial_field_1radio(ad->genlist,
393 &(itc_1text_1icon_3),
394 setting_locktype_main_mouse_up_Gendial_list_cb, /*add to sel_cb */
397 radio, SETTING_SCREEN_LOCK_TYPE_SIMPLE_PASSWORD,
398 "IDS_ST_BODY_SIMPLE_PASSWORD",
399 setting_locktype_main_click_radio_cb);
402 if (ad->data_locktype_simple) {
403 ad->data_locktype_simple->userdata = ad;
404 ad->data_locktype_simple->group_style = SETTING_GROUP_STYLE_CENTER;
406 SETTING_TRACE_ERROR("item_data is NULL");
410 if(locktype == SETTING_SCREEN_LOCK_TYPE_PASSWORD)
412 ad->data_locktype_password =
413 setting_create_Gendial_field_1radio_1button(ad->genlist,
414 &(itc_1text_2icon_2),
415 setting_locktype_main_mouse_up_Gendial_list_cb, /*add to sel_cb */
417 SWALLOW_Type_1RADIO_1BTN,
418 "option", /* button style */
419 radio, SETTING_SCREEN_LOCK_TYPE_PASSWORD,
420 "IDS_ST_BODY_PASSWORD",
421 setting_locktype_main_click_radio_cb, /* radio callback */
422 __change_password_cb); /* button callback */
426 ad->data_locktype_password =
427 setting_create_Gendial_field_1radio(ad->genlist,
428 &(itc_1text_1icon_3),
429 setting_locktype_main_mouse_up_Gendial_list_cb, /*add to sel_cb */
432 radio, SETTING_SCREEN_LOCK_TYPE_PASSWORD,
433 "IDS_ST_BODY_PASSWORD",
434 setting_locktype_main_click_radio_cb);
436 if (ad->data_locktype_password) {
437 ad->data_locktype_password->userdata = ad;
438 ad->data_locktype_password->group_style = SETTING_GROUP_STYLE_BOTTOM;
440 SETTING_TRACE_ERROR("item_data is NULL");
444 /* Add 3rd party lock apps in list. */
445 index = __add_3rd_party_lock(ad);
449 elm_radio_value_set(radio, locktype);
451 elm_radio_value_set(radio, locktype + index);
457 static void __lock_type_key_changed_cb(keynode_t *key, void *data)
459 ret_if(data == NULL);
461 SettingLocktypeUG *ad = data;
463 char *vconf_name = vconf_keynode_get_name(key);
465 if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT)) {
466 //status = vconf_keynode_get_int(key);
469 ad->ug_is_destroying = TRUE;
470 setting_ug_destroy(ad->ug_passwd);
475 elm_genlist_clear(ad->genlist);
476 __add_locktype_items(ad);
479 //ug_destroy_me(ad->ug);
483 static int setting_locktype_main_create(void *cb)
486 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
488 SettingLocktypeUG *ad = (SettingLocktypeUG *) cb;
490 /* add basic layout */
492 Evas_Object *scroller = NULL;
493 ad->ly_main = setting_create_layout_navi_bar_genlist(ad->win_main_layout,
495 "IDS_ST_BODY_SCREEN_LOCK_TYPE",
496 _("IDS_COM_BODY_BACK"),
498 (setting_call_back_func)setting_locktype_main_click_softkey_back_cb,
501 ad->screen_lock_main_item = elm_naviframe_top_item_get(ad->navi_bar);
503 ad->genlist = scroller;
505 __add_locktype_items(ad);
507 vconf_notify_key_changed(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, __lock_type_key_changed_cb, ad);
509 setting_view_locktype_main.is_create = 1;
510 return SETTING_RETURN_SUCCESS;
513 static int setting_locktype_main_destroy(void *cb)
517 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
519 SettingLocktypeUG *ad = (SettingLocktypeUG *) cb;
523 evas_object_del(ad->notify);
527 (void)vconf_ignore_key_changed(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, __lock_type_key_changed_cb);
529 evas_object_del(ad->ly_main);
530 ad->screen_lock_main_item = NULL;
532 setting_view_locktype_main.is_create = 0;
534 return SETTING_RETURN_SUCCESS;
537 static int setting_locktype_main_update(void *cb)
541 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
543 //__update_locktype_items_status(cb);
545 return SETTING_RETURN_SUCCESS;
548 static int setting_locktype_main_cleanup(void *cb)
552 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
554 return SETTING_RETURN_SUCCESS;
557 /* ***************************************************
561 ****************************************************/
563 const char *motion_img[] = {
564 SETTING_ICON_PATH_CFG "motions/unlock_illust_01.png",
565 SETTING_ICON_PATH_CFG "motions/unlock_illust_02.png",
570 __motion_set_cb(void *data, Evas_Object *obj, void *event_info)
573 SETTING_TRACE("[HYEJIN] __motion_guild_ly_cb() start. ");
575 retm_if(data == NULL, "[Setting > Security] Data parameter is NULL");
576 SettingLocktypeUG *ad = (SettingLocktypeUG *) data;
578 elm_naviframe_item_pop(ad->navi_bar);
579 ug_destroy_me(ad->ug);
583 __motion_cancel_cb(void *data, Evas_Object *obj, void *event_info)
586 SETTING_TRACE("[HYEJIN] __motion_guild_ly_cb() start. ");
588 retm_if(data == NULL, "[Setting > Security] Data parameter is NULL");
589 SettingLocktypeUG *ad = (SettingLocktypeUG *) data;
591 elm_naviframe_item_pop(ad->navi_bar);
592 ug_destroy_me(ad->ug);
597 setting_locktype_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj,
602 setting_retm_if(data == NULL, "Data parameter is NULL");
604 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
605 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
606 elm_genlist_item_selected_set(item, 0);
607 Setting_GenGroupItem_Data *list_item =
608 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
609 SettingLocktypeUG *ad = (SettingLocktypeUG *) data;
610 int lock_type = list_item->chk_status;
611 SETTING_TRACE("clicking item[%s - %d] ", _(list_item->keyStr), lock_type);
614 vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &old_type);
616 ad->selected_lock_type = list_item->keyStr;
618 /* If lock_type is same with old_lock_type, return. */
619 if(lock_type == old_type)
621 SETTING_TRACE_DEBUG("[Screen Lock Type] Selected same type");
626 char *pkg_name = NULL;
630 case SETTING_SCREEN_LOCK_TYPE_NONE:
631 case SETTING_SCREEN_LOCK_TYPE_SWIPE:
632 /* To do : Call security-server API. pw : 0000 */
633 if(old_type == SETTING_SCREEN_LOCK_TYPE_PASSWORD
634 || old_type == SETTING_SCREEN_LOCK_TYPE_SIMPLE_PASSWORD) {
635 int result = security_server_set_pwd(ad->input_pwd, "0000", 0, 0);
636 SETTING_TRACE_DEBUG("set_pwd result : %d", result);
640 int ckmc_ret = CKMC_ERROR_NONE;
641 ckmc_ret = ckmc_change_user_password(user, ad->input_pwd, NULL);
642 SETTING_TRACE("ckmc_change_user_password() returns %d", ckmc_ret);
645 if(vconf_set_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, lock_type) == 0)
648 elm_radio_value_set(list_item->eo_check, lock_type);
650 //SETTING_TRACE_DEBUG("PASS #1");
651 ug_destroy_me(ad->ug);
654 case SETTING_SCREEN_LOCK_TYPE_MOTION:
655 ad->old_type = old_type;
656 setting_create_guild_layout(ad->navi_bar,
657 _(About_Motion_Unlock_Str),
658 _("IDS_COM_SK_CANCEL"), _(SET_AS_LOCK_STR),NULL,
659 __motion_cancel_cb, __motion_set_cb, NULL,
660 _("IDS_LCKSCN_BODY_TAP_AND_HOLD_THE_SCREEN_THEN_TILT_THE_DEVICE_TOWARDS_YOU_TO_UNLOCK_IT_MSG"),
667 case SETTING_SCREEN_LOCK_TYPE_SIMPLE_PASSWORD:
668 ad->pw_type = SETTING_LOCKTYPE_PW_SIMPLE_PASSWD;
669 if(old_type != SETTING_SCREEN_LOCK_TYPE_PASSWORD)
672 ad->input_pwd = (char*)strdup("0000");
674 setting_locktype_create_password_sg(ad);
676 case SETTING_SCREEN_LOCK_TYPE_PASSWORD:
677 ad->pw_type = SETTING_LOCKTYPE_PW_PASSWORD;
678 if(old_type != SETTING_SCREEN_LOCK_TYPE_SIMPLE_PASSWORD)
681 ad->input_pwd = (char*)strdup("0000");
683 setting_locktype_create_password_sg(ad);
685 case SETTING_SCREEN_LOCK_TYPE_OTHER:
686 if(old_type == SETTING_SCREEN_LOCK_TYPE_PASSWORD
687 || old_type == SETTING_SCREEN_LOCK_TYPE_SIMPLE_PASSWORD) {
688 int result = security_server_set_pwd(ad->input_pwd, "0000", 0, 0);
689 SETTING_TRACE_DEBUG("set_pwd result : %d", result);
692 int ckmc_ret = CKMC_ERROR_NONE;
693 ckmc_ret = ckmc_change_user_password(user, ad->input_pwd, NULL);
694 SETTING_TRACE("ckmc_change_user_password() returns %d", ckmc_ret);
697 index = __get_lockapp_index_from_appname(list_item->keyStr);
698 pkg_name = __get_lockapp_pkgname_from_appname(list_item->keyStr);
699 SETTING_TRACE_DEBUG("3rd lock selected. index[%d] pkg_name[%s]", index, pkg_name);
700 vconf_set_str(VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR, pkg_name);
701 vconf_set_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, lock_type);
703 elm_radio_value_set(list_item->eo_check, lock_type + index);
704 ug_destroy_me(ad->ug);
712 setting_locktype_main_click_radio_cb(void *data, Evas_Object *obj, void *event_info)
715 setting_retm_if(data == NULL, "Data parameter is NULL");
716 Setting_GenGroupItem_Data *list_item =
717 (Setting_GenGroupItem_Data *) data;
718 SettingLocktypeUG *ad = list_item->userdata;
720 int lock_type = elm_radio_value_get(obj);
723 vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &old_type);
725 if(old_type == lock_type)
730 case SETTING_SCREEN_LOCK_TYPE_NONE:
731 case SETTING_SCREEN_LOCK_TYPE_SWIPE:
732 /* To do : Call security-server API. pw : 0000 */
733 if(old_type == SETTING_SCREEN_LOCK_TYPE_PASSWORD
734 || old_type == SETTING_SCREEN_LOCK_TYPE_SIMPLE_PASSWORD) {
735 int result = security_server_set_pwd(ad->input_pwd, "0000", 0, 0);
736 SETTING_TRACE_DEBUG("set_pwd result : %d", result);
739 int ckmc_ret = CKMC_ERROR_NONE;
740 ckmc_ret = ckmc_change_user_password(user, ad->input_pwd, NULL);
741 SETTING_TRACE("ckmc_change_user_password() returns %d", ckmc_ret);
744 vconf_set_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, lock_type);
745 ug_destroy_me(ad->ug);
748 case SETTING_SCREEN_LOCK_TYPE_MOTION:
749 ad->old_type = old_type;
750 elm_radio_value_set(obj, old_type);
751 setting_create_guild_layout(ad->navi_bar,
752 _(About_Motion_Unlock_Str),
753 _("IDS_COM_SK_CANCEL"), _(SET_AS_LOCK_STR), NULL,
754 __motion_cancel_cb, __motion_set_cb, NULL,
755 _("IDS_LCKSCN_BODY_TAP_AND_HOLD_THE_SCREEN_THEN_TILT_THE_DEVICE_TOWARDS_YOU_TO_UNLOCK_IT_MSG"),
762 case SETTING_SCREEN_LOCK_TYPE_SIMPLE_PASSWORD:
763 elm_radio_value_set(obj, old_type);
764 ad->pw_type = SETTING_SEC_PW_SIMPLE_PASSWD;
765 if(old_type != SETTING_SCREEN_LOCK_TYPE_PASSWORD)
768 ad->input_pwd = (char*)strdup("0000");
770 setting_locktype_create_password_sg(ad);
772 case SETTING_SCREEN_LOCK_TYPE_PASSWORD:
773 elm_radio_value_set(obj, old_type);
774 ad->pw_type = SETTING_SEC_PW_PASSWORD;
775 if(old_type != SETTING_SCREEN_LOCK_TYPE_SIMPLE_PASSWORD)
778 ad->input_pwd = (char*)strdup("0000");
780 setting_locktype_create_password_sg(ad);
782 case SETTING_SCREEN_LOCK_TYPE_OTHER:
785 char *pkg_name = NULL;
786 if(old_type == SETTING_SCREEN_LOCK_TYPE_PASSWORD
787 || old_type == SETTING_SCREEN_LOCK_TYPE_SIMPLE_PASSWORD)
789 int result = security_server_set_pwd(ad->input_pwd, "0000", 0, 0);
790 SETTING_TRACE_DEBUG("set_pwd result : %d", result);
793 int ckmc_ret = CKMC_ERROR_NONE;
794 ckmc_ret = ckmc_change_user_password(user, ad->input_pwd, NULL);
795 SETTING_TRACE("ckmc_change_user_password() returns %d", ckmc_ret);
798 index = __get_lockapp_index_from_appname(list_item->keyStr);
799 pkg_name = __get_lockapp_pkgname_from_appname(list_item->keyStr);
800 SETTING_TRACE_DEBUG("3rd lock selected. index[%d] pkg_name[%s]", index, pkg_name);
801 vconf_set_str(VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR, pkg_name);
802 vconf_set_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, lock_type);
804 elm_radio_value_set(list_item->eo_check, lock_type + index);
805 ug_destroy_me(ad->ug);
813 Eina_Bool setting_locktype_main_click_softkey_back_cb(void *data, Elm_Object_Item *it)
817 retvm_if(data == NULL, EINA_FALSE, "[Setting > Security] Data parameter is NULL");
819 SettingLocktypeUG *ad = (SettingLocktypeUG *) data;
824 /* Send destroy request */
825 ug_destroy_me(ad->ug);