4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
6 * Contact: MyoungJune Park <mj2004.park@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
23 *@defgroup setting-personalpage
24 *UG creation code for setting-personalpage
27 #include <setting-personalpage.h>
28 #include <setting-cfg.h>
29 #include <notification.h>
31 #include <app_manager.h>
34 #define UG_MODULE_API __attribute__ ((visibility("default")))
37 char* get_unlock_method_str(void *priv)
42 vconf_get_int(VCONFKEY_SETAPPL_PERSONAL_MODE_UNLOCK_METHOD_INT, &value);
46 return "IDS_ST_BODY_SIMPLE_PASSWORD"; //setting_gettext("PIN");
50 return "IDS_COM_BODY_AUTH_PASSWORD"; //setting_gettext("IDS_COM_BODY_OFF_M_STATUS");
54 return "IDS_ST_BODY_NOT_ASSIGNED";
58 void setting_personalpage_vconf_change_cb(keynode_t *key, void *data)
62 SettingPersonalpageUG *ad = (SettingPersonalpageUG *) data;
64 char *vconf_name = vconf_keynode_get_name(key);
65 SETTING_TRACE("key name : %s", vconf_name);
66 if(!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL))
68 int status = vconf_keynode_get_bool(key);
71 SETTING_TRACE("update tobble to %d", status);
72 #if SUPPORT_MASTER_CONTROL
73 elm_check_state_set(ad->master_control, status);
75 setting_update_gl_item_chk_status(ad->data_personal_mode, status);
77 //update unlock method menu
78 if(ad->data_unlock_method && ad->data_unlock_method->item)
82 setting_enable_genlist_item(ad->data_unlock_method->item);
86 setting_disable_genlist_item(ad->data_unlock_method->item);
90 else if(!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_PERSONAL_MODE_UNLOCK_METHOD_INT))
92 if(ad->data_unlock_method && ad->data_unlock_method->item)
94 ad->data_unlock_method->sub_desc = (char*)g_strdup(get_unlock_method_str(ad));
95 elm_object_item_data_set(ad->data_unlock_method->item, ad->data_unlock_method);
96 elm_genlist_item_update(ad->data_unlock_method->item);
101 static void setting_personalpage_ug_cb_resize(void *data, Evas *e,
102 Evas_Object *obj, void *event_info)
104 ret_if(data == NULL);
106 SettingPersonalpageUG *ad = (SettingPersonalpageUG *) data; /* ad is point to data */
107 setting_view_update(&setting_view_personalpage_main, ad);
110 Evas_Object *setting_personalpage_create_win_layout_without_bg(Evas_Object *win_layout,
111 Evas_Object *win_obj)
113 Evas_Object *layout = NULL;
115 layout = elm_layout_add(win_obj);
116 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
117 setting_retvm_if(layout == NULL, FALSE, "layout == NULL");
119 elm_layout_theme_set(layout, "layout", "application", "default");
120 evas_object_show(layout);
124 static void *setting_personalpage_ug_on_create(ui_gadget_h ug,
125 enum ug_mode mode, app_control_h service,
129 setting_retvm_if((!priv), NULL, "!priv");
131 SettingPersonalpageUG *personalUG = priv;
134 personalUG->win_main_layout = (Evas_Object *) ug_get_parent_layout(ug);
135 personalUG->win_get = (Evas_Object *) ug_get_window();
136 evas_object_show(personalUG->win_main_layout);
137 personalUG->evas = evas_object_evas_get(personalUG->win_main_layout);
139 //setting_retvm_if(personalUG->win_main_layout == NULL, NULL,
140 // "[Setting >> Personal page] cannot get main window ");
141 if(!personalUG->win_main_layout)
142 SETTING_TRACE_ERROR("can't get parent layout");
144 bindtextdomain(SETTING_PACKAGE, SETTING_LOCALEDIR);
146 /* register view node table */
147 setting_view_node_table_intialize();
149 char *viewtype = NULL;
150 app_control_get_extra_data(service, "viewtype", &viewtype);
152 if(viewtype && !safeStrCmp(viewtype, "unlock_method"))
154 int current_unlock = -1;
155 vconf_get_int(VCONFKEY_SETAPPL_PERSONAL_MODE_UNLOCK_METHOD_INT, ¤t_unlock);
156 if(current_unlock == 1 || current_unlock == 2)
158 personalUG->ly_main = setting_personalpage_create_win_layout_without_bg(personalUG->win_get, personalUG->win_get);
159 // just change on/off using password ug.
160 personalUG->viewtype = PERSONAL_VIEW_PW_UG;
161 //setting_personalpage_create_password_sg(personalUG, SETTING_PERSONAL_PW_CALLER_ON_OFF);
162 return personalUG->ly_main;
166 personalUG->viewtype = PERSONAL_VIEW_UNLOCK_METHOD;
167 setting_view_node_table_register(&setting_view_personalpage_unlock, NULL);
168 personalUG->view_to_load = &setting_view_personalpage_unlock;
173 personalUG->viewtype = PERSONAL_VIEW_MAIN;
174 setting_view_node_table_register(&setting_view_personalpage_main, NULL);
175 setting_view_node_table_register(&setting_view_personalpage_unlock, &setting_view_personalpage_main);
176 personalUG->view_to_load = &setting_view_personalpage_main;
178 // register vconf callback
179 vconf_notify_key_changed(VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL, setting_personalpage_vconf_change_cb, personalUG);
180 vconf_notify_key_changed(VCONFKEY_SETAPPL_PERSONAL_MODE_UNLOCK_METHOD_INT, setting_personalpage_vconf_change_cb, personalUG);
184 setting_retvm_if(NULL == personalUG->view_to_load, NULL,
185 "NULL == personalUG->view_to_load");
187 setting_view_node_set_cur_view(personalUG->view_to_load);
188 setting_view_create(personalUG->view_to_load, (void *)personalUG);
189 evas_object_event_callback_add(personalUG->win_main_layout,
190 EVAS_CALLBACK_RESIZE,
191 setting_personalpage_ug_cb_resize, personalUG);
194 return personalUG->ly_main;
197 void __off_popup_resp_cb(void *data, Evas_Object *obj, void *event_info)
202 SettingPersonalpageUG *ad = (SettingPersonalpageUG *)data;
204 int response_type = btn_type(obj);
206 if(response_type == POPUP_RESPONSE_CANCEL)
208 SETTING_TRACE("CANCEL");
210 else if(response_type == POPUP_RESPONSE_OK)
215 if(ad->off_popup_check)
217 int status = elm_check_state_get(ad->off_popup_check);
218 vconf_set_bool("db/setting/personal_off_popup_do_not_show_flag", status);
220 setting_personalpage_unmount(ad);
225 evas_object_del(ad->off_popup);
226 ad->off_popup = NULL;
229 ug_destroy_me(ad->ug);
232 static void setting_personalpage_ug_on_start(ui_gadget_h ug, app_control_h service,
235 setting_retm_if((!priv), "!priv");
236 SettingPersonalpageUG *personalUG = priv;
238 if(personalUG->viewtype == PERSONAL_VIEW_PW_UG)
241 vconf_get_bool(VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL, ¤t);
242 if(current) /* On to Off */
245 vconf_get_bool("db/setting/personal_off_popup_do_not_show_flag", &do_not_show);
248 setting_personalpage_unmount(personalUG);
249 ug_destroy_me(personalUG->ug);
254 //elm_win_alpha_set(personalUG->win_get, EINA_TRUE);
255 personalUG->off_popup = setting_create_popup_with_label_check(personalUG, personalUG->ly_main,
257 _("IDS_ST_POP_ANY_PERSONAL_CONTENT_WILL_NOT_BE_ACCESSIBLE_IN_NORMAL_MODE"),
258 _("IDS_ST_BODY_DO_NOT_SHOW_AGAIN"), &(personalUG->off_popup_check),
259 __off_popup_resp_cb, 0,
261 "IDS_COM_SK_CANCEL", "IDS_COM_SK_OK");
266 setting_personalpage_create_password_sg(personalUG, SETTING_PERSONAL_PW_CALLER_ON_OFF);
271 static void setting_personalpage_ug_on_pause(ui_gadget_h ug, app_control_h service,
276 static void setting_personalpage_ug_on_resume(ui_gadget_h ug, app_control_h service,
283 static void setting_personalpage_ug_on_destroy(ui_gadget_h ug, app_control_h service,
286 //SETTING_TRACE_BEGIN;
287 setting_retm_if((!priv), "!priv");
288 SettingPersonalpageUG *personalUG = priv;
291 if(!app_control_create(&reply))
293 service_reply_to_launch_request(reply, service, APP_CONTROL_ERROR_NONE);
294 app_control_destroy(reply);
297 evas_object_event_callback_del(personalUG->win_main_layout, EVAS_CALLBACK_RESIZE, setting_personalpage_ug_cb_resize); /* fix flash issue for gallery */
301 if(personalUG->viewtype == PERSONAL_VIEW_UNLOCK_METHOD)
303 setting_view_destroy(&setting_view_personalpage_unlock, personalUG);
305 else if(personalUG->viewtype == PERSONAL_VIEW_PW_UG)
307 //SETTING_TRACE_DEBUG("viewtype is PW_UG");
308 if (personalUG->ly_main != NULL)
310 if(personalUG->off_popup)
312 evas_object_del(personalUG->off_popup);
313 personalUG->off_popup = NULL;
315 //SETTING_TRACE_DEBUG("delete ly_main");
316 evas_object_del(personalUG->ly_main);
317 personalUG->ly_main = NULL;
322 // unregister vconf callback
323 vconf_ignore_key_changed(VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL, setting_personalpage_vconf_change_cb);
324 vconf_ignore_key_changed(VCONFKEY_SETAPPL_PERSONAL_MODE_UNLOCK_METHOD_INT, setting_personalpage_vconf_change_cb);
325 setting_view_destroy(&setting_view_personalpage_unlock, personalUG);
326 setting_view_destroy(&setting_view_personalpage_main, personalUG);
329 FREE(personalUG->change_unlock_method_data);
331 if (NULL != ug_get_layout(personalUG->ug)) {
332 evas_object_hide((Evas_Object *) ug_get_layout(personalUG->ug));
333 evas_object_del((Evas_Object *) ug_get_layout(personalUG->ug));
337 static void setting_personalpage_ug_on_message(ui_gadget_h ug, app_control_h msg,
338 app_control_h service, void *priv)
343 static void setting_personalpage_ug_on_event(ui_gadget_h ug,
344 enum ug_event event, app_control_h service,
348 SettingPersonalpageUG *ad = (SettingPersonalpageUG *)priv;
349 setting_retm_if(NULL == ad, "ad is NULL");
351 case UG_EVENT_LOW_MEMORY:
353 case UG_EVENT_LOW_BATTERY:
355 case UG_EVENT_LANG_CHANGE:
356 setting_navi_items_update(ad->navi_bar);
358 case UG_EVENT_ROTATE_PORTRAIT:
359 case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
360 case UG_EVENT_ROTATE_LANDSCAPE:
361 case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
363 SETTING_TRACE_DEBUG("rotation events : %d", event);
366 case UG_EVENT_REGION_CHANGE:
373 static void setting_personalpage_ug_on_key_event(ui_gadget_h ug,
374 enum ug_key_event event,
375 app_control_h service, void *priv)
379 SettingPersonalpageUG *ad = (SettingPersonalpageUG *) priv; /* ad is point to priv */
381 case UG_KEY_EVENT_END:
383 if (elm_naviframe_top_item_get(ad->navi_bar) ==
384 elm_naviframe_bottom_item_get(ad->navi_bar)) {
387 /* elm_naviframe_item_pop(ad->navi_bar); */
388 setting_view_cb_at_endKey(ad);
398 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
401 SettingPersonalpageUG *personalUG = calloc(1, sizeof(SettingPersonalpageUG));
402 setting_retvm_if(!personalUG, -1,
403 "Create SettingPersonalpageUG obj failed");
405 ops->create = setting_personalpage_ug_on_create;
406 ops->start = setting_personalpage_ug_on_start;
407 ops->pause = setting_personalpage_ug_on_pause;
408 ops->resume = setting_personalpage_ug_on_resume;
409 ops->destroy = setting_personalpage_ug_on_destroy;
410 ops->message = setting_personalpage_ug_on_message;
411 ops->event = setting_personalpage_ug_on_event;
412 ops->key_event = setting_personalpage_ug_on_key_event;
413 ops->priv = personalUG;
414 ops->opt = UG_OPT_INDICATOR_ENABLE;
419 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
421 struct SettingPersonalpageUG *personalUG;
422 setting_retm_if(!ops, "ops == NULL");
424 personalUG = ops->priv;
429 void setting_personalpage_layout_passwd_ug_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
431 Evas_Object *base = ug_get_layout(ug);
436 case UG_MODE_FULLVIEW:
437 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
439 evas_object_show(base);
448 void setting_personalpage_destroy_password_ug_cb(ui_gadget_h ug, void *priv)
452 setting_ug_destroy(ug);
456 void create_notification(void *data)
459 notification_error_e err;
464 notification_delete_all_by_type("org.tizen.setting.personal", NOTIFICATION_VARIABLE_TYPE_NONE);
466 // 1 line notification on the notification bar.
467 notification_status_message_post(_("IDS_ST_TPOP_PERSONAL_MODE_ENABLED_ABB"));
469 noti = notification_new(NOTIFICATION_TYPE_ONGOING, NOTIFICATION_GROUP_ID_NONE, NOTIFICATION_PRIV_ID_NONE);
472 err = notification_set_pkgname(noti, "org.tizen.setting.personal");
473 SETTING_TRACE_DEBUG("notification_set_pkgname() returns %d", err);
474 err = notification_set_text_domain(noti, SETTING_PACKAGE, SETTING_LOCALEDIR);
475 SETTING_TRACE_DEBUG("notification_set_text_domain() returns %d", err);
476 err = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_TITLE,
477 _("IDS_ST_HEADER_PERSONAL_MODE"),
478 "IDS_ST_HEADER_PERSONAL_MODE", NOTIFICATION_VARIABLE_TYPE_NONE);
479 SETTING_TRACE_DEBUG("notification_set_text() returns %d", err);
480 err = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT,
481 _("IDS_ST_TPOP_PERSONAL_MODE_ENABLED_ABB"),
482 "IDS_ST_TPOP_PERSONAL_MODE_ENABLED_ABB", NOTIFICATION_VARIABLE_TYPE_NONE);
483 SETTING_TRACE_DEBUG("notification_set_text() returns %d", err);
485 err = notification_set_layout(noti, NOTIFICATION_LY_ONGOING_EVENT);
486 SETTING_TRACE_DEBUG("notification_set_layout() returns %d", err);
487 err = notification_insert(noti, &id);
488 SETTING_TRACE_DEBUG("notification_insert() returns %d", err);
489 SETTING_TRACE_DEBUG("notification(%d) is created.", id);
491 ret = notification_free(noti);
492 if (ret != NOTIFICATION_ERROR_NONE) {
493 SETTING_TRACE_ERROR("Fail to notification_free [%d]", ret);
498 void setting_personalpage_unmount(void *data)
501 ret_if(data == NULL);
502 SettingPersonalpageUG *ad = (SettingPersonalpageUG *) data;
507 SETTING_TRACE("change #1. init failed");
508 setting_create_simple_popup(ad, ad->navi_bar, NULL, "Fail to change unlock method");
511 if(pse_unmount() != 0)
513 SETTING_TRACE("change #2. unmount failed");
514 setting_create_simple_popup(ad, ad->navi_bar, NULL, "Fail to change unlock method");
520 vconf_set_bool(VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL, 0);
521 notification_delete_all_by_type("org.tizen.setting.personal", NOTIFICATION_VARIABLE_TYPE_NONE);
522 // 1 line notification on the notification bar.
523 notification_status_message_post(_("IDS_ST_TPOP_PERSONAL_MODE_DISABLED_ABB"));
526 void __unmount_popup_resp_cb(void *data, Evas_Object *obj, void *event_info)
529 ret_if(data == NULL);
530 SettingPersonalpageUG *ad = (SettingPersonalpageUG *)data;
532 setting_personalpage_unmount(ad);
533 if(ad->unmount_popup)
535 evas_object_del(ad->unmount_popup);
536 ad->unmount_popup = NULL;
538 ug_destroy_me(ad->ug);
541 void setting_personalpage_end_password_ug_cb(ui_gadget_h ug, void *priv)
544 ret_if(priv == NULL);
545 SettingPersonalpageUG *ad = (SettingPersonalpageUG *) priv;
547 ad->ug_passwd = NULL;
549 if(ad->do_nothing_flag == 1 || !ad->result_cb_called)
551 //SETTING_TRACE_DEBUG("viewtype %d", ad->viewtype);
552 ad->do_nothing_flag = 0;
553 if(ad->viewtype == PERSONAL_VIEW_PW_UG)
554 ug_destroy_me(ad->ug);
558 ad->result_cb_called = 0;
560 if(ad->unmount_flag == 1)
562 ad->unmount_flag = 0;
564 char temp[256] ={0,};
565 snprintf(temp, 256, "%s<br>%s", _("IDS_COM_INCORRECT_PASSWORD_ENTERED_5_TIMES"), _("IDS_ST_TPOP_PERSONAL_MODE_DISABLED_ABB"));
567 ad->unmount_popup = setting_create_popup_without_btn(ad, ad->win_main_layout,
570 __unmount_popup_resp_cb, 2, TRUE, TRUE);
574 if(ad->pw_ug_caller == SETTING_PERSONAL_PW_CALLER_UNLOCK_PIN || ad->pw_ug_caller == SETTING_PERSONAL_PW_CALLER_UNLOCK_PASSWORD)
577 vconf_get_bool(VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL, ¤t);
583 setting_create_simple_popup(ad, ad->navi_bar, NULL, "IDS_ST_TPOP_FAILED_TO_ENABLE_PERSONAL_MODE_TRY_AGAIN_ABB");
587 char *personal_data = NULL;
589 personal_data = vconf_get_str("db/setting/personal_key");
590 if(pse_mount(personal_data) != 0)
592 setting_create_simple_popup(ad, ad->navi_bar, NULL, "IDS_ST_TPOP_FAILED_TO_ENABLE_PERSONAL_MODE_TRY_AGAIN_ABB");
599 vconf_set_bool(VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL, !current);
600 create_notification(ad);
604 /* mount again because key is changed */
608 SETTING_TRACE("change #1. init failed");
609 setting_create_simple_popup(ad, ad->navi_bar, NULL, "Fail to change unlock method");
612 if(pse_unmount() != 0)
614 SETTING_TRACE("change #2. unmount failed");
615 setting_create_simple_popup(ad, ad->navi_bar, NULL, "Fail to change unlock method");
619 // re-mount with new.
620 char *personal_data = NULL;
621 personal_data = vconf_get_str("db/setting/personal_key");
623 if(pse_mount(personal_data) != 0)
625 SETTING_TRACE("change #3. re-mount failed");
626 setting_create_simple_popup(ad, ad->navi_bar, NULL, "Fail to change unlock method");
634 vconf_set_int(VCONFKEY_SETAPPL_PERSONAL_MODE_UNLOCK_METHOD_INT, ad->pw_ug_caller - 1);
635 if(ad->viewtype == PERSONAL_VIEW_UNLOCK_METHOD)
636 ug_destroy_me(ad->ug);
638 setting_view_change(&setting_view_personalpage_unlock, &setting_view_personalpage_main, ad);
640 else if(ad->pw_ug_caller == SETTING_PERSONAL_PW_CALLER_UNLOCK_METHOD)
642 setting_view_change(&setting_view_personalpage_main, &setting_view_personalpage_unlock, ad);
644 else if(ad->pw_ug_caller == SETTING_PERSONAL_PW_CALLER_PERSONAL
645 || ad->pw_ug_caller == SETTING_PERSONAL_PW_CALLER_ON_OFF)
649 vconf_get_bool(VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL, ¤t);
651 new_status = !current;
652 SETTING_TRACE("new_status %d", new_status);
658 setting_create_simple_popup(ad, ad->win_get, NULL, "IDS_ST_TPOP_FAILED_TO_ENABLE_PERSONAL_MODE_TRY_AGAIN_ABB");
659 if(ad->pw_ug_caller == SETTING_PERSONAL_PW_CALLER_ON_OFF)
660 ug_destroy_me(ad->ug);
665 char *personal_data = NULL;
667 personal_data = vconf_get_str("db/setting/personal_key");
669 if(pse_mount(personal_data) != 0)
671 setting_create_simple_popup(ad, ad->win_get, NULL, "IDS_ST_TPOP_FAILED_TO_ENABLE_PERSONAL_MODE_TRY_AGAIN_ABB");
672 if(ad->pw_ug_caller == SETTING_PERSONAL_PW_CALLER_ON_OFF)
674 ug_destroy_me(ad->ug);
686 vconf_set_bool(VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL, new_status);
687 create_notification(ad);
689 else if(new_status == 0)
694 setting_create_simple_popup(ad, ad->win_get, NULL, "IDS_ST_TPOP_FAILED_TO_DISABLE_PERSONAL_MODE_TRY_AGAIN_ABB");
695 if(ad->pw_ug_caller == SETTING_PERSONAL_PW_CALLER_ON_OFF)
696 ug_destroy_me(ad->ug);
701 if(pse_unmount() != 0)
703 setting_create_simple_popup(ad, ad->win_get, NULL, "IDS_ST_TPOP_FAILED_TO_DISABLE_PERSONAL_MODE_TRY_AGAIN_ABB");
704 if(ad->pw_ug_caller == SETTING_PERSONAL_PW_CALLER_ON_OFF)
706 ug_destroy_me(ad->ug);
716 vconf_set_bool(VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL, new_status);
718 notification_delete_all_by_type("setting-personalpage-efl", NOTIFICATION_VARIABLE_TYPE_NONE);
719 // 1 line notification on the notification bar.
720 notification_status_message_post(_("IDS_ST_TPOP_PERSONAL_MODE_DISABLED_ABB"));
722 if(ad->pw_ug_caller == SETTING_PERSONAL_PW_CALLER_ON_OFF)
723 ug_destroy_me(ad->ug);
727 void setting_personalpage_result_password_ug_cb(ui_gadget_h ug, app_control_h service, void *priv)
731 retm_if(priv == NULL, "Data paremeter is NULL");
732 SettingPersonalpageUG *ad = (SettingPersonalpageUG *) priv;
735 app_control_get_extra_data(service, "result", &result);
739 SETTING_TRACE_DEBUG("result : %s", result);
741 if(!safeStrCmp(result, "Cancel") || !safeStrCmp(result, "Fail") || !safeStrCmp(result, "Restore"))
743 ad->do_nothing_flag = 1;
744 ad->unmount_flag = 0;
746 else if(!safeStrCmp(result, "Unmount"))
748 ad->unmount_flag = 1;
749 ad->do_nothing_flag = 0;
752 ad->result_cb_called = 1;
757 gboolean setting_personalpage_create_password_sg(void *data, int caller)
761 retv_if(data == NULL, FALSE);
763 SettingPersonalpageUG *ad = (SettingPersonalpageUG *) data; /* ad is point to data */
765 /* prevent the ug from being loaded again due to window event queuing */
766 /* added by JTS: CQ H0100135346 */
768 SETTING_TRACE("Password UG is already loaded.");
772 struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
776 cbs->layout_cb = setting_personalpage_layout_passwd_ug_cb;
777 cbs->result_cb = setting_personalpage_result_password_ug_cb;
778 cbs->destroy_cb = setting_personalpage_destroy_password_ug_cb;
779 cbs->end_cb = setting_personalpage_end_password_ug_cb;
780 cbs->priv = (void *)ad;
783 if (app_control_create(&svc)) {
788 ad->do_nothing_flag = 0;
789 ad->pw_ug_caller = caller;
791 if(caller == SETTING_PERSONAL_PW_CALLER_PERSONAL
792 || caller == SETTING_PERSONAL_PW_CALLER_ON_OFF)
793 app_control_add_extra_data(svc, "viewtype", "SETTING_PW_TYPE_PERSONAL_PAGE_ON");
794 else if(caller == SETTING_PERSONAL_PW_CALLER_UNLOCK_METHOD)
795 app_control_add_extra_data(svc, "viewtype", "SETTING_PW_TYPE_PERSONAL_PAGE");
796 else if(caller == SETTING_PERSONAL_PW_CALLER_UNLOCK_PIN)
797 app_control_add_extra_data(svc, "viewtype", "SETTING_PW_TYPE_PERSONAL_PAGE_NEW_SIMPLE");
798 else if(caller == SETTING_PERSONAL_PW_CALLER_UNLOCK_PASSWORD)
799 app_control_add_extra_data(svc, "viewtype", "SETTING_PW_TYPE_PERSONAL_PAGE_NEW_PASSWORD");
801 elm_object_tree_focus_allow_set(ad->ly_main, EINA_FALSE);
802 ad->ug_passwd = setting_ug_create(ad->ug, "setting-password-efl", UG_MODE_FULLVIEW, svc, cbs);
803 if (NULL == ad->ug_passwd) { /* error handling */
804 evas_object_show(ad->ly_main);
807 app_control_destroy(svc);
813 #define SUBINDEX_NAME "Personal mode"
815 static Setting_Cfg_Node_T s_cfg_node_array[] = {
816 //{"IDS_ST_HEADER_PERSONAL_MODE", SETTING_ICON_PATH_CFG"settings_personal_mode.png", "viewtype:frontpage", NULL, 0, 0, Cfg_Item_View_Node_Toggle, NULL, SUBINDEX_NAME, NULL},
817 {"IDS_ST_MBODY_UNLOCK_METHOD", SETTING_ICON_PATH_CFG"settings_personal_mode.png", "viewtype:frontpage", 0, 0, 0, Cfg_Item_View_Node, NULL, SUBINDEX_NAME, NULL, NULL},
821 UG_MODULE_API int setting_plugin_search_init(app_control_h service, void *priv, char** applocale)
824 SETTING_TRACE(">> setting-personalpage-efl DB search code");
826 *applocale = strdup("setting:/usr/apps/org.tizen.setting/res/locale");
828 Eina_List **pplist = (Eina_List**)priv;
830 int size = sizeof(s_cfg_node_array)/sizeof(s_cfg_node_array[0]);
831 for(i=0;i<size;i++) {
832 Setting_Cfg_Node_T * node = setting_plugin_search_item_subindex_add(s_cfg_node_array[i].key_name, s_cfg_node_array[i].ug_args, s_cfg_node_array[i].icon_path, s_cfg_node_array[i].item_type, s_cfg_node_array[i].data, s_cfg_node_array[i].sub_index);
833 *pplist = eina_list_append(*pplist, node);
839 int get_personal_mode(Cfg_Item_State *state, void *data)
845 err = vconf_get_bool(VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL, &value);
847 *state = Cfg_Item_On;
849 *state = Cfg_Item_Off;
855 int set_personal_mode(Cfg_Item_State state, void *item, void *data)
858 // launch personal mode
859 bool is_running = FALSE;
860 app_manager_is_running("org.tizen.setting.personal", &is_running);
864 if(app_control_create(&svc))
869 app_control_add_extra_data(svc, "viewtype", "unlock_method");
870 app_control_set_app_id(svc, "org.tizen.setting.personal");
871 app_control_set_operation(svc, APP_CONTROL_OPERATION_DEFAULT);
872 app_control_send_launch_request(svc, NULL, NULL);
873 app_control_destroy(svc);
879 cfg_func_table personal_opt_tab = {
880 .get_item_state = get_personal_mode,
881 .set_item_state = set_personal_mode,
882 .set_item_update_ui = NULL,
885 UG_MODULE_API int setting_plugin_search_query_ops(char *str_id, void **tfunc_obj)
888 if(str_id && !safeStrCmp(str_id, _("IDS_ST_HEADER_PERSONAL_MODE")))
890 *tfunc_obj = (void*)&personal_opt_tab;