support 3rd party lock
authorHyejin Kim <hyejin0906.kim@samsung.com>
Wed, 17 Apr 2013 03:58:23 +0000 (12:58 +0900)
committerHyejin Kim <hyejin0906.kim@samsung.com>
Wed, 17 Apr 2013 04:11:13 +0000 (13:11 +0900)
Change-Id: I5f2bf1f5595b93936d243aad31eafb02133a112b

include/setting-debug.h
packaging/org.tizen.setting.spec
resource/setting.cfg
setting-security/CMakeLists.txt
setting-security/include/setting-security-locktype.h [new file with mode: 0755]
setting-security/include/setting-security.h
setting-security/src/setting-security-locktype.c [new file with mode: 0755]
setting-security/src/setting-security-main.c
setting-security/src/setting-security.c

index 86639b5..4acc1c0 100755 (executable)
@@ -76,7 +76,7 @@
 #define SUPPORT_STORAGE                                1
 #define SUPPORT_WIFI_DIRECT                     1
 #define SUPPORT_DATA_USAGE                      0
-#define SUPPORT_SECURITY                       0
+#define SUPPORT_SECURITY                       1
 #define SUPPORT_WEB_APPLICATION                        0
 
 /*#endif*/
index 91bed35..503f983 100755 (executable)
@@ -360,6 +360,7 @@ GOPTION="-g 6514"
        vconftool $GOPTION set -t bool db/setting/power_on_lock "0"
        vconftool $GOPTION set -t bool db/setting/simple_password "1"
        vconftool $GOPTION set -t int db/setting/screen_lock_type "0"
+       vconftool $GOPTION set -t string db/setting/3rd_lock_pkg_name ""
        vconftool $GOPTION set -t bool db/setting/fmm/sim_change_alert "0"
        vconftool $GOPTION set -t string db/setting/fmm/recipients ""
        vconftool $GOPTION set -t string db/setting/fmm/sender ""
index d2c6be8..8bf751a 100755 (executable)
         "is_resetable" : 1
       },
       {
+        "key_name" : "IDS_ST_BODY_SECURITY",
+        "icon_path" : "/usr/apps/org.tizen.setting/res/icons/A01-1_icon_Security.png",
+        "ug_args" : "setting-security-efl",
+        "pos" : 0,
+        "click_times" : 0,
+        "is_resetable" : 1
+      },
+      {
         "key_name" : "IDS_ST_HEADER_HOME_SCREEN_ABB",
         "icon_path" : "/usr/apps/org.tizen.setting/res/icons/A01-1_icon_Menu.png",
         "ug_args" : "setting-homescreen-efl",
index 1183688..d82cc97 100755 (executable)
@@ -4,7 +4,7 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/${SETTING_COMMON}/include)
 
 INCLUDE(FindPkgConfig)
 pkg_check_modules(pkgs_security REQUIRED ecore evas elementary tapi dlog
-ui-gadget-1 capi-appfw-application appcore-common ail utilX)
+ui-gadget-1 capi-appfw-application appcore-common ail utilX pkgmgr-info)
 
 FOREACH(flag ${pkgs_security_CFLAGS})
        SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
@@ -28,6 +28,7 @@ ADD_LIBRARY(${SETTING_SECURITY_UG} SHARED
        ./src/setting-security.c
        ./src/setting-security-main.c
        ./src/setting-security-sim-settings.c
+       ./src/setting-security-locktype.c
        )
 
 TARGET_LINK_LIBRARIES(${SETTING_SECURITY_UG} -L${CMAKE_BINARY_DIR}/${SETTING_COMMON} -lsetting-common)
diff --git a/setting-security/include/setting-security-locktype.h b/setting-security/include/setting-security-locktype.h
new file mode 100755 (executable)
index 0000000..7a5e172
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * setting
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Contact: MyoungJune Park <mj2004.park@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+#ifndef __SETTING_SECURITY_LOCKTYPE_H__
+#define __SETTING_SECURITY_LOCKTYPE_H__
+
+#include <setting-security.h>
+
+typedef struct _openlock_appdata openlock_appdata;
+
+struct _openlock_appdata {
+       openlock_appdata *prev;
+       openlock_appdata *next;
+
+       char *pkg_name;
+       char *app_name;
+       int index;
+};
+
+static int setting_security_locktype_create(void *cb);
+
+static void
+setting_security_locktype_click_softkey_back_cb(void *data, Evas_Object *obj, void *event_info);
+static void
+setting_security_locktype_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj, void *event_info);
+
+#endif
index 4bf784d..f2e59f8 100755 (executable)
@@ -35,6 +35,8 @@
 #include <setting-debug.h>
 
 #define USELESS_SIM_CARD "Not useful SIM card"
+#define Keystr_ScreenLockType                  "IDS_ST_BODY_SCREEN_LOCK_TYPE"
+#define Keystr_Swipe                                           "IDS_ST_MBODY_SWIPE"
 
 #if SUPPORT_PARENTAL_MODE
 #define Keystr_ParentalMode            "Parental mode"
@@ -90,6 +92,14 @@ struct _SettingSecurityUG {
        Setting_GenGroupItem_Data *data_pin_lk;
        Setting_GenGroupItem_Data *data_change_pin1;
        Setting_GenGroupItem_Data *data_change_pin2;
+       Setting_GenGroupItem_Data *data_screen_lock_type;
+       Setting_GenGroupItem_Data *data_locktype_swipe;
+       Setting_GenGroupItem_Data *data_locktype_3rd[128];
+       Evas_Object *sl_scroller;
+       Evas_Object *lock_type_rd;
+
+       Elm_Object_Item *screen_lock_main_item;
+       char *selected_lock_type;
        /* for simple password */
 
        Elm_Genlist_Item_Class itc_1text;
@@ -107,6 +117,7 @@ struct _SettingSecurityUG {
 
 extern setting_view setting_view_security_main;
 extern setting_view setting_view_security_sim_settings;
+extern setting_view setting_view_security_locktype;
 
 SettingSecurityUG *g_ad;       /* for tapi callback */
 
diff --git a/setting-security/src/setting-security-locktype.c b/setting-security/src/setting-security-locktype.c
new file mode 100755 (executable)
index 0000000..b62be85
--- /dev/null
@@ -0,0 +1,414 @@
+/*
+ * setting
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Contact: MyoungJune Park <mj2004.park@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+#include <setting-common-data-type.h>
+#include <setting-common-data-slp-setting.h>
+#include <setting-common-draw-widget.h>
+#include <setting-common-view.h>
+
+#include <setting-security-locktype.h>
+#include <setting-security.h>
+#include <setting-debug.h>
+#include <ail.h>
+#include <pkgmgr-info.h>
+
+#define TBD 0
+
+static int setting_security_locktype_create(void *cb);
+static int setting_security_locktype_destroy(void *cb);
+static int setting_security_locktype_update(void *cb);
+static int setting_security_locktype_cleanup(void *cb);
+setting_view setting_view_security_locktype = {
+       .create = setting_security_locktype_create,
+       .destroy = setting_security_locktype_destroy,
+       .update = setting_security_locktype_update,
+       .cleanup = setting_security_locktype_cleanup,
+};
+
+openlock_appdata *lockapp_data = NULL;
+
+/* ***************************************************
+ **
+ **basic func
+ **
+ ****************************************************/
+
+static int __get_lockapp_index_from_pkgname(char *pkg_name)
+{
+       SETTING_TRACE_BEGIN;
+       if(pkg_name == NULL)
+               return SETTING_RETURN_FAIL;
+
+       openlock_appdata *item = lockapp_data;
+       for(; item != NULL; item = item->next)
+       {
+               if(safeStrCmp(item->pkg_name, pkg_name) == 0)
+                       return item->index;
+       }
+       return SETTING_RETURN_FAIL;
+}
+static int __get_lockapp_index_from_appname(char *app_name)
+{
+       SETTING_TRACE_BEGIN;
+       if(app_name == NULL)
+               return SETTING_RETURN_FAIL;
+
+       openlock_appdata *item = lockapp_data;
+       for(; item != NULL; item = item->next)
+       {
+               if(safeStrCmp(item->app_name, app_name) == 0)
+                       return item->index;
+       }
+       return SETTING_RETURN_FAIL;
+}
+static char* __get_lockapp_pkgname_from_appname(char *app_name)
+{
+       SETTING_TRACE_BEGIN;
+       if(app_name == NULL)
+               return NULL;
+
+       openlock_appdata *item = lockapp_data;
+       for(; item != NULL; item = item->next)
+       {
+               if(safeStrCmp(item->app_name, app_name) == 0)
+                       return item->app_name;
+       }
+       return NULL;
+}
+
+ail_cb_ret_e __get_appinfo_cb(const ail_appinfo_h appinfo, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+
+       openlock_appdata *item = lockapp_data;
+       openlock_appdata *new_item = NULL;
+       char *pkg_name = NULL;
+       char *app_name = NULL;
+
+       ail_appinfo_get_str(appinfo, AIL_PROP_PACKAGE_STR, &pkg_name);
+       ail_appinfo_get_str(appinfo, AIL_PROP_NAME_STR, &app_name);
+
+       while(item->next != NULL)
+               item = item->next;
+
+       if(item->index == 0 && item->pkg_name == NULL)
+       {
+               /* first app */
+               item->pkg_name = strdup(pkg_name);
+               item->app_name = strdup(app_name);
+
+               SETTING_TRACE_DEBUG("app info %d %s %s", item->index, item->pkg_name, item->app_name);
+       }
+       else
+       {
+               /* create new */
+               new_item = (openlock_appdata*)malloc(sizeof(openlock_appdata));
+               if(new_item != NULL)
+               {
+                       memset(new_item, 0x00, sizeof(openlock_appdata));
+                       new_item->pkg_name = strdup(pkg_name);
+                       new_item->app_name = strdup(app_name);
+                       new_item->index = item->index + 1;
+                       new_item->prev = item;
+                       item->next = new_item;
+
+                       SETTING_TRACE_DEBUG("app info %d %s %s", new_item->index, new_item->pkg_name, new_item->app_name);
+               }
+               else
+               {
+                       SETTING_TRACE_DEBUG("malloc() failed");
+               }
+       }
+       return AIL_CB_RET_CONTINUE;
+}
+
+static void __add_3rd_party_lock(void *data)
+{
+       SETTING_TRACE_BEGIN;
+       ret_if(data == NULL);
+
+       SettingSecurityUG *ad = (SettingSecurityUG *) data;
+
+       /* Get info from AIL */
+       pkgmgrinfo_appinfo_filter_h filter;             //ail_filter_h filter;
+       int ret = 0;                                                    //ail_error_e ret;
+       int count = -1;                                                 //int count = 0;
+
+       ret = pkgmgrinfo_appinfo_filter_create(&filter);        //ret = ail_filter_new(&filter);
+       if(ret > 0)             //if(ret != AIL_ERROR_OK)
+       {
+               SETTING_TRACE_DEBUG("pkgmgrinfo_appinfo_filter_create() failed"); //SETTING_TRACE_DEBUG("ail_filter_new() failed");
+               return;
+       }
+       ret = pkgmgrinfo_appinfo_filter_add_string(filter, PMINFO_APPINFO_PROP_APP_CATEGORY, "http://tizen.org/category/lockapp");
+       //ret = ail_filter_add_str(filter, AIL_PROP_CATEGORIES_STR, "lockscreen");
+       ret = pkgmgrinfo_appinfo_filter_count(filter, &count);  ////ret = ail_filter_count_appinfo(filter, &count);
+       SETTING_TRACE_DEBUG("There is/are %d 3rd lock app(s)", count);
+       if(count <= 0)
+       {
+               SETTING_TRACE_DEBUG("No 3rd lock app");
+               pkgmgrinfo_appinfo_filter_destroy(filter);      //ail_filter_destroy(filter);
+               return;
+
+       }
+
+       lockapp_data = (openlock_appdata*)malloc(sizeof(openlock_appdata));
+       if(lockapp_data == NULL)
+       {
+               SETTING_TRACE_DEBUG("malloc() failed");
+               return;
+       }
+       memset(lockapp_data, 0x00, sizeof(openlock_appdata));
+       lockapp_data->prev = NULL;
+       lockapp_data->next = NULL;
+       lockapp_data->pkg_name = NULL;
+       lockapp_data->app_name = NULL;
+       lockapp_data->index = 0;
+
+       pkgmgrinfo_appinfo_filter_foreach_appinfo(filter, __get_appinfo_cb, ad);        //ail_filter_list_appinfo_foreach(filter, __get_appinfo_cb, ad);
+       pkgmgrinfo_appinfo_filter_destroy(filter);      //ail_filter_destroy(filter);
+
+       /* Add to genlist */
+       openlock_appdata *list = lockapp_data;
+       Setting_GenGroupItem_Data *item_data = NULL;
+       int index = 0;
+       for(index = 0; index < count; index++)
+       {
+               ad->data_locktype_3rd[index] = setting_create_Gendial_field_1radio(ad->sl_scroller,
+                                               &(itc_1text_1icon_2),
+                                               setting_security_locktype_mouse_up_Gendial_list_cb,     /*add to sel_cb */
+                                               ad,     /* sel data */
+                                               SWALLOW_Type_1RADIO,
+                                               ad->lock_type_rd, SETTING_SCREEN_LOCK_TYPE_OTHER + index,
+                                               list->app_name,
+                                               NULL);
+               if (ad->data_locktype_3rd[index]) {
+                       ad->data_locktype_3rd[index]->userdata = ad;
+               } else {
+                       SETTING_TRACE_ERROR("item_data is NULL");
+               }
+               list = list->next;
+       }
+       SETTING_TRACE_END;
+}
+
+void __add_locktype_items(void *data)
+{
+       SETTING_TRACE_BEGIN;
+       retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+
+       SettingSecurityUG *ad = (SettingSecurityUG *) data;
+
+       Elm_Object_Item *item = NULL;
+       Evas_Object *radio;
+       Setting_GenGroupItem_Data *item_data = NULL;
+
+       int index = -1;
+       int locktype = 0;
+       vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &locktype);
+
+       radio = elm_radio_add(ad->sl_scroller);
+       elm_radio_state_value_set(radio, -1);
+       ad->lock_type_rd = radio;
+
+       /* separator */
+       item = elm_genlist_item_append(ad->sl_scroller, &(ad->itc_seperator), NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+       elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+       //evas_object_smart_callback_add(ad->sl_scroller, "realized", __gl_realized_cb, NULL);
+
+       /* to do : radio menu */
+       /* 1) swipe */
+       ad->data_locktype_swipe =
+           setting_create_Gendial_field_1radio(ad->sl_scroller,
+                                               &(itc_1text_1icon_2),
+                                               setting_security_locktype_mouse_up_Gendial_list_cb,     /*add to sel_cb */
+                                               ad,     /* sel data */
+                                               SWALLOW_Type_1RADIO,
+                                               radio, SETTING_SCREEN_LOCK_TYPE_SWIPE,
+                                               Keystr_Swipe,
+                                               NULL);
+       if (ad->data_locktype_swipe) {
+               ad->data_locktype_swipe->userdata = ad;
+               ad->data_locktype_swipe->group_style = SETTING_GROUP_STYLE_TOP;
+       } else {
+               SETTING_TRACE_ERROR("item_data is NULL");
+       }
+
+       /* Add 3rd party lock apps in list. */
+       __add_3rd_party_lock(ad);
+
+       /* update info */
+       /* To do : If type is OTHER, should calculate something.*/
+       if(locktype == SETTING_SCREEN_LOCK_TYPE_OTHER)
+       {
+               char *open_lock_name = NULL;
+               open_lock_name = vconf_get_str(VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR);
+               index = __get_index_of_lockapp(open_lock_name);
+
+               if(open_lock_name)
+                       FREE(open_lock_name);
+       }
+       /* End */
+       if(index < 0)
+               elm_radio_value_set(radio, locktype);
+       else
+               elm_radio_value_set(radio, locktype + index);
+}
+
+static int setting_security_locktype_create(void *cb)
+{
+       SETTING_TRACE_BEGIN;
+       retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+
+       SettingSecurityUG *ad = (SettingSecurityUG *) cb;
+
+       /* add basic layout */
+
+       Evas_Object *scroller = NULL;
+
+       setting_push_layout_navi_bar_genlist(ad->win_main_layout,
+                                                          ad->win_get,
+                                                          _(Keystr_ScreenLockType),
+                                                          _("IDS_COM_BODY_BACK"), NULL,
+                                                          setting_security_locktype_click_softkey_back_cb,
+                                                          NULL, ad, &scroller, ad->navi_bar);
+
+       ad->sl_scroller = scroller;
+
+       __add_locktype_items(ad);
+
+       setting_view_security_locktype.is_create = 1;
+
+       return SETTING_RETURN_SUCCESS;
+}
+
+static int setting_security_locktype_destroy(void *cb)
+{
+       SETTING_TRACE_BEGIN;
+       /* error check */
+       retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+
+       SettingSecurityUG *ad = (SettingSecurityUG *) cb;
+       if (ad->notify)
+       {
+               evas_object_del(ad->notify);
+               ad->notify = NULL;
+       }
+
+       elm_naviframe_item_pop(ad->navi_bar);
+
+       setting_view_security_locktype.is_create = 0;
+
+       return SETTING_RETURN_SUCCESS;
+}
+
+static int setting_security_locktype_update(void *cb)
+{
+       SETTING_TRACE_BEGIN;
+       /* error check */
+       retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+
+       return SETTING_RETURN_SUCCESS;
+}
+
+static int setting_security_locktype_cleanup(void *cb)
+{
+       SETTING_TRACE_BEGIN;
+       /* error check */
+       retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+
+       SettingSecurityUG *ad = (SettingSecurityUG *) cb;
+
+       return setting_security_locktype_destroy(ad);
+}
+
+/* ***************************************************
+ **
+ **call back func
+ **
+ ****************************************************/
+
+static void
+setting_security_locktype_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj,
+                                              void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+       /* error check */
+       setting_retm_if(data == NULL, "Data parameter is NULL");
+
+       retm_if(event_info == NULL, "Invalid argument: event info is NULL");
+       Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+       elm_genlist_item_selected_set(item, 0);
+       Setting_GenGroupItem_Data *list_item =
+           (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
+       SettingSecurityUG *ad = (SettingSecurityUG *) data;
+       int lock_type = list_item->chk_status;
+       SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
+       int old_type = elm_radio_value_get(list_item->eo_check);
+
+       ad->selected_lock_type = list_item->keyStr;
+
+       /* If lock_type is same with old_lock_type, return. */
+       if(lock_type == old_type)
+       {
+               SETTING_TRACE_DEBUG("[Screen Lock Type] Selected same type");
+               return;
+       }
+
+       int index = -1;
+       char *pkg_name = NULL;
+
+       switch(lock_type)
+       {
+               case SETTING_SCREEN_LOCK_TYPE_SWIPE:
+                       if(vconf_set_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, lock_type) == 0)
+                       {
+                               /* set radio */
+                               elm_radio_value_set(list_item->eo_check, lock_type);
+                       }
+                       ug_destroy_me(ad->ug);
+                       break;
+               case SETTING_SCREEN_LOCK_TYPE_OTHER:
+                       index = __get_lockapp_index_from_appname(list_item->keyStr);
+                       pkg_name = __get_lockapp_pkgname_from_appname(list_item->keyStr);
+                       SETTING_TRACE_DEBUG("3rd lock selected. index[%d] pkg_name[%s]", index, pkg_name);
+                       vconf_set_str(VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR, pkg_name);
+                       vconf_set_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, lock_type);
+                       /* set radio */
+                       elm_radio_value_set(list_item->eo_check, lock_type + index);
+                       break;
+               default:
+                       break;
+       }
+}
+
+static void
+setting_security_locktype_click_softkey_back_cb(void *data, Evas_Object *obj,
+                                           void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+       /* error check */
+       retm_if(data == NULL, "[Setting > Security] Data parameter is NULL");
+
+       SettingSecurityUG *ad = (SettingSecurityUG *) data;
+       setting_view_change(&setting_view_security_locktype, &setting_view_security_main, ad);
+       SETTING_TRACE_END;
+}
index 8f063c2..831f998 100755 (executable)
@@ -61,6 +61,23 @@ static void setting_security_main_check_vconf_value(void *data);
  **
  ****************************************************/
 
+char *get_pa_screen_lock_type_str()
+{
+       int lock_type = 0;
+
+       vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &lock_type);
+
+       switch(lock_type)
+       {
+               case SETTING_SCREEN_LOCK_TYPE_SWIPE:
+                       return setting_gettext("IDS_ST_MBODY_SWIPE");
+               case SETTING_SCREEN_LOCK_TYPE_OTHER:
+                       return vconf_get_str(VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR);
+               default:
+                       return NULL;
+       }
+}
+
 static int setting_security_main_create(void *cb)
 {
        retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
@@ -91,6 +108,15 @@ static int setting_security_main_create(void *cb)
 
        Elm_Object_Item *item = NULL;
 
+       /* Screen lock type */
+       ad->data_screen_lock_type = setting_create_Gendial_field_def(scroller, &(ad->itc_2text_2),
+                                                               setting_security_main_mouse_up_Gendial_list_cb,ad,
+                                                               SWALLOW_Type_INVALID,
+                                                               NULL, NULL,
+                                                               0, Keystr_ScreenLockType, get_pa_screen_lock_type_str(ad), NULL);
+       if(ad->data_screen_lock_type)
+               ad->data_screen_lock_type->userdata = ad;
+
        /* SIM settings */
        if(ad->handle && !isEmulBin())
        {
@@ -250,4 +276,7 @@ setting_security_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj,
        if(!safeStrCmp("IDS_ST_BODY_SIM_CARD_SETTINGS", list_item->keyStr)) {
                setting_view_change(&setting_view_security_main, &setting_view_security_sim_settings, ad);      
        }
+       else if(!safeStrCmp(Keystr_ScreenLockType, list_item->keyStr)) {
+               setting_view_change(&setting_view_security_main, &setting_view_security_locktype, ad);
+       }
 }
index b610932..68d60be 100755 (executable)
@@ -189,6 +189,7 @@ static void *setting_security_ug_on_create(ui_gadget_h ug,
        setting_view_node_table_intialize();
        setting_view_node_table_register(&setting_view_security_main, NULL);
        setting_view_node_table_register(&setting_view_security_sim_settings, &setting_view_security_main);
+       setting_view_node_table_register(&setting_view_security_locktype, &setting_view_security_main);
 
        setting_create_Gendial_itc("dialogue/1text", &(securityUG->itc_1text));
        setting_create_Gendial_itc("dialogue/2text.3", &(securityUG->itc_2text_2));
@@ -257,6 +258,9 @@ static void setting_security_ug_on_destroy(ui_gadget_h ug, service_h service,
        }
 
        /*  delete the allocated objects. */
+       if (TRUE == setting_view_security_locktype.is_create) {
+               setting_view_destroy(&setting_view_security_locktype, securityUG);
+       }
        if (TRUE == setting_view_security_sim_settings.is_create) {
                setting_view_destroy(&setting_view_security_sim_settings, securityUG);
        }