re-organize security
[apps/core/preloaded/settings.git] / setting-security / src / setting-security-main.c
1 /*
2  * setting
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
5  *
6  * Contact: MyoungJune Park <mj2004.park@samsung.com>
7  *
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
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
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.
19  *
20  */
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>
25
26 #include <setting-security-main.h>
27 #include <setting-debug.h>
28 #include <app.h>
29
30 static int setting_security_main_create(void *cb);
31 static int setting_security_main_destroy(void *cb);
32 static int setting_security_main_update(void *cb);
33 static int setting_security_main_cleanup(void *cb);
34
35 setting_view setting_view_security_main = {
36         .create = setting_security_main_create,
37         .destroy = setting_security_main_destroy,
38         .update = setting_security_main_update,
39         .cleanup = setting_security_main_cleanup,
40 };
41
42 static void setting_security_main_click_softkey_back_cb(void *data,
43                                                         Evas_Object *obj,
44                                                         void *event_info);
45 #if DISABLED_CODE
46 static void setting_security_main_chk_btn_cb(void *data, Evas_Object *obj,
47                                                 void *event_info);
48 #endif
49 static void setting_security_main_mouse_up_Gendial_list_cb(void *data,
50                                                         Evas_Object *obj,
51                                                         void *event_info);
52 #if DISABLED_CODE
53 static void setting_security_main_update_view(void *data, char *keyStr);
54 static void setting_security_main_create_timer(void *data);
55 static Eina_Bool setting_security_main_timer_update_cb(void *data);
56 #endif
57
58 static void setting_security_main_check_vconf_value(void *data);
59
60
61 /* ***************************************************
62  **
63  **basic func
64  **
65  ****************************************************/
66
67 static int setting_security_main_create(void *cb)
68 {
69         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
70         SETTING_TRACE_BEGIN;
71         SettingSecurityUG *ad = (SettingSecurityUG *) cb;
72
73         Evas_Object *scroller;
74
75         int ret = 0;
76         int value = 0;
77         int err = 0;
78
79         gboolean b_status = FALSE;
80         int tapi_ret;
81
82         /* add basic layout */
83         char setBtnStr[MAX_DISPLAY_NAME_LEN_ON_UI];
84         snprintf(setBtnStr, sizeof(setBtnStr), "%s",
85                  (char *)dgettext("sys_string", "IDS_COM_BODY_BACK"));
86         ad->ly_main =
87             setting_create_layout_navi_bar_genlist(ad->win_main_layout,
88                                                    ad->win_get,
89                                                    _("IDS_ST_BODY_SECURITY"),
90                                                    setBtnStr, NULL,
91                                                    setting_security_main_click_softkey_back_cb,
92                                                    NULL, ad, &scroller,
93                                                    &ad->navi_bar);
94
95         Elm_Object_Item *item = NULL;
96
97         /* SIM settings */
98         if(ad->handle && !isEmulBin())
99         {
100                 /* check status of sim and tapi */
101                 ret = setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value, &err);
102                 tapi_ret = tel_check_modem_power_status(ad->handle, &b_status);
103
104                 if ((tapi_ret == TAPI_API_SUCCESS) && (b_status == TAPI_PHONE_POWER_STATUS_ON) && (value == VCONFKEY_TELEPHONY_SIM_INSERTED))
105                 {
106                         /* separator */
107                         item = elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
108                         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
109
110                         setting_create_Gendial_field_def(scroller, &(ad->itc_1text),
111                                                                 setting_security_main_mouse_up_Gendial_list_cb,ad,
112                                                                 SWALLOW_Type_INVALID,
113                                                                 NULL, NULL,
114                                                                 0,"SIM settings", NULL, NULL);
115                 }
116         }
117
118         /* update info */
119
120         setting_view_security_main.is_create = 1;
121
122         g_ad = (SettingSecurityUG *) malloc(sizeof(SettingSecurityUG) *1);
123         retv_if(!g_ad, -1);
124         memcpy(g_ad, ad, sizeof(SettingSecurityUG));
125
126         SETTING_TRACE_END;
127         return SETTING_RETURN_SUCCESS;
128 }
129
130 static int setting_security_main_destroy(void *cb)
131 {
132         SETTING_TRACE_BEGIN;
133         /* error check */
134         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
135
136         SettingSecurityUG *ad = (SettingSecurityUG *) cb;
137
138         if (ad->update_view_timer) {
139                 ecore_timer_del(ad->update_view_timer);
140                 ad->update_view_timer = NULL;
141         }
142
143         if (ad->ly_main != NULL) {
144                 evas_object_del(ad->ly_main);
145
146                 FREE(g_ad);
147         }
148         if(ad->input_pwd)
149                 FREE(ad->input_pwd);
150
151         setting_view_security_main.is_create = 0;
152
153         return SETTING_RETURN_SUCCESS;
154 }
155
156 static int setting_security_main_update(void *cb)
157 {
158         SETTING_TRACE_BEGIN;
159         /* error check */
160         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
161
162         SettingSecurityUG *ad = (SettingSecurityUG *) cb;
163
164         evas_object_show(ad->ly_main);
165
166         return SETTING_RETURN_SUCCESS;
167 }
168
169 static int setting_security_main_cleanup(void *cb)
170 {
171         SETTING_TRACE_BEGIN;
172         /* error check */
173         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
174
175         return SETTING_RETURN_SUCCESS;
176 }
177
178 /* ***************************************************
179  **
180  **call back func
181  **
182  ****************************************************/
183 static void
184 setting_security_main_click_softkey_back_cb(void *data, Evas_Object *obj,
185                                             void *event_info)
186 {
187         SETTING_TRACE_BEGIN;
188         /* error check */
189         retm_if(data == NULL, "[Setting > Security] Data parameter is NULL");
190
191         SettingSecurityUG *ad = (SettingSecurityUG *) data;
192
193         /* Send destroy request */
194         ug_destroy_me(ad->ug);
195 }
196
197 int _handle_sim_exception(void *data, int sim_status)
198 {
199         retv_if(data == NULL, SETTING_RETURN_FAIL);
200
201         SettingSecurityUG *ad = (SettingSecurityUG *) data;
202
203         switch (sim_status) {
204                 case VCONFKEY_TELEPHONY_SIM_INSERTED:
205                         break;
206
207                 case VCONFKEY_TELEPHONY_SIM_NOT_PRESENT:
208
209                         setting_create_simple_popup(NULL, ad->win_get,
210                                                     NULL, _("IDS_ST_SECURITY_BODY_NOIMSI"));
211                         SETTING_TRACE_DEBUG
212                             ("%s*** [ERR] INCORRECTED SIM. sim_slot_type=%d ***%s",
213                              SETTING_FONT_RED, sim_status, SETTING_FONT_BLACK);
214                         return SETTING_RETURN_FAIL;
215
216                         break;
217
218                 case VCONFKEY_TELEPHONY_SIM_CARD_ERROR:
219                 case VCONFKEY_TELEPHONY_SIM_UNKNOWN:
220
221                         setting_create_simple_popup(NULL, ad->win_get,
222                                                     NULL, _("IDS_COM_BODY_INVALID_SIM_CARD"));
223                         SETTING_TRACE_DEBUG
224                             ("%s*** [ERR] INCORRECTED SIM. sim_slot_type=%d ***%s",
225                              SETTING_FONT_RED, sim_status, SETTING_FONT_BLACK);
226                         return SETTING_RETURN_FAIL;
227
228                         break;
229                 default:
230                         break;
231         }
232         return SETTING_RETURN_SUCCESS;
233 }
234
235 static void
236 setting_security_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj,
237                                                void *event_info)
238 {
239         SETTING_TRACE_BEGIN;
240         /* error check */
241         setting_retm_if(data == NULL, "Data parameter is NULL");
242
243         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
244         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
245         elm_genlist_item_selected_set(item, 0);
246         Setting_GenGroupItem_Data *list_item =
247             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
248
249         SettingSecurityUG *ad = (SettingSecurityUG *) data;
250
251         SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
252
253         if(!safeStrCmp("SIM settings", list_item->keyStr)) {
254                 setting_view_change(&setting_view_security_main, &setting_view_security_sim_settings, ad);      
255         }
256 }