[security,password] remove unused code
[apps/core/preloaded/settings.git] / setting-password / src / setting-password-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
22 #include <setting-password.h>
23 #include <setting-password-main.h>
24 #include <setting-common-data-slp-setting.h>
25 #include <openssl/sha.h>
26 #include <setting-debug.h>
27
28 static int setting_password_main_create(void *cb);
29 static int setting_password_main_destroy(void *cb);
30 static int setting_password_main_update(void *cb);
31 static int setting_password_main_cleanup(void *cb);
32
33 setting_view setting_view_password_main = {
34         .create = setting_password_main_create,
35         .destroy = setting_password_main_destroy,
36         .update = setting_password_main_update,
37         .cleanup = setting_password_main_cleanup,
38 };
39
40 #define ENTRY_CALLBACK_REPEAT_MAX 3
41 #define SETTING_COMPARE_PW_FAIL -2
42
43 /* ***************************************************
44  *
45  *basic func
46  *
47  ***************************************************/
48 static void
49 __password_main_gl_mouse_up(void *data, Evas *e, Evas_Object *obj,
50                             void *event)
51 {
52         ret_if(!data);
53         SettingPasswordUG *ad = (SettingPasswordUG *) data;
54
55         if (ad->ed_pw1) {
56                 setting_hide_input_pannel_cb(ad->ed_pw1->eo_check);
57         }
58         if (ad->ed_pw2) {
59                 setting_hide_input_pannel_cb(ad->ed_pw1->eo_check);
60         }
61         if (ad->ed_pw3) {
62                 setting_hide_input_pannel_cb(ad->ed_pw1->eo_check);
63         }
64
65 }
66
67 static char *setting_password_main_get_title_str(void *data)
68 {
69         retvm_if(data == NULL, NULL,
70                  "[Setting > Password] Data parameter is NULL");
71         SettingPasswordUG *ad = (SettingPasswordUG *) data;
72
73         switch (ad->view_type) {
74         case SETTING_PW_TYPE_SIM_LOCK_ON:
75         case SETTING_PW_TYPE_SIM_LOCK_OFF:
76                 return _("IDS_COM_BODY_AUTH_PASSWORD");
77                 break;
78         case SETTING_PW_TYPE_PIN_LOCK_ON:
79         case SETTING_PW_TYPE_PIN_LOCK_OFF:
80                 return _("IDS_ST_BODY_PIN1");
81                 break;
82         case SETTING_PW_TYPE_CHANGE_PIN1:
83                 return _("IDS_ST_BODY_CHANGE_PIN1");
84                 break;
85
86         case SETTING_PW_TYPE_CHANGE_PIN2:
87                 return _("IDS_ST_BODY_CHANGE_PIN2");
88                 break;
89
90         case SETTING_PW_TYPE_PIN1_BLOCKED:
91                 return _("IDS_ST_BODY_PUK1_CODE");
92                 break;
93         case SETTING_PW_TYPE_PIN2_BLOCKED:
94
95                 return _("IDS_ST_BODY_PUK2");
96                 break;
97         default:
98                 SETTING_TRACE_DEBUG("%s*** Unknown Password Type. ***%s",
99                                     SETTING_FONT_BGREEN, SETTING_FONT_BLACK);
100                 break;
101         }
102         return NULL;
103
104 }
105
106 Elm_Object_Item* __create_navibar(void *data, Evas_Object *content, Evas_Object *navibar, setting_pw_navibar_style_t style)
107 {
108         SETTING_TRACE_BEGIN;
109         retv_if(data == NULL || content == NULL || navibar == NULL, NULL);
110
111         SettingPasswordUG *ad = (SettingPasswordUG *)data;
112
113         Elm_Object_Item *navi_item = NULL;
114         Evas_Object *done_btn = NULL;
115
116         switch(style)
117         {
118                 case SETTING_PW_NAVIBAR_WITH_LEFT_BTN :
119                         SETTING_TRACE_DEBUG("with left btn");
120                         navi_item = setting_create_navi_bar_top_buttons(setting_password_main_get_title_str(ad),
121                                                                         NULL, _("IDS_COM_SK_CANCEL"), NULL,
122                                                                         NULL,
123                                                                         setting_password_main_click_softkey_cancel_cb,
124                                                                         NULL, ad, content, navibar);
125                         break;
126                 case SETTING_PW_NAVIBAR_WITH_RIGHT_BTN :
127                         SETTING_TRACE_DEBUG("with right btn");
128                         navi_item = setting_create_navi_bar_top_buttons(setting_password_main_get_title_str(ad),
129                                                                         _("IDS_COM_SK_DONE"), NULL, NULL,
130                                                                         setting_password_main_click_softkey_done_cb, NULL,
131                                                                         NULL, ad, content, navibar);
132                         break;
133                 case SETTING_PW_NAVIBAR_WITH_BOTH_BTN:
134                         SETTING_TRACE_DEBUG("with both btn");
135                         navi_item = setting_create_navi_bar_top_buttons(setting_password_main_get_title_str(ad),
136                                                                         _("IDS_COM_SK_DONE"), _("IDS_COM_SK_CANCEL"), NULL,
137                                                                         setting_password_main_click_softkey_done_cb,
138                                                                         setting_password_main_click_softkey_cancel_cb,
139                                                                         NULL, ad, content, navibar);
140                         break;
141                 case SETTING_PW_NAVIBAR_WITH_NO_BTN:
142                         SETTING_TRACE_DEBUG("with no btn");
143                         navi_item = setting_create_navi_bar_top_buttons(setting_password_main_get_title_str(ad),
144                                                                         NULL, NULL, NULL,
145                                                                         NULL,
146                                                                         NULL,
147                                                                         NULL, ad, content, navibar);
148                 default:
149                         break;
150         }
151         retv_if(!navi_item, NULL);
152
153         done_btn = elm_object_item_part_content_get(navi_item, NAVI_BTN_STYLE_LEFT);
154         if(done_btn != NULL)
155         {
156                 setting_disable_evas_object(done_btn);
157                 setting_dim_evas_object(done_btn, TRUE);
158         }
159         return navi_item;
160 }
161
162 static int __create_common_password_frame(void *data)
163 {
164         SETTING_TRACE_BEGIN;
165         retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
166
167         SettingPasswordUG *ad = (SettingPasswordUG *)data;
168         Evas_Object *navi_bar = NULL;
169         static int count = 0;
170
171         count++;
172         /* CONTENT */
173         if(ad->scroller != NULL)
174         {
175                 evas_object_del(ad->scroller);
176         }
177
178         Evas_Object *pw_list = elm_genlist_add(ad->win_main_layout);
179         elm_object_style_set(pw_list, "dialogue");
180         if(pw_list == NULL)
181                 return SETTING_RETURN_FAIL;
182
183         elm_genlist_clear(pw_list);     /* first to clear list */
184         elm_genlist_mode_set(pw_list, ELM_LIST_COMPRESS);
185
186
187 #if SUPPORT_BOTTOM_BTNS
188         ad->ly_main = setting_create_win_layout(ad->win_main_layout, ad->win_get);
189         retv_if(!ad->ly_main, SETTING_RETURN_FAIL);
190
191         navi_bar = setting_create_navi_bar(ad->ly_main);
192         retv_if(!navi_bar, SETTING_RETURN_FAIL);
193
194         ad->navi_it = __create_navibar(ad, pw_list, navi_bar, SETTING_PW_NAVIBAR_WITH_BOTH_BTN);
195
196         retv_if(!ad->navi_it, SETTING_RETURN_FAIL);
197 #else
198         ad->ly_main =
199             setting_create_layout_navi_bar(ad->win_main_layout, ad->win_get,
200                                            setting_password_main_get_title_str
201                                            (ad), _("IDS_COM_SK_CANCEL"),
202                                            _("IDS_COM_SK_DONE"), NULL,
203                                            setting_password_main_click_softkey_cancel_cb,
204                                            setting_password_main_click_softkey_done_cb,
205                                            NULL, ad, pw_list /* contents */ ,
206                                            &navi_bar, &(ad->controllbar));
207         elm_object_item_disabled_set(elm_toolbar_last_item_get(ad->controllbar), EINA_TRUE);
208
209         if(ad->ly_main == NULL)
210                 return SETTING_RETURN_FAIL;
211 #endif
212
213         evas_object_event_callback_add(pw_list, EVAS_CALLBACK_MOUSE_UP,
214                                        __password_main_gl_mouse_up, ad);
215
216         Elm_Object_Item *item = elm_genlist_item_append(pw_list,
217                                                                 &(ad->itc_seperator), NULL, NULL,
218                                                                 ELM_GENLIST_ITEM_NONE, NULL, NULL);
219         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
220
221         ad->scroller = pw_list;
222
223         return SETTING_RETURN_SUCCESS;
224 }
225
226 static int
227 setting_password_main_create(void *cb)
228 {
229         SETTING_TRACE_BEGIN;
230         /* error check */
231         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
232
233         SettingPasswordUG *ad = (SettingPasswordUG *) cb;
234         int ret = 0;
235
236         ret = __create_common_password_frame(ad);
237
238         if(ret < 0)
239                 return SETTING_RETURN_FAIL;
240
241         setting_password_main_create_ui(ad);
242
243         setting_view_password_main.is_create = 1;
244         SETTING_TRACE_END;
245         return SETTING_RETURN_SUCCESS;
246 }
247
248 static int setting_password_main_destroy(void *cb)
249 {
250         /* error check */
251         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
252
253         SettingPasswordUG *ad = (SettingPasswordUG *) cb;
254         if (ad->remove_timer) {
255                 ecore_timer_del(ad->remove_timer);
256                 ad->remove_timer = NULL;
257         }
258
259         if (ad->ly_main != NULL) {
260                 evas_object_del(ad->ly_main);
261                 ad->ly_main = NULL;
262                 setting_view_password_main.is_create = 0;
263         }
264         return SETTING_RETURN_SUCCESS;
265 }
266
267 static int setting_password_main_update(void *cb)
268 {
269         /* error check */
270         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
271
272         SettingPasswordUG *ad = (SettingPasswordUG *) cb;
273
274         if (ad->ly_main != NULL) {
275                 evas_object_show(ad->ly_main);
276         }
277
278         return SETTING_RETURN_SUCCESS;
279 }
280
281 static int setting_password_main_cleanup(void *cb)
282 {
283         /* error check */
284         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
285
286         SettingPasswordUG *ad = (SettingPasswordUG *) cb;
287
288         if (ad->ly_main != NULL) {
289                 evas_object_hide(ad->ly_main);
290         }
291
292         return SETTING_RETURN_SUCCESS;
293 }
294
295 /* ***************************************************
296  *
297  *general func
298  *
299  ***************************************************/
300
301 static int setting_password_main_create_ui(void *data)
302 {
303         /* error check */
304         retvm_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER,
305                  "[Setting > Password] Data parameter is NULL");
306
307         SettingPasswordUG *ad = (SettingPasswordUG *) data;
308
309         SETTING_TRACE_DEBUG("ad->view_type=%d ***", ad->view_type);
310
311         switch (ad->view_type) {
312         case SETTING_PW_TYPE_SIM_LOCK_OFF:
313         case SETTING_PW_TYPE_PIN_LOCK_ON:
314         case SETTING_PW_TYPE_PIN_LOCK_OFF:
315                 setting_password_main_draw_1line_password(ad, NULL);
316                 break;
317         case SETTING_PW_TYPE_SIM_LOCK_ON:
318                 setting_password_main_draw_2line_password(ad, NULL);
319                 break;
320
321         case SETTING_PW_TYPE_CHANGE_PIN1:
322         case SETTING_PW_TYPE_CHANGE_PIN2:
323         case SETTING_PW_TYPE_PIN1_BLOCKED:
324         case SETTING_PW_TYPE_PIN2_BLOCKED:
325                 setting_password_main_draw_3line_password(ad, NULL);
326                 break;
327
328         default:
329                 SETTING_TRACE_DEBUG("%s*** Unknown Password Type. ***%s",
330                                     SETTING_FONT_BGREEN, SETTING_FONT_BLACK);
331                 break;
332         }
333
334         /** @todo this function always return 0, not verifying the function flow with the value */
335         return 0;
336 }
337
338 static void
339 setting_password_main_entry_changed_cb(void *data, Evas_Object *obj,
340                                        void *event_info)
341 {
342         retm_if(data == NULL, "[Setting > Password] Data parameter is NULL");
343         Setting_GenGroupItem_Data *list_item =
344             (Setting_GenGroupItem_Data *) data;
345         SettingPasswordUG *ad = (SettingPasswordUG *) list_item->userdata;
346         const char *entry_str = elm_entry_entry_get(obj);
347         list_item->sub_desc = (char *)g_strdup(entry_str);
348         bool isFoundEmptyEntry = FALSE;
349
350         Evas_Object *layout = elm_object_parent_widget_get(obj);
351         elm_object_part_text_set(layout, "elm.guidetext", "");
352
353         do {
354                 if (ad->ed_pw1) {
355                         entry_str = ad->ed_pw1->sub_desc;
356                         if (NULL == entry_str || '\0' == entry_str[0]) {
357                                 isFoundEmptyEntry = TRUE;
358                                 layout = elm_object_parent_widget_get(ad->ed_pw1->eo_check);
359                                 elm_object_part_text_set(layout, "elm.guidetext", _("IDS_ST_BODY_TAP_TO_INSERT"));
360                                 break;
361                         }
362                 }
363                 if (ad->ed_pw2) {
364                         entry_str = ad->ed_pw2->sub_desc;
365                         if (NULL == entry_str || '\0' == entry_str[0]) {
366                                 isFoundEmptyEntry = TRUE;
367                                 layout = elm_object_parent_widget_get(ad->ed_pw2->eo_check);
368                                 elm_object_part_text_set(layout, "elm.guidetext", _("IDS_ST_BODY_TAP_TO_INSERT"));
369                                 break;
370                         }
371                 }
372                 if (ad->ed_pw3) {
373                         entry_str = ad->ed_pw3->sub_desc;
374                         if (NULL == entry_str || '\0' == entry_str[0]) {
375                                 isFoundEmptyEntry = TRUE;
376                                 layout = elm_object_parent_widget_get(ad->ed_pw3->eo_check);
377                                 elm_object_part_text_set(layout, "elm.guidetext", _("IDS_ST_BODY_TAP_TO_INSERT"));
378                                 break;
379                         }
380                 }
381
382         } while (0);
383
384         bool disableFlag = isFoundEmptyEntry;
385
386         #if SUPPORT_BOTTOM_BTNS
387         Evas_Object *done_btn = elm_object_item_part_content_get(ad->navi_it, NAVI_BTN_STYLE_LEFT);
388         if (disableFlag) {
389                 if (!evas_object_pass_events_get(done_btn)) { /* it had not yet been disabled */
390                         setting_disable_evas_object(done_btn);
391                         setting_dim_evas_object(done_btn, TRUE);
392                 }/* else already disabled */
393         } else {
394                 setting_enable_evas_object(done_btn);
395                 setting_undo_dim_evas_object(done_btn, TRUE);
396         }
397         #else
398         elm_object_item_disabled_set(elm_toolbar_last_item_get
399                                          (ad->controllbar), disableFlag);
400         #endif
401
402 }
403
404 static Eina_Bool __focus_on_idler(void *data)
405 {
406         /* error check */
407         retv_if(data == NULL, FALSE);
408
409         SettingPasswordUG *ad = (SettingPasswordUG *) data;
410
411         if(ad->ed_pw1)
412         {
413                 if (ad->ed_pw1->isFocusFlag || (ad->ed_pw1->eo_check != NULL))
414                 {
415                         /* no matter how many edifileds, it only need focus on 1st editfiled */
416                         elm_object_focus_set(ad->ed_pw1->eo_check, EINA_TRUE);
417                 }
418         }
419
420         return ECORE_CALLBACK_CANCEL;
421 }
422
423 static int setting_password_main_draw_1line_password(void *data, void *cb)
424 {
425         /* error check */
426         retvm_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER,
427                  "[Setting > Password] Data parameter is NULL");
428
429         SettingPasswordUG *ad = (SettingPasswordUG *) data;
430
431         switch (ad->view_type) {
432         case SETTING_PW_TYPE_PIN_LOCK_ON:
433         case SETTING_PW_TYPE_PIN_LOCK_OFF:
434                 ad->ed_pw1 =
435                     setting_create_Gendial_field_entry(ad->scroller,
436                                                        &
437                                                        (ad->itc_variable_height),
438                                                        NULL, ad,
439                                                        SWALLOW_Type_LAYOUT_ENTRY,
440                                                        NULL, NULL, 0,
441                                                        "IDS_ST_BODY_PIN1", NULL,
442                                                        setting_password_main_entry_changed_cb,
443                                                        ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
444                                                        TRUE, TRUE,
445                                                        SETTING_PW_UG_PIN_MAX_LENGTH,
446                                                        0, "0123456789", NULL);
447                 break;
448
449         default:
450                 break;
451         }
452         ecore_idler_add(__focus_on_idler, ad);
453         return 0;
454 }
455
456 static int setting_password_main_clear_1line_password(void *data)
457 {
458         /* error check */
459         retvm_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER,
460                  "[Setting > Password] Data parameter is NULL");
461
462         SettingPasswordUG *ad = (SettingPasswordUG *) data;
463         retv_if(NULL == ad->ed_pw1, -1);
464
465         ad->ed_pw1->sub_desc = NULL;
466         ad->ed_pw1->isFocusFlag = FALSE;
467
468         elm_entry_entry_set(ad->ed_pw1->eo_check, "");
469         Evas_Object *layout = elm_object_parent_widget_get(ad->ed_pw1->eo_check);
470         elm_object_part_text_set(layout, "elm.guidetext", _("IDS_ST_BODY_TAP_TO_INSERT"));
471         return 0;
472 }
473
474 static int setting_password_main_draw_2line_password(void *data, void *cb)
475 {
476         /* error check */
477         retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
478
479         SettingPasswordUG *ad = (SettingPasswordUG *) data;
480
481         switch (ad->view_type) {
482         case SETTING_PW_TYPE_SIM_LOCK_ON:
483                 ad->ed_pw1 =
484                     setting_create_Gendial_field_entry(ad->scroller,
485                                                        &
486                                                        (ad->itc_variable_height),
487                                                        NULL, ad,
488                                                        SWALLOW_Type_LAYOUT_ENTRY,
489                                                        NULL, NULL, 0,
490                                                        PW_SHORT_GUIDE_NEW,
491                                                        NULL,
492                                                        setting_password_main_entry_changed_cb,
493                                                        ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
494                                                        TRUE, TRUE,
495                                                        SETTING_PW_UG_SIM_MAX_LENGTH,
496                                                        0, "0123456789", NULL);
497
498                 ad->ed_pw2 =
499                     setting_create_Gendial_field_entry(ad->scroller,
500                                                        &
501                                                        (ad->itc_variable_height),
502                                                        NULL, ad,
503                                                        SWALLOW_Type_LAYOUT_ENTRY,
504                                                        NULL, NULL, 0,
505                                                        PW_SHORT_GUIDE_CONFIRM,
506                                                        NULL,
507                                                        setting_password_main_entry_changed_cb,
508                                                        ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
509                                                        TRUE, FALSE,
510                                                        SETTING_PW_UG_SIM_MAX_LENGTH,
511                                                        0, "0123456789", NULL);
512                 break;
513
514         default:
515                 break;
516         }
517         ecore_idler_add(__focus_on_idler, ad);
518         return 0;
519 }
520
521 static int setting_password_main_clear_2line_password(void *data)
522 {
523         /* error check */
524         retvm_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER,
525                  "[Setting > Password] Data parameter is NULL");
526
527         SettingPasswordUG *ad = (SettingPasswordUG *) data;
528         Evas_Object *layout = NULL;
529
530         retv_if(NULL == ad->ed_pw1, -1);
531         ad->ed_pw1->sub_desc = NULL;
532         ad->ed_pw1->isFocusFlag = FALSE;
533         elm_entry_entry_set(ad->ed_pw1->eo_check, "");
534         layout = elm_object_parent_widget_get(ad->ed_pw1->eo_check);
535         elm_object_part_text_set(layout, "elm.guidetext", _("IDS_ST_BODY_TAP_TO_INSERT"));
536
537         retv_if(NULL == ad->ed_pw2, -1);
538         ad->ed_pw2->sub_desc = NULL;
539         ad->ed_pw2->isFocusFlag = FALSE;
540         elm_entry_entry_set(ad->ed_pw2->eo_check, "");
541         layout = elm_object_parent_widget_get(ad->ed_pw2->eo_check);
542         elm_object_part_text_set(layout, "elm.guidetext", _("IDS_ST_BODY_TAP_TO_INSERT"));
543         return 0;
544 }
545
546 static int setting_password_main_draw_3line_password(void *data, void *cb)
547 {
548         /* error check */
549         retvm_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER,
550                  "[Setting > Password] Data parameter is NULL");
551
552         SettingPasswordUG *ad = (SettingPasswordUG *) data;
553
554         switch (ad->view_type) {
555         case SETTING_PW_TYPE_CHANGE_PIN1:
556                 ad->ed_pw1 =
557                     setting_create_Gendial_field_entry(ad->scroller,
558                                                        &
559                                                        (ad->itc_variable_height),
560                                                        NULL, ad,
561                                                        SWALLOW_Type_LAYOUT_ENTRY,
562                                                        NULL, NULL, 0,
563                                                        PW_SHORT_GUIDE_CURRENT,
564                                                        NULL,
565                                                        setting_password_main_entry_changed_cb,
566                                                        ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
567                                                        TRUE, TRUE,
568                                                        SETTING_PW_UG_PIN_MAX_LENGTH,
569                                                        0, "0123456789", NULL);
570
571                 ad->ed_pw2 =
572                     setting_create_Gendial_field_entry(ad->scroller,
573                                                        &
574                                                        (ad->itc_variable_height),
575                                                        NULL, ad,
576                                                        SWALLOW_Type_LAYOUT_ENTRY,
577                                                        NULL, NULL, 0,
578                                                        PW_SHORT_GUIDE_NEW,
579                                                        NULL,
580                                                        setting_password_main_entry_changed_cb,
581                                                        ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
582                                                        TRUE, FALSE,
583                                                        SETTING_PW_UG_PIN_MAX_LENGTH,
584                                                        0, "0123456789", NULL);
585
586                 ad->ed_pw3 =
587                     setting_create_Gendial_field_entry(ad->scroller,
588                                                        &
589                                                        (ad->itc_variable_height),
590                                                        NULL, ad,
591                                                        SWALLOW_Type_LAYOUT_ENTRY,
592                                                        NULL, NULL, 0,
593                                                        PW_SHORT_GUIDE_CONFIRM,
594                                                        NULL,
595                                                        setting_password_main_entry_changed_cb,
596                                                        ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
597                                                        TRUE, FALSE,
598                                                        SETTING_PW_UG_PIN_MAX_LENGTH,
599                                                        0, "0123456789", NULL);
600                 break;
601
602         case SETTING_PW_TYPE_CHANGE_PIN2:
603                 ad->ed_pw1 =
604                     setting_create_Gendial_field_entry(ad->scroller,
605                                                        &
606                                                        (ad->itc_variable_height),
607                                                        NULL, ad,
608                                                        SWALLOW_Type_LAYOUT_ENTRY,
609                                                        NULL, NULL, 0,
610                                                        PW_SHORT_GUIDE_CURRENT,
611                                                        NULL,
612                                                        setting_password_main_entry_changed_cb,
613                                                        ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
614                                                        TRUE, TRUE,
615                                                        SETTING_PW_UG_PIN_MAX_LENGTH,
616                                                        0, "0123456789", NULL);
617
618                 ad->ed_pw2 =
619                     setting_create_Gendial_field_entry(ad->scroller,
620                                                        &
621                                                        (ad->itc_variable_height),
622                                                        NULL, ad,
623                                                        SWALLOW_Type_LAYOUT_ENTRY,
624                                                        NULL, NULL, 0,
625                                                        PW_SHORT_GUIDE_NEW,
626                                                        NULL,
627                                                        setting_password_main_entry_changed_cb,
628                                                        ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
629                                                        TRUE, FALSE,
630                                                        SETTING_PW_UG_PIN_MAX_LENGTH,
631                                                        0, "0123456789", NULL);
632
633                 ad->ed_pw3 =
634                     setting_create_Gendial_field_entry(ad->scroller,
635                                                        &
636                                                        (ad->itc_variable_height),
637                                                        NULL, ad,
638                                                        SWALLOW_Type_LAYOUT_ENTRY,
639                                                        NULL, NULL, 0,
640                                                        PW_SHORT_GUIDE_CONFIRM,
641                                                        NULL,
642                                                        setting_password_main_entry_changed_cb,
643                                                        ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
644                                                        TRUE, FALSE,
645                                                        SETTING_PW_UG_PIN_MAX_LENGTH,
646                                                        0, "0123456789", NULL);
647                 break;
648
649         case SETTING_PW_TYPE_PIN1_BLOCKED:
650                 ad->ed_pw1 =
651                     setting_create_Gendial_field_entry(ad->scroller,
652                                                        &
653                                                        (ad->itc_variable_height),
654                                                        NULL, ad,
655                                                        SWALLOW_Type_LAYOUT_ENTRY,
656                                                        NULL, NULL, 0,
657                                                        "IDS_ST_BODY_PUK1_CODE",
658                                                        NULL,
659                                                        setting_password_main_entry_changed_cb,
660                                                        ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
661                                                        TRUE, TRUE,
662                                                        SETTING_PW_UG_PIN_MAX_LENGTH,
663                                                        0, "0123456789", NULL);
664
665                 ad->ed_pw2 =
666                     setting_create_Gendial_field_entry(ad->scroller,
667                                                        &
668                                                        (ad->itc_variable_height),
669                                                        NULL, ad,
670                                                        SWALLOW_Type_LAYOUT_ENTRY,
671                                                        NULL, NULL, 0,
672                                                        "IDS_ST_BODY_NEW_PIN1",
673                                                        NULL,
674                                                        setting_password_main_entry_changed_cb,
675                                                        ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
676                                                        TRUE, FALSE,
677                                                        SETTING_PW_UG_PIN_MAX_LENGTH,
678                                                        0, "0123456789", NULL);
679
680                 ad->ed_pw3 =
681                     setting_create_Gendial_field_entry(ad->scroller,
682                                                        &
683                                                        (ad->itc_variable_height),
684                                                        NULL, ad,
685                                                        SWALLOW_Type_LAYOUT_ENTRY,
686                                                        NULL, NULL, 0,
687                                                        "IDS_ST_BODY_CONFIRM_NEW_PIN1",
688                                                        NULL,
689                                                        setting_password_main_entry_changed_cb,
690                                                        ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
691                                                        TRUE, FALSE,
692                                                        SETTING_PW_UG_PIN_MAX_LENGTH,
693                                                        0, "0123456789", NULL);
694                 break;
695
696         case SETTING_PW_TYPE_PIN2_BLOCKED:
697                 ad->ed_pw1 =
698                     setting_create_Gendial_field_entry(ad->scroller,
699                                                        &
700                                                        (ad->itc_variable_height),
701                                                        NULL, ad,
702                                                        SWALLOW_Type_LAYOUT_ENTRY,
703                                                        NULL, NULL, 0,
704                                                        "IDS_ST_BODY_PUK2", NULL,
705                                                        setting_password_main_entry_changed_cb,
706                                                        ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
707                                                        TRUE, TRUE,
708                                                        SETTING_PW_UG_PIN_MAX_LENGTH,
709                                                        0, "0123456789", NULL);
710
711                 ad->ed_pw2 =
712                     setting_create_Gendial_field_entry(ad->scroller,
713                                                        &
714                                                        (ad->itc_variable_height),
715                                                        NULL, ad,
716                                                        SWALLOW_Type_LAYOUT_ENTRY,
717                                                        NULL, NULL, 0,
718                                                        "IDS_ST_BODY_NEW_PIN2",
719                                                        NULL,
720                                                        setting_password_main_entry_changed_cb,
721                                                        ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
722                                                        TRUE, FALSE,
723                                                        SETTING_PW_UG_PIN_MAX_LENGTH,
724                                                        0, "0123456789", NULL);
725
726                 ad->ed_pw3 =
727                     setting_create_Gendial_field_entry(ad->scroller,
728                                                        &
729                                                        (ad->itc_variable_height),
730                                                        NULL, ad,
731                                                        SWALLOW_Type_LAYOUT_ENTRY,
732                                                        NULL, NULL, 0,
733                                                        "IDS_ST_BODY_CONFIRM_NEW_PIN2",
734                                                        NULL,
735                                                        setting_password_main_entry_changed_cb,
736                                                        ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,
737                                                        TRUE, FALSE,
738                                                        SETTING_PW_UG_PIN_MAX_LENGTH,
739                                                        0, "0123456789", NULL);
740                 break;
741
742         default:
743                 break;
744         }
745         ecore_idler_add(__focus_on_idler, ad);
746         return 0;
747 }
748
749 static int setting_password_main_clear_3line_password(void *data)
750 {
751         /* error check */
752         retvm_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER,
753                  "[Setting > Password] Data parameter is NULL");
754
755         SettingPasswordUG *ad = (SettingPasswordUG *) data;
756         Evas_Object *layout = NULL;
757
758         retv_if(NULL == ad->ed_pw1, -1);
759         ad->ed_pw1->sub_desc = NULL;
760         ad->ed_pw1->isFocusFlag = FALSE;
761         elm_entry_entry_set(ad->ed_pw1->eo_check, "");
762         layout = elm_object_parent_widget_get(ad->ed_pw1->eo_check);
763         elm_object_part_text_set(layout, "elm.guidetext", _("IDS_ST_BODY_TAP_TO_INSERT"));
764
765         retv_if(NULL == ad->ed_pw2, -1);
766         ad->ed_pw2->sub_desc = NULL;
767         ad->ed_pw2->isFocusFlag = FALSE;
768         elm_entry_entry_set(ad->ed_pw2->eo_check, "");
769         layout = elm_object_parent_widget_get(ad->ed_pw2->eo_check);
770         elm_object_part_text_set(layout, "elm.guidetext", _("IDS_ST_BODY_TAP_TO_INSERT"));
771
772         retv_if(NULL == ad->ed_pw3, -1);
773         ad->ed_pw3->sub_desc = NULL;
774         ad->ed_pw3->isFocusFlag = FALSE;
775         elm_entry_entry_set(ad->ed_pw3->eo_check, "");
776         layout = elm_object_parent_widget_get(ad->ed_pw3->eo_check);
777         elm_object_part_text_set(layout, "elm.guidetext", _("IDS_ST_BODY_TAP_TO_INSERT"));
778         return 0;
779 }
780
781 static int setting_password_main_check_1line_password(void *data)
782 {
783         /* error check */
784         retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
785
786         SettingPasswordUG *ad = (SettingPasswordUG *) data;
787
788         const char *entry_str = ad->ed_pw1->sub_desc;
789         ad->focus_data = ad->ed_pw1;
790
791         /*  Empty Check */
792         if (isEmptyStr(entry_str)) {
793                 setting_password_ug_display_desc(ad, _("IDS_ST_BODY_PASSWORD_EMPTY"), FALSE);
794
795                 return SETTING_ENTRY_RETURN_NULL_STR_ERR;
796         }
797
798         /*  Length Check */
799         int entry_str_len = safeStrLen(entry_str);
800         switch (ad->view_type) {
801         case SETTING_PW_TYPE_PIN_LOCK_ON:
802         case SETTING_PW_TYPE_PIN_LOCK_OFF:
803                 {
804                         if (entry_str_len < SETTING_PW_UG_PIN_MIN_LENGTH
805                             || entry_str_len > SETTING_PW_UG_PIN_MAX_LENGTH) {
806                                 setting_password_main_warning_entry_added_byte_popup
807                                         (ad, SETTING_PW_UG_PIN_MIN_LENGTH, SETTING_PW_UG_PIN_MAX_LENGTH);
808                                 return SETTING_ENTRY_REQUIRED_CORRECT_DIGIT_PW;
809                         }
810                 }
811                 break;
812         case SETTING_PW_TYPE_SIM_LOCK_OFF:
813                 {
814                         if (entry_str_len < SETTING_PW_UG_SIM_MIN_LENGTH
815                             || entry_str_len > SETTING_PW_UG_SIM_MAX_LENGTH) {
816                                 setting_password_main_warning_entry_added_byte_popup
817                                         (ad, SETTING_PW_UG_SIM_MIN_LENGTH, SETTING_PW_UG_SIM_MAX_LENGTH);
818                                 return SETTING_ENTRY_REQUIRED_CORRECT_DIGIT_PW;
819                         }
820                 }
821         default:
822                 break;
823         }
824         return SETTING_RETURN_SUCCESS;
825 }
826
827 static int setting_password_main_check_2line_password(void *data)
828 {
829         /* error check */
830         retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
831
832         SettingPasswordUG *ad = (SettingPasswordUG *) data;
833
834         const char *entry_str1 = ad->ed_pw1->sub_desc;
835         const char *entry_str2 = ad->ed_pw2->sub_desc;
836         ad->focus_data = ad->ed_pw1;
837
838         /*  Empty Check */
839         if (isEmptyStr(entry_str1)) {
840                 setting_password_ug_display_desc(ad, _("IDS_ST_BODY_PASSWORD_EMPTY"), FALSE);
841
842                 return SETTING_ENTRY_RETURN_NULL_STR_ERR;
843         }
844
845         if (isEmptyStr(entry_str2)) {
846                 ad->focus_data = ad->ed_pw2;
847                 setting_password_ug_display_desc(ad, _("IDS_ST_BODY_PASSWORD_EMPTY"), FALSE);
848
849                 return SETTING_ENTRY_RETURN_NULL_STR_ERR;
850         }
851
852         /*  Length Check */
853         int entry_str_len = safeStrLen(entry_str1);
854         switch (ad->view_type) {
855         case SETTING_PW_TYPE_SIM_LOCK_ON:
856                 {
857                         if (entry_str_len < SETTING_PW_UG_SIM_MIN_LENGTH
858                             || entry_str_len > SETTING_PW_UG_SIM_MAX_LENGTH) {
859                                 setting_password_main_warning_entry_added_byte_popup
860                                         (ad, SETTING_PW_UG_SIM_MIN_LENGTH, SETTING_PW_UG_SIM_MAX_LENGTH);
861                                 return SETTING_ENTRY_REQUIRED_CORRECT_DIGIT_PW;
862                         }
863                 }
864                 break;
865         default:
866                 break;
867         }
868
869         /*  Match Check */
870         if (0 != safeStrCmp(entry_str1, entry_str2)) {
871                 setting_password_ug_display_desc(ad, _("IDS_ST_POP_PASSWORDS_DO_NOT_MATCH"), FALSE);
872
873                 return SETTING_ENTRY_NOT_MATCH_NEW_CONF_PW;
874         }
875
876         return SETTING_RETURN_SUCCESS;
877 }
878
879 static void
880 setting_password_main_warning_entry_added_byte_popup(SettingPasswordUG *ad,
881                                                      int min, int max)
882 {
883         char str[MAX_SPECIALIZITION_LEN + 1] = { 0 };
884
885         snprintf(str, MAX_SPECIALIZITION_LEN, "%d~%d %s", min, max, _("characters required"));
886
887         setting_password_ug_display_desc(ad, str, FALSE);
888
889 }
890
891 static int setting_password_main_check_3line_password(void *data)
892 {
893         /* error check */
894         retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
895
896         SettingPasswordUG *ad = (SettingPasswordUG *) data;
897
898         const char *entry_str1 = ad->ed_pw1->sub_desc;
899         const char *entry_str2 = ad->ed_pw2->sub_desc;
900         const char *entry_str3 = ad->ed_pw3->sub_desc;
901         ad->focus_data = ad->ed_pw1;
902
903         /*  Empty Check */
904         if (isEmptyStr(entry_str1)) {
905                 setting_password_ug_display_desc(ad, _("IDS_ST_BODY_PASSWORD_EMPTY"), FALSE);
906
907                 return SETTING_ENTRY_RETURN_NULL_STR_ERR;
908         }
909
910         if (isEmptyStr(entry_str2)) {
911                 ad->focus_data = ad->ed_pw2;
912                 setting_password_ug_display_desc(ad, _("IDS_ST_BODY_PASSWORD_EMPTY"), FALSE);
913
914                 return SETTING_ENTRY_RETURN_NULL_STR_ERR;
915         }
916
917         if (isEmptyStr(entry_str3)) {
918                 ad->focus_data = ad->ed_pw3;
919                 setting_password_ug_display_desc(ad, _("IDS_ST_BODY_PASSWORD_EMPTY"), FALSE);
920
921                 return SETTING_ENTRY_RETURN_NULL_STR_ERR;
922         }
923
924         /*  Length Check */
925         int entry_str1_len = safeStrLen(entry_str1);
926         int entry_str2_len = safeStrLen(entry_str2);
927         int entry_str3_len = safeStrLen(entry_str3);
928         switch (ad->view_type) {
929         case SETTING_PW_TYPE_PIN1_BLOCKED:
930         case SETTING_PW_TYPE_PIN2_BLOCKED:
931         case SETTING_PW_TYPE_CHANGE_PIN1:
932         case SETTING_PW_TYPE_CHANGE_PIN2:
933                 {
934                         if (entry_str1_len < SETTING_PW_UG_PIN_MIN_LENGTH
935                             || entry_str1_len > SETTING_PW_UG_PIN_MAX_LENGTH) {
936                                 setting_password_main_warning_entry_added_byte_popup
937                                         (ad, SETTING_PW_UG_PIN_MIN_LENGTH, SETTING_PW_UG_PIN_MAX_LENGTH);
938                                 return SETTING_ENTRY_REQUIRED_CORRECT_DIGIT_PW;
939                         }
940                         if (entry_str2_len < SETTING_PW_UG_PIN_MIN_LENGTH
941                             || entry_str2_len > SETTING_PW_UG_PIN_MAX_LENGTH) {
942                                 ad->focus_data = ad->ed_pw2;
943                                 setting_password_main_warning_entry_added_byte_popup
944                                         (ad, SETTING_PW_UG_PIN_MIN_LENGTH, SETTING_PW_UG_PIN_MAX_LENGTH);
945                                 return SETTING_ENTRY_REQUIRED_CORRECT_DIGIT_PW;
946                         }
947                         if (entry_str3_len < SETTING_PW_UG_PIN_MIN_LENGTH
948                             || entry_str3_len > SETTING_PW_UG_PIN_MAX_LENGTH) {
949                                 ad->focus_data = ad->ed_pw3;
950                                 setting_password_main_warning_entry_added_byte_popup
951                                         (ad, SETTING_PW_UG_PIN_MIN_LENGTH, SETTING_PW_UG_PIN_MAX_LENGTH);
952                                 return SETTING_ENTRY_REQUIRED_CORRECT_DIGIT_PW;
953                         }
954                 }
955                 break;
956         default:
957                 break;
958         }
959
960         /*  Match Check */
961         if (0 != safeStrCmp(entry_str2, entry_str3)) {
962                 ad->focus_data = ad->ed_pw2;
963                 setting_password_ug_display_desc(ad, _("IDS_ST_POP_PASSWORDS_DO_NOT_MATCH"), FALSE);
964
965                 return SETTING_ENTRY_NOT_MATCH_NEW_CONF_PW;
966         }
967
968         return SETTING_RETURN_SUCCESS;
969 }
970
971 static void
972 setting_password_main_click_softkey_cancel_cb(void *data, Evas_Object *obj,
973                                               void *event_info)
974 {
975         /* error check */
976         retm_if(data == NULL, "[Setting > Password] Data parameter is NULL");
977
978         SettingPasswordUG *ad = (SettingPasswordUG *) data;
979
980         /* send result : Cancel */
981         service_h svc;
982         if(service_create(&svc))
983                 return;
984
985         service_add_extra_data(svc, "result", "Cancel");
986         ug_send_result(ad->ug, svc);
987         SETTING_TRACE("Send Result : %s\n", "Cancel");
988
989         service_destroy(svc);
990
991         /* Send destroy request */
992         ug_destroy_me(ad->ug);
993
994 }
995
996 static void
997 setting_password_main_click_softkey_done_cb(void *data, Evas_Object *obj,
998                                             void *event_info)
999 {
1000         /* error check */
1001         retm_if(data == NULL, "[Setting > Password] Data parameter is NULL");
1002
1003         int err = 0;
1004         int ret = 0;
1005         char svalue[SHA256_DIGEST_LENGTH] = { 0, };
1006
1007         memset(svalue, 0x0, SHA256_DIGEST_LENGTH);
1008
1009         SettingPasswordUG *ad = (SettingPasswordUG *) data;
1010         service_h svc;
1011         if (service_create(&svc))
1012                 return;
1013
1014         SETTING_TRACE("ad->view_type:%d", ad->view_type);
1015
1016         switch (ad->view_type) {
1017                 case SETTING_PW_TYPE_PIN_LOCK_ON:
1018                         {
1019                                 SETTING_TRACE("case SETTING_PW_TYPE_PIN_LOCK_ON");
1020
1021                                 ret = setting_password_main_check_1line_password(ad);
1022                                 if (ret == SETTING_RETURN_SUCCESS) {
1023                                         TelSimFacilityPw_t sim_sec_data = { 0, };
1024                                         int tapi_ret = TAPI_API_SUCCESS;
1025                                         const char *entry_str;
1026
1027                                         entry_str = ad->ed_pw1->sub_desc;
1028                                         if (isEmptyStr(entry_str)) {
1029                                                 ad->focus_data = ad->ed_pw1;
1030                                                 SETTING_TRACE_ERROR("[ERR] elm_entry_entry_get(ad->ed_pw1) return NULL!");
1031                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1032                                                 return;
1033                                         }
1034
1035                                         sim_sec_data.lock_type = TAPI_SIM_LOCK_SC;//TAPI_SIM_PTYPE_PIN1;
1036                                         sim_sec_data.pw = (unsigned char *)entry_str;
1037                                         sim_sec_data.pw_len = safeStrLen(entry_str);
1038
1039                                         tapi_ret = tel_enable_sim_facility(ad->handle, &sim_sec_data, setting_sim_facility_enable_cb, ad);
1040                                         setting_password_main_clear_1line_password(ad);
1041
1042                                         if (TAPI_API_SUCCESS != tapi_ret) {
1043                                                 ad->focus_data = ad->ed_pw1;
1044                                                 SETTING_TRACE_DEBUG("%s*** [ERR] tel_enable_sim_facility err=%d ***%s",
1045                                                                                 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
1046                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1047                                         } else {
1048                                                 /*  Success. Send Message to Caller for Modify Pin Lock slider status */
1049                                                 SETTING_TRACE_DEBUG("*** [SUCCESS] tel_enable_sim_facility err=%d ***", tapi_ret);
1050                                         }
1051                                 } else {
1052                                         setting_password_main_clear_1line_password(ad);
1053                                 }
1054                         }
1055                         return;
1056                 case SETTING_PW_TYPE_PIN_LOCK_OFF:
1057                         {
1058                                 SETTING_TRACE("case SETTING_PW_TYPE_PIN_LOCK_OFF");
1059
1060                                 ret = setting_password_main_check_1line_password(ad);
1061
1062                                 if (ret == SETTING_RETURN_SUCCESS) {
1063                                         TelSimFacilityPw_t sim_sec_data = { 0, };
1064                                         int tapi_ret = TAPI_API_SUCCESS;
1065                                         const char *entry_str;
1066
1067                                         entry_str = ad->ed_pw1->sub_desc;
1068                                         if (isEmptyStr(entry_str)) {
1069                                                 ad->focus_data = ad->ed_pw1;
1070                                                 SETTING_TRACE_ERROR("[ERR] elm_entry_entry_get(ad->ed_pw1) return NULL!");
1071                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1072                                                 return;
1073                                         }
1074
1075                                         sim_sec_data.lock_type = TAPI_SIM_LOCK_SC;//TAPI_SIM_PTYPE_PIN1
1076                                         sim_sec_data.pw = (unsigned char *)entry_str;
1077                                         sim_sec_data.pw_len = safeStrLen(entry_str);
1078
1079                                         tapi_ret = tel_disable_sim_facility(ad->handle, &sim_sec_data, setting_sim_facility_disable_cb, ad);
1080                                         setting_password_main_clear_1line_password(ad);
1081
1082                                         if (TAPI_API_SUCCESS != tapi_ret) {
1083                                                 ad->focus_data = ad->ed_pw1;
1084                                                 SETTING_TRACE_DEBUG("%s*** [ERR] tel_disable_sim_facility err=%d ***%s",
1085                                                                                 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
1086                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1087                                         } else {
1088                                                 /*  Success. Send Message to Caller for Modify Pin Lock slider status                                           */
1089                                         }
1090                                 } else {
1091                                         setting_password_main_clear_1line_password(ad);
1092                                 }
1093                         }
1094                         return;
1095                 case SETTING_PW_TYPE_PIN1_BLOCKED:
1096                         {
1097                                 /*  PIN1 Status is "Blocked": User should input puk code and new pin1 code. */
1098                                 /*  If puk code is correct and success to modify pin1 code, display pin1 code change popup */
1099                                 /*  But, if this menu is "Pin Lock", pinlock status will not be changed. */
1100                                 SETTING_TRACE("case SETTING_PW_TYPE_PIN1_BLOCKED");
1101                                 ret = setting_password_main_check_3line_password(ad);
1102
1103                                 if (ret == SETTING_RETURN_SUCCESS) {
1104                                         TelSimSecPw_t puk1_data = { 0, };
1105                                         TelSimSecPw_t pin1_data = { 0, };
1106                                         int tapi_ret = TAPI_API_SUCCESS;
1107                                         const char *puk;
1108                                         const char *new_pin1;
1109
1110                                         puk = ad->ed_pw1->sub_desc;
1111                                         new_pin1 = ad->ed_pw2->sub_desc;
1112                                         if (isEmptyStr(puk)) {
1113                                                 ad->focus_data = ad->ed_pw1;
1114                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1115                                                 return;
1116                                         }
1117
1118                                         if (isEmptyStr(new_pin1)) {
1119                                                 ad->focus_data = ad->ed_pw2;
1120                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1121                                                 return;
1122                                         }
1123
1124                                         puk1_data.type = TAPI_SIM_PTYPE_PUK1;
1125                                         puk1_data.pw = (unsigned char *)puk;
1126                                         puk1_data.pw_len = safeStrLen(puk);
1127
1128                                         pin1_data.type = TAPI_SIM_PTYPE_PIN1;
1129                                         pin1_data.pw = (unsigned char *)new_pin1;
1130                                         pin1_data.pw_len = safeStrLen(new_pin1);
1131
1132                                         tapi_ret = tel_verify_sim_puks(ad->handle, &puk1_data, &pin1_data, setting_sim_verify_puks_cb, ad);
1133                                         setting_password_main_clear_3line_password(ad);
1134
1135                                         if (TAPI_API_SUCCESS != tapi_ret) {
1136                                                 ad->focus_data = ad->ed_pw1;
1137                                                 SETTING_TRACE_DEBUG("%s*** [ERR] tel_verify_sim_puks err=%d ***%s",
1138                                                                                 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
1139                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1140                                         } else {
1141                                                 /*  Success. Send Message to Caller for Modify Pin Lock slider status */
1142
1143                                         }
1144                                 } else {
1145                                         setting_password_main_clear_3line_password(ad);
1146                                 }
1147                         }
1148                         return;
1149                 case SETTING_PW_TYPE_PIN2_BLOCKED:
1150                         {
1151                                 SETTING_TRACE("case SETTING_PW_TYPE_PIN2_BLOCKED");
1152                                 ret = setting_password_main_check_3line_password(ad);
1153
1154                                 if (ret == SETTING_RETURN_SUCCESS) {
1155                                         TelSimSecPw_t puk2_data = { 0, };
1156                                         TelSimSecPw_t pin2_data = { 0, };
1157                                         int tapi_ret = TAPI_API_SUCCESS;
1158                                         const char *puk;
1159                                         const char *new_pin2;
1160
1161                                         puk = ad->ed_pw1->sub_desc;
1162                                         new_pin2 = ad->ed_pw2->sub_desc;
1163                                         if (isEmptyStr(puk)) {
1164                                                 ad->focus_data = ad->ed_pw1;
1165                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1166                                                 return;
1167                                         }
1168
1169                                         if (isEmptyStr(new_pin2)) {
1170                                                 ad->focus_data = ad->ed_pw2;
1171                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1172                                                 return;
1173                                         }
1174
1175                                         puk2_data.type = TAPI_SIM_PTYPE_PUK2;
1176                                         puk2_data.pw = (unsigned char *)puk;
1177                                         puk2_data.pw_len = safeStrLen(puk);
1178
1179                                         pin2_data.type = TAPI_SIM_PTYPE_PIN2;
1180                                         pin2_data.pw = (unsigned char *)new_pin2;
1181                                         pin2_data.pw_len = safeStrLen(new_pin2);
1182
1183                                         tapi_ret = tel_verify_sim_puks(ad->handle, &puk2_data, &pin2_data, setting_sim_verify_puks_cb, ad);
1184                                         setting_password_main_clear_3line_password(ad);
1185
1186                                         if (TAPI_API_SUCCESS != tapi_ret) {
1187                                                 ad->focus_data = ad->ed_pw1;
1188                                                 SETTING_TRACE_DEBUG("%s*** [ERR] tel_verify_sim_puks err=%d ***%s",
1189                                                                                 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
1190                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1191                                         } else {
1192                                                 /*  Success. Send Message to Caller for Modify Pin Lock slider status */
1193
1194                                         }
1195                                 } else {
1196                                         setting_password_main_clear_3line_password(ad);
1197                                 }
1198                         }
1199                         return;
1200                 case SETTING_PW_TYPE_CHANGE_PIN1:
1201                         {
1202                                 SETTING_TRACE("case SETTING_PW_TYPE_CHANGE_PIN1");
1203
1204                                 ret = setting_password_main_check_3line_password(ad);
1205                                 if (ret == SETTING_RETURN_SUCCESS) {
1206                                         const char *old_pw;
1207                                         const char *new_pw;
1208                                         TelSimSecPw_t sim_old_sec_data = { 0, };
1209                                         TelSimSecPw_t sim_new_sec_data = { 0, };
1210                                         int tapi_ret = TAPI_API_SUCCESS;
1211
1212                                         old_pw = ad->ed_pw1->sub_desc;
1213                                         new_pw = ad->ed_pw2->sub_desc;
1214                                         if (isEmptyStr(old_pw)) {
1215                                                 ad->focus_data = ad->ed_pw1;
1216                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1217                                                 return;
1218                                         }
1219
1220                                         if (isEmptyStr(new_pw)) {
1221                                                 ad->focus_data = ad->ed_pw2;
1222                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1223                                                 return;
1224                                         }
1225
1226                                         sim_old_sec_data.type = sim_new_sec_data.type = TAPI_SIM_PTYPE_PIN1;
1227                                         sim_old_sec_data.pw = (unsigned char *)old_pw;
1228                                         sim_old_sec_data.pw_len = safeStrLen(old_pw);
1229                                         sim_new_sec_data.pw = (unsigned char *)new_pw;
1230                                         sim_new_sec_data.pw_len = safeStrLen(new_pw);
1231
1232                                         tapi_ret = tel_change_sim_pins(ad->handle, &sim_old_sec_data, &sim_new_sec_data, setting_sim_change_pins_cb, ad);
1233                                         setting_password_main_clear_3line_password(ad);
1234
1235                                         if (TAPI_API_SUCCESS != tapi_ret) {
1236                                                 ad->focus_data = ad->ed_pw1;
1237                                                 SETTING_TRACE_DEBUG("%s*** [ERR] TelTapiSimChangePIN err=%d ***%s",
1238                                                                                 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
1239                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1240                                         } else {
1241                                                 /*  Success popup and send message to caller */
1242                                                 /* setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_ST_POP_PIN1_CHANGED")); */
1243                                         }
1244                                 } else {
1245                                         setting_password_main_clear_3line_password(ad);
1246                                 }
1247                         }
1248                         return;
1249                 case SETTING_PW_TYPE_CHANGE_PIN2:
1250                         {
1251                                 SETTING_TRACE("case SETTING_PW_TYPE_CHANGE_PIN2");
1252                                 ret = setting_password_main_check_3line_password(ad);
1253                                 if (ret == SETTING_RETURN_SUCCESS) {
1254                                         const char *old_pw;
1255                                         const char *new_pw;
1256                                         TelSimSecPw_t sim_old_sec_data = { 0, };
1257                                         TelSimSecPw_t sim_new_sec_data = { 0, };
1258                                         int tapi_ret = TAPI_API_SUCCESS;
1259
1260                                         old_pw = ad->ed_pw1->sub_desc;
1261                                         new_pw = ad->ed_pw2->sub_desc;
1262                                         if (isEmptyStr(old_pw)) {
1263                                                 ad->focus_data = ad->ed_pw1;
1264                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1265                                                 return;
1266                                         }
1267
1268                                         if (isEmptyStr(new_pw)) {
1269                                                 ad->focus_data = ad->ed_pw2;
1270                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1271                                                 return;
1272                                         }
1273
1274                                         sim_old_sec_data.type = sim_new_sec_data.type = TAPI_SIM_PTYPE_PIN2;
1275                                         sim_old_sec_data.pw = (unsigned char *)old_pw;
1276                                         sim_old_sec_data.pw_len = safeStrLen(old_pw);
1277                                         sim_new_sec_data.pw = (unsigned char *)new_pw;
1278                                         sim_new_sec_data.pw_len = safeStrLen(new_pw);
1279
1280                                         tapi_ret = tel_change_sim_pins(ad->handle, &sim_old_sec_data, &sim_new_sec_data, setting_sim_change_pins_cb, ad);
1281                                         setting_password_main_clear_3line_password(ad);
1282
1283                                         if (TAPI_API_SUCCESS != tapi_ret) {
1284                                                 ad->focus_data = ad->ed_pw1;
1285                                                 SETTING_TRACE_DEBUG("%s*** [ERR] TelTapiSimChangePIN err=%d ***%s",
1286                                                                                 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
1287                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1288                                         } else {
1289                                                 /*  Success popup and send message to caller */
1290                                                 /* setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_ST_POP_PIN2_CHANGED")); */
1291                                         }
1292                                 } else {
1293                                         setting_password_main_clear_3line_password(ad);
1294                                 }
1295                         }
1296                         return;
1297                 case SETTING_PW_TYPE_SIM_LOCK_ON:
1298                         {
1299                                 SETTING_TRACE("case SETTING_PW_TYPE_SIM_LOCK_ON");
1300
1301                                 ret = setting_password_main_check_2line_password(ad);
1302
1303                                 if (ret == SETTING_RETURN_SUCCESS) {
1304                                         TelSimFacilityPw_t sim_sec_data = { 0, };
1305                                         int tapi_ret = TAPI_API_SUCCESS;
1306                                         const char *entry_str;
1307                                         entry_str = ad->ed_pw1->sub_desc;
1308                                         if (isEmptyStr(entry_str)) {
1309                                                 ad->focus_data = ad->ed_pw1;
1310                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1311                                                 return;
1312                                         }
1313
1314                                         sim_sec_data.lock_type = TAPI_SIM_LOCK_PS;//TAPI_SIM_PTYPE_SIM
1315                                         sim_sec_data.pw = (unsigned char *)entry_str;
1316                                         sim_sec_data.pw_len = safeStrLen(entry_str);
1317
1318                                         tapi_ret = tel_enable_sim_facility(ad->handle, &sim_sec_data, setting_sim_facility_enable_cb, ad);
1319                                         setting_password_main_clear_2line_password(ad);
1320
1321                                         SETTING_TRACE("SIM Lock password : %s\n", (char *)(sim_sec_data.pw));
1322                                         if (TAPI_API_SUCCESS != tapi_ret) {
1323                                                 ad->focus_data = ad->ed_pw1;
1324                                                 SETTING_TRACE_DEBUG("%s*** [ERR] tel_enable_sim_facility err=%d ***%s",
1325                                                                                 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
1326                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1327                                         } else {
1328                                                 /*  Success. Send Message to Caller for Modify Pin Lock slider status */
1329
1330                                         }
1331                                 } else {
1332                                         setting_password_main_clear_2line_password(ad);
1333                                 }
1334                         }
1335                         return;
1336                 case SETTING_PW_TYPE_SIM_LOCK_OFF:
1337                         {
1338                                 SETTING_TRACE("case SETTING_PW_TYPE_SIM_LOCK_OFF");
1339
1340                                 ret = setting_password_main_check_1line_password(ad);
1341                                 if (ret == SETTING_RETURN_SUCCESS) {
1342                                         TelSimFacilityPw_t sim_sec_data = { 0, };
1343                                         int tapi_ret = TAPI_API_SUCCESS;
1344                                         const char *entry_str;
1345
1346                                         entry_str = ad->ed_pw1->sub_desc;
1347                                         if (isEmptyStr(entry_str)) {
1348                                                 ad->focus_data = ad->ed_pw1;
1349                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1350                                                 return;
1351                                         }
1352
1353                                         sim_sec_data.lock_type = TAPI_SIM_LOCK_PS;//TAPI_SIM_PTYPE_SIM
1354                                         sim_sec_data.pw = (unsigned char *)entry_str;
1355                                         sim_sec_data.pw_len = safeStrLen(entry_str);
1356
1357                                         tapi_ret = tel_disable_sim_facility(ad->handle, &sim_sec_data, setting_sim_facility_disable_cb, ad);
1358                                         setting_password_main_clear_1line_password(ad);
1359
1360                                         if (TAPI_API_SUCCESS != tapi_ret) {
1361                                                 ad->focus_data = ad->ed_pw1;
1362                                                 SETTING_TRACE_DEBUG("%s*** [ERR] tel_disable_sim_facility err=%d ***%s",
1363                                                                                 SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
1364                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1365                                         } else {
1366                                                 /*  Success. Send Message to Caller for Modify Pin Lock slider status */
1367
1368                                         }
1369                                 } else {
1370                                         setting_password_main_clear_1line_password(ad);
1371                                 }
1372                         }
1373                         return;
1374 #if SUPPORT_FDN
1375                 case SETTING_PW_TYPE_FDN_MODE_ON:
1376                         {
1377                                 SETTING_TRACE("case SETTING_PW_TYPE_FDN_MODE_ON");
1378                                 ret = setting_password_main_check_1line_password(ad);
1379
1380                                 if(ret == SETTING_RETURN_SUCCESS)
1381                                 {
1382                                         const char *entry_str;
1383                                         int tapi_ret = TAPI_API_INVALID_INPUT;
1384
1385                                         TelSimFacilityPw_t sim_sec_data = {0,};
1386                                         int ReqId;
1387
1388                                         entry_str = ad->ed_pw1->sub_desc;
1389                                         if(isEmptyStr(entry_str))
1390                                         {
1391                                                 ad->focus_data = ad->ed_pw1;
1392                                                 SETTING_TRACE_ERROR("[ERR] elm_entry_entry_get(ad->ed_pw1) return NULL!");
1393                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1394                                                 return;
1395                                         }
1396                                         sim_sec_data.lock_type = TAPI_SIM_LOCK_FD;//TAPI_SIM_PTYPE_PIN2;
1397                                         sim_sec_data.pw_len = safeStrLen(entry_str);
1398                                         sim_sec_data.pw = (unsigned char*)entry_str;
1399
1400                                         tapi_ret = tel_enable_sim_facility(ad->handle, &sim_sec_data, setting_sim_facility_enable_cb, ad);
1401                                         setting_password_main_clear_1line_password(ad);
1402
1403                                         if(tapi_ret != TAPI_API_SUCCESS)
1404                                         {
1405                                                 ad->focus_data = ad->ed_pw1;
1406                                                 SETTING_TRACE_ERROR("[ERR] Failed to enable FDN. Tapi return %d", tapi_ret);
1407                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1408                                                 return;
1409                                         }
1410
1411                                         /* Success */
1412                                         if (service_create(&svc))
1413                                                 return;
1414
1415                                         service_add_extra_data(svc, "result", ad->view_type_string);
1416                                         ug_send_result(ad->ug, svc);
1417                                         SETTING_TRACE("Send Result : %s\n", ad->view_type_string);
1418                                         service_destroy(svc);
1419                                         //ug_destroy_me(ad->ug);
1420                                 }
1421                                 else
1422                                 {
1423                                         /* check failed */
1424                                         setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), TRUE);
1425                                 }
1426                         }
1427                         break;
1428                 case SETTING_PW_TYPE_FDN_MODE_OFF:
1429                         {
1430                                 SETTING_TRACE("case SETTING_PW_TYPE_FDN_MODE_OFF");
1431                                 ret = setting_password_main_check_1line_password(ad);
1432
1433                                 if(ret == SETTING_RETURN_SUCCESS)
1434                                 {
1435                                         const char *entry_str;
1436                                         int tapi_ret = TAPI_API_INVALID_INPUT;
1437
1438                                         TelSimFacilityPw_t sim_sec_data = {0,};
1439
1440                                         entry_str = ad->ed_pw1->sub_desc;
1441                                         if(isEmptyStr(entry_str))
1442                                         {
1443                                                 ad->focus_data = ad->ed_pw1;
1444                                                 SETTING_TRACE_ERROR("[ERR] elm_entry_entry_get(ad->ed_pw1) return NULL!");
1445                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1446                                                 return;
1447                                         }
1448                                         sim_sec_data.lock_type = TAPI_SIM_LOCK_FD;//TAPI_SIM_PTYPE_PIN2
1449                                         sim_sec_data.pw_len = safeStrLen(entry_str);
1450                                         sim_sec_data.pw = (unsigned char*)entry_str;
1451
1452                                         tapi_ret = tel_disable_sim_facility(ad->handle, &sim_sec_data, setting_sim_facility_disable_cb, ad);
1453                                         setting_password_main_clear_1line_password(ad);
1454
1455                                         if(tapi_ret != TAPI_API_SUCCESS)
1456                                         {
1457                                                 ad->focus_data = ad->ed_pw1;
1458                                                 SETTING_TRACE_ERROR("[ERR] Failed to disable FDN. Tapi return %d", tapi_ret);
1459                                                 setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), FALSE);
1460                                                 return;
1461                                         }
1462
1463                                         /* Success */
1464                                         if (service_create(&svc))
1465                                                 return;
1466
1467                                         service_add_extra_data(svc, "result", ad->view_type_string);
1468                                         ug_send_result(ad->ug, svc);
1469                                         SETTING_TRACE("Send Result : %s\n", ad->view_type_string);
1470
1471                                         service_destroy(svc);
1472                                         //ug_destroy_me(ad->ug);
1473                                 }
1474                                 else
1475                                 {
1476                                         /* check failed */
1477                                         setting_password_ug_create_popup_notitle_nobtn(ad, _("IDS_COM_POP_ERROR"), TRUE);
1478                                 }
1479                         }
1480                         break;
1481  
1482 #endif
1483                 default:
1484                         return;
1485         }
1486
1487         service_add_extra_data(svc, "result", ad->view_type_string);
1488         ug_send_result(ad->ug, svc);
1489         SETTING_TRACE("Send Result : %s\n", ad->view_type_string);
1490
1491         service_destroy(svc);
1492         /* Send destroy request */
1493         ug_destroy_me(ad->ug);
1494 }