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