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.
22 #include <setting-common-data-type.h>
23 #include <setting-common-data-slp-setting.h>
24 #include <setting-common-draw-widget.h>
25 #include <setting-common-view.h>
27 #include <setting-security-main.h>
28 #include <setting-debug.h>
30 #if SUPPORT_ENCRYPTION
34 static int setting_security_main_create(void *cb);
35 static int setting_security_main_destroy(void *cb);
36 static int setting_security_main_update(void *cb);
37 static int setting_security_main_cleanup(void *cb);
39 setting_view setting_view_security_main = {
40 .create = setting_security_main_create,
41 .destroy = setting_security_main_destroy,
42 .update = setting_security_main_update,
43 .cleanup = setting_security_main_cleanup,
46 static Eina_Bool setting_security_main_click_softkey_back_cb(void *data, Elm_Object_Item *it);
47 static void setting_security_main_mouse_up_Gendial_list_cb(void *data,
51 static Eina_Bool setting_security_engine_list_timer_cb(void *data);
52 //static void __security_exp_cb(void *data, Evas_Object *obj, void *event_info);
53 void __security_sub_list_sel_cb(void *data, Evas_Object *obj, void *event_info);
55 #define SECURITY_ENGINE_NAME_MAX_LEN 128
57 #define SUPPORT_LOCKTYPE_IN_SECURITY_MENU 0
58 /* ***************************************************
62 ****************************************************/
64 static int setting_security_main_create(void *cb)
66 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
68 SettingSecurityUG *ad = (SettingSecurityUG *) cb;
70 Evas_Object *scroller;
76 gboolean b_status = FALSE;
79 /* add basic layout */
80 char setBtnStr[MAX_DISPLAY_NAME_LEN_ON_UI];
81 snprintf(setBtnStr, sizeof(setBtnStr), "%s",
82 (char *)dgettext("sys_string", "IDS_COM_BODY_BACK"));
84 setting_create_layout_navi_bar_genlist(ad->win_main_layout,
86 "IDS_ST_BODY_SECURITY",
88 (setting_call_back_func)setting_security_main_click_softkey_back_cb,
92 //setting_enable_expandable_genlist(scroller, ad, __security_exp_cb, NULL);
94 Elm_Object_Item *item = NULL;
96 ADD_GL_SEPARATOR(scroller);
97 (void)setting_create_Gendial_field_titleItem(scroller,
99 "IDS_ST_BODY_PHONE_SECURITY", NULL);
101 item = elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
102 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
104 ad->data_sim_settings = setting_create_Gendial_field_def(scroller, &(ad->itc_1text),
105 setting_security_main_mouse_up_Gendial_list_cb,ad,
106 SWALLOW_Type_INVALID,
108 0,SECURITY_SIM_SETTINGS, NULL, NULL);
111 elm_genlist_item_select_mode_set(elm_genlist_item_append(scroller, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
112 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
115 app_info_h app_info = NULL;
116 /* replace deprecated API :
117 from app_manager_get_app_info()
118 to app_info_create() */
119 ret = app_info_create("org.tizen.msa", &app_info);
120 if (ret != APP_MANAGER_ERROR_NONE) {
121 SETTING_TRACE("No corresponding app_id for [%s]\n", "org.tizen.msa");
124 item = elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
125 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
126 ad->data_security_update = setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon),
127 setting_security_main_mouse_up_Gendial_list_cb, ad,
128 SWALLOW_Type_INVALID,
130 value,_(SECURITY_UPDATE_TEXT), NULL, NULL);
132 if (app_info_destroy(app_info) != 0) {
133 SETTING_TRACE_ERROR("app_info_destroy error for org.tizen.msa");
136 ADD_GL_SEPARATOR(scroller);
139 if(ad->data_sim_settings)
141 if((ad->handle == NULL) || (isEmulBin() == TRUE))
143 setting_disable_genlist_item(ad->data_sim_settings->item);
147 ret = setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value, &err);
148 tapi_ret = tel_check_modem_power_status(ad->handle, &b_status);
149 if((tapi_ret != TAPI_API_SUCCESS)
150 || (b_status != TAPI_PHONE_POWER_STATUS_ON)
151 || (value != VCONFKEY_TELEPHONY_SIM_INSERTED))
153 setting_disable_genlist_item(ad->data_sim_settings->item);
155 TelSimCardType_t cardInfo;
156 tapi_ret = tel_get_sim_type(ad->handle, &cardInfo);
157 if(tapi_ret == TAPI_API_SIM_PERM_BLOCKED)
158 setting_disable_genlist_item(ad->data_sim_settings->item);
161 /* If flight mode is ON, can't use sim settings menu */
163 vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &status);
165 setting_disable_genlist_item(ad->data_sim_settings->item);
168 setting_view_security_main.is_create = 1;
170 g_ad = (SettingSecurityUG *) malloc(sizeof(SettingSecurityUG) *1);
172 memcpy(g_ad, ad, sizeof(SettingSecurityUG));
174 vconf_notify_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE,
175 setting_security_main_vconf_change_cb, ad);
176 vconf_notify_key_changed(VCONFKEY_WIFI_STATE,
177 setting_security_main_vconf_change_cb, ad);
180 return SETTING_RETURN_SUCCESS;
183 static int setting_security_main_destroy(void *cb)
187 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
189 SettingSecurityUG *ad = (SettingSecurityUG *) cb;
190 #if SUPPORT_ENCRYPTION
191 if(ad->popup_sd_card_encryption)
193 evas_object_del(ad->popup_sd_card_encryption);
194 ad->popup_sd_card_encryption = NULL;
197 if(ad->update_view_timer)
199 ecore_timer_del(ad->update_view_timer);
200 ad->update_view_timer = NULL;
202 if(ad->get_security_list_timer)
204 ecore_timer_del(ad->get_security_list_timer);
205 ad->get_security_list_timer = NULL;
207 if(ad->remove_sim_popup_timer)
209 ecore_timer_del(ad->remove_sim_popup_timer);
210 ad->remove_sim_popup_timer = NULL;
212 if(ad->tapi_async_cb_check_timer)
214 ecore_timer_del(ad->tapi_async_cb_check_timer);
215 ad->tapi_async_cb_check_timer = NULL;
218 vconf_ignore_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE,
219 setting_security_main_vconf_change_cb);
220 vconf_ignore_key_changed(VCONFKEY_WIFI_STATE,
221 setting_security_main_vconf_change_cb);
222 if(ad->secrity_engine_list) {
223 g_list_free(ad->secrity_engine_list);
225 if (ad->ly_main != NULL) {
226 evas_object_del(ad->ly_main);
231 setting_view_security_main.is_create = 0;
233 return SETTING_RETURN_SUCCESS;
236 static int setting_security_main_update(void *cb)
240 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
241 SettingSecurityUG *ad = (SettingSecurityUG *) cb;
243 evas_object_show(ad->ly_main);
245 return SETTING_RETURN_SUCCESS;
248 static int setting_security_main_cleanup(void *cb)
252 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
254 return SETTING_RETURN_SUCCESS;
257 /* ***************************************************
261 ****************************************************/
263 setting_security_main_click_softkey_back_cb(void *data, Elm_Object_Item *it)
267 retvm_if(data == NULL, EINA_FALSE, "[Setting > Security] Data parameter is NULL");
269 SettingSecurityUG *ad = (SettingSecurityUG *) data;
272 app_manager_is_running("gr47by21a5.SamsungAccount", &is_running);
273 if(is_running && ad->samsung_account_is_running) // If samsung account is running from Find my mobile, security ug can't be destroyed.
277 if(ad->ug_mt) // If find my mobile ug is running, security ug can't be destroyed.
282 /* Send destroy request */
283 ug_destroy_me(ad->ug);
287 int _handle_sim_exception(void *data, int sim_status)
289 retv_if(data == NULL, SETTING_RETURN_FAIL);
291 SettingSecurityUG *ad = (SettingSecurityUG *) data;
293 switch (sim_status) {
294 case VCONFKEY_TELEPHONY_SIM_INSERTED:
297 case VCONFKEY_TELEPHONY_SIM_NOT_PRESENT:
299 setting_create_simple_popup(NULL, ad->win_get,
300 NULL, _(SECURITY_SIM_NOT_PRESENT_MSG));
302 ("%s*** [ERR] INCORRECTED SIM. sim_slot_type=%d ***%s",
303 SETTING_FONT_RED, sim_status, SETTING_FONT_BLACK);
304 return SETTING_RETURN_FAIL;
308 case VCONFKEY_TELEPHONY_SIM_CARD_ERROR:
309 case VCONFKEY_TELEPHONY_SIM_UNKNOWN:
311 setting_create_simple_popup(NULL, ad->win_get,
312 NULL, _("IDS_COM_BODY_INVALID_SIM_CARD"));
314 ("%s*** [ERR] INCORRECTED SIM. sim_slot_type=%d ***%s",
315 SETTING_FONT_RED, sim_status, SETTING_FONT_BLACK);
316 return SETTING_RETURN_FAIL;
322 return SETTING_RETURN_SUCCESS;
325 static Eina_Bool __remove_sim_popup_cb(void *data)
328 retv_if(data == NULL, EINA_FALSE);
329 SettingSecurityUG *ad = (SettingSecurityUG *)data;
333 evas_object_del(ad->sim_popup);
334 ad->sim_popup = NULL;
336 ad->remove_sim_popup_timer = NULL;
340 static Eina_Bool _check_tapi_async_cb_is_called(void *data)
343 retv_if(data == NULL, EINA_FALSE);
345 SettingSecurityUG *ad = (SettingSecurityUG *)data;
347 if(!ad->enter_tapi_async_cb_flag)
349 ad->sim_popup = setting_create_popup_without_btn(ad, ad->win_get,
350 NULL, _(KeyStr_Security_Waiting_Sim),
351 (setting_call_back_func)__remove_sim_popup_cb,
353 ad->remove_sim_popup_timer = ecore_timer_add(1, __remove_sim_popup_cb, ad);
355 ad->tapi_async_cb_check_timer = NULL;
361 setting_security_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj,
366 setting_retm_if(data == NULL, "Data parameter is NULL");
368 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
369 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
370 elm_genlist_item_selected_set(item, 0);
371 Setting_GenGroupItem_Data *list_item =
372 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
374 SettingSecurityUG *ad = (SettingSecurityUG *) data;
376 SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
378 if(!safeStrCmp(SECURITY_SIM_SETTINGS, list_item->keyStr)) {
379 ad->enter_tapi_async_cb_flag = 0;
380 ad->sim_popup = NULL;
381 ad->tapi_async_cb_check_timer = ecore_timer_add(0.5, _check_tapi_async_cb_is_called, ad);
383 if (TAPI_API_SUCCESS != tel_get_sim_facility(ad->handle, TAPI_SIM_LOCK_SC, setting_security_pin_get_facility_cb, ad)) {
384 SETTING_TRACE_ERROR("*** [ERR] tel_get_sim_facility(pin1). ***");
387 if(tel_get_sim_lock_info(ad->handle, TAPI_SIM_LOCK_FD, setting_security_pin2_get_lock_info_cb, ad) != 0)
389 SETTING_TRACE_ERROR("failed to call tel_get_sim_lock_info()");
392 else if(!safeStrCmp(_(SECURITY_UPDATE_TEXT), list_item->keyStr))
394 setting_view_change(&setting_view_security_main, &setting_view_security_update, ad);
398 void setting_security_main_vconf_change_cb(keynode_t *key, void *data)
401 //ret_if(NULL == data);
402 //SettingSecurityUG *ad = (SettingSecurityUG *) data;