3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Flora License, Version 1.1 (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.
18 #include <setting-common-data-type.h>
19 #include <setting-common-data-slp-setting.h>
20 #include <setting-common-draw-widget.h>
21 #include <setting-common-view.h>
23 #include <setting-security-main.h>
24 #include <setting-debug.h>
27 static int setting_security_main_create(void *cb);
28 static int setting_security_main_destroy(void *cb);
29 static int setting_security_main_update(void *cb);
30 static int setting_security_main_cleanup(void *cb);
32 setting_view setting_view_security_main = {
33 .create = setting_security_main_create,
34 .destroy = setting_security_main_destroy,
35 .update = setting_security_main_update,
36 .cleanup = setting_security_main_cleanup,
39 static void setting_security_main_click_softkey_back_cb(void *data,
43 static void setting_security_main_chk_btn_cb(void *data, Evas_Object *obj,
46 static void setting_security_main_mouse_up_Gendial_list_cb(void *data,
50 static void setting_security_main_update_view(void *data, char *keyStr);
51 static void setting_security_main_create_timer(void *data);
52 static Eina_Bool setting_security_main_timer_update_cb(void *data);
55 static void setting_security_main_check_vconf_value(void *data);
58 /* ***************************************************
62 ****************************************************/
64 char *get_pa_screen_lock_type_str()
68 vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &lock_type);
72 case SETTING_SCREEN_LOCK_TYPE_SWIPE:
73 return setting_gettext("IDS_ST_MBODY_SWIPE");
74 case SETTING_SCREEN_LOCK_TYPE_OTHER:
75 return vconf_get_str(VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR);
81 static int setting_security_main_create(void *cb)
83 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
85 SettingSecurityUG *ad = (SettingSecurityUG *) cb;
87 Evas_Object *scroller;
93 gboolean b_status = FALSE;
96 /* add basic layout */
97 char setBtnStr[MAX_DISPLAY_NAME_LEN_ON_UI];
98 snprintf(setBtnStr, sizeof(setBtnStr), "%s",
99 (char *)dgettext("sys_string", "IDS_COM_BODY_BACK"));
101 setting_create_layout_navi_bar_genlist(ad->win_main_layout,
103 _("IDS_ST_BODY_SECURITY"),
105 setting_security_main_click_softkey_back_cb,
109 Elm_Object_Item *item = NULL;
111 //item_data->sub_desc = (char *)g_strdup(sub_desc);
112 /* Screen lock type */
113 ad->data_screen_lock_type = setting_create_Gendial_field_def(scroller, &(ad->itc_2text_2),
114 setting_security_main_mouse_up_Gendial_list_cb,ad,
115 SWALLOW_Type_INVALID,
117 0, Keystr_ScreenLockType, get_pa_screen_lock_type_str(ad), NULL);
118 if(ad->data_screen_lock_type)
119 ad->data_screen_lock_type->userdata = ad;
122 if(ad->handle && !isEmulBin())
124 /* check status of sim and tapi */
125 ret = setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value, &err);
126 tapi_ret = tel_check_modem_power_status(ad->handle, &b_status);
128 if ((tapi_ret == TAPI_API_SUCCESS) && (b_status == TAPI_PHONE_POWER_STATUS_ON) && (value == VCONFKEY_TELEPHONY_SIM_INSERTED))
131 item = elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
132 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
134 setting_create_Gendial_field_def(scroller, &(ad->itc_1text),
135 setting_security_main_mouse_up_Gendial_list_cb,ad,
136 SWALLOW_Type_INVALID,
138 0,"IDS_ST_BODY_SIM_CARD_SETTINGS", NULL, NULL);
144 setting_view_security_main.is_create = 1;
146 g_ad = (SettingSecurityUG *) malloc(sizeof(SettingSecurityUG) *1);
148 memcpy(g_ad, ad, sizeof(SettingSecurityUG));
151 return SETTING_RETURN_SUCCESS;
154 static int setting_security_main_destroy(void *cb)
158 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
160 SettingSecurityUG *ad = (SettingSecurityUG *) cb;
162 if (ad->update_view_timer) {
163 ecore_timer_del(ad->update_view_timer);
164 ad->update_view_timer = NULL;
167 if (ad->ly_main != NULL) {
168 evas_object_del(ad->ly_main);
175 setting_view_security_main.is_create = 0;
177 return SETTING_RETURN_SUCCESS;
180 static int setting_security_main_update(void *cb)
184 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
186 SettingSecurityUG *ad = (SettingSecurityUG *) cb;
187 evas_object_show(ad->ly_main);
189 if (ad->data_screen_lock_type ) {
190 G_FREE(ad->data_screen_lock_type->sub_desc);
191 ad->data_screen_lock_type->sub_desc = (char *)g_strdup(get_pa_screen_lock_type_str(ad));
192 elm_genlist_item_update(ad->data_screen_lock_type->item);
195 return SETTING_RETURN_SUCCESS;
198 static int setting_security_main_cleanup(void *cb)
202 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
204 return SETTING_RETURN_SUCCESS;
207 /* ***************************************************
211 ****************************************************/
213 setting_security_main_click_softkey_back_cb(void *data, Evas_Object *obj,
218 retm_if(data == NULL, "[Setting > Security] Data parameter is NULL");
220 SettingSecurityUG *ad = (SettingSecurityUG *) data;
222 /* Send destroy request */
223 ug_destroy_me(ad->ug);
226 int _handle_sim_exception(void *data, int sim_status)
228 retv_if(data == NULL, SETTING_RETURN_FAIL);
230 SettingSecurityUG *ad = (SettingSecurityUG *) data;
232 switch (sim_status) {
233 case VCONFKEY_TELEPHONY_SIM_INSERTED:
236 case VCONFKEY_TELEPHONY_SIM_NOT_PRESENT:
238 setting_create_simple_popup(NULL, ad->win_get,
239 NULL, _("IDS_ST_SECURITY_BODY_NOIMSI"));
241 ("%s*** [ERR] INCORRECTED SIM. sim_slot_type=%d ***%s",
242 SETTING_FONT_RED, sim_status, SETTING_FONT_BLACK);
243 return SETTING_RETURN_FAIL;
247 case VCONFKEY_TELEPHONY_SIM_CARD_ERROR:
248 case VCONFKEY_TELEPHONY_SIM_UNKNOWN:
250 setting_create_simple_popup(NULL, ad->win_get,
251 NULL, _("IDS_COM_BODY_INVALID_SIM_CARD"));
253 ("%s*** [ERR] INCORRECTED SIM. sim_slot_type=%d ***%s",
254 SETTING_FONT_RED, sim_status, SETTING_FONT_BLACK);
255 return SETTING_RETURN_FAIL;
261 return SETTING_RETURN_SUCCESS;
265 setting_security_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj,
270 setting_retm_if(data == NULL, "Data parameter is NULL");
272 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
273 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
274 elm_genlist_item_selected_set(item, 0);
275 Setting_GenGroupItem_Data *list_item =
276 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
278 SettingSecurityUG *ad = (SettingSecurityUG *) data;
280 SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
282 if(!safeStrCmp("IDS_ST_BODY_SIM_CARD_SETTINGS", list_item->keyStr)) {
283 setting_view_change(&setting_view_security_main, &setting_view_security_sim_settings, ad);
285 else if(!safeStrCmp(Keystr_ScreenLockType, list_item->keyStr)) {
286 setting_view_change(&setting_view_security_main, &setting_view_security_locktype, ad);