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);
45 return "IDS_ST_BODY_SIMPLE_PASSWORD"; /*setting_gettext("PIN"); */
46 } else if (value == 2) {
47 return "IDS_COM_BODY_AUTH_PASSWORD"; /*setting_gettext("IDS_COM_BODY_OFF_M_STATUS"); */
49 return "IDS_ST_BODY_NOT_ASSIGNED";
53 void setting_personalpage_vconf_change_cb(keynode_t *key, void *data)
57 SettingPersonalpageUG *ad = (SettingPersonalpageUG *) data;
59 char *vconf_name = vconf_keynode_get_name(key);
60 SETTING_TRACE("key name : %s", vconf_name);
61 if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL)) {
62 int status = vconf_keynode_get_bool(key);
65 SETTING_TRACE("update tobble to %d", status);
66 #if SUPPORT_MASTER_CONTROL
67 elm_check_state_set(ad->master_control, status);
69 setting_update_gl_item_chk_status(ad->data_personal_mode, status);
71 /*update unlock method menu */
72 if (ad->data_unlock_method && ad->data_unlock_method->item) {
74 setting_enable_genlist_item(ad->data_unlock_method->item);
76 setting_disable_genlist_item(ad->data_unlock_method->item);
79 } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_PERSONAL_MODE_UNLOCK_METHOD_INT)) {
80 if (ad->data_unlock_method && ad->data_unlock_method->item) {
81 ad->data_unlock_method->sub_desc = (char *)g_strdup(get_unlock_method_str(ad));
82 elm_object_item_data_set(ad->data_unlock_method->item, ad->data_unlock_method);
83 elm_genlist_item_update(ad->data_unlock_method->item);
88 static void setting_personalpage_ug_cb_resize(void *data, Evas *e,
89 Evas_Object *obj, void *event_info)
93 SettingPersonalpageUG *ad = (SettingPersonalpageUG *) data; /* ad is point to data */
94 setting_view_update(&setting_view_personalpage_main, ad);
97 Evas_Object *setting_personalpage_create_win_layout_without_bg(Evas_Object *win_layout,
100 Evas_Object *layout = NULL;
102 layout = elm_layout_add(win_obj);
103 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
104 setting_retvm_if(layout == NULL, FALSE, "layout == NULL");
106 elm_layout_theme_set(layout, "layout", "application", "default");
107 evas_object_show(layout);
111 static void *setting_personalpage_ug_on_create(ui_gadget_h ug,
112 enum ug_mode mode, app_control_h service,
116 setting_retvm_if((!priv), NULL, "!priv");
118 SettingPersonalpageUG *personalUG = priv;
121 personalUG->win_main_layout = (Evas_Object *) ug_get_parent_layout(ug);
122 personalUG->win_get = (Evas_Object *) ug_get_window();
123 evas_object_show(personalUG->win_main_layout);
124 personalUG->evas = evas_object_evas_get(personalUG->win_main_layout);
126 /*setting_retvm_if(personalUG->win_main_layout == NULL, NULL, */
127 /* "[Setting >> Personal page] cannot get main window "); */
128 if (!personalUG->win_main_layout)
129 SETTING_TRACE_ERROR("can't get parent layout");
131 bindtextdomain(SETTING_PACKAGE, SETTING_LOCALEDIR);
133 /* register view node table */
134 setting_view_node_table_intialize();
136 char *viewtype = NULL;
137 app_control_get_extra_data(service, "viewtype", &viewtype);
139 if (viewtype && !safeStrCmp(viewtype, "unlock_method")) {
140 int current_unlock = -1;
141 vconf_get_int(VCONFKEY_SETAPPL_PERSONAL_MODE_UNLOCK_METHOD_INT, ¤t_unlock);
142 if (current_unlock == 1 || current_unlock == 2) {
143 personalUG->ly_main = setting_personalpage_create_win_layout_without_bg(personalUG->win_get, personalUG->win_get);
144 /* just change on/off using password ug. */
145 personalUG->viewtype = PERSONAL_VIEW_PW_UG;
146 /*setting_personalpage_create_password_sg(personalUG, SETTING_PERSONAL_PW_CALLER_ON_OFF); */
147 return personalUG->ly_main;
149 personalUG->viewtype = PERSONAL_VIEW_UNLOCK_METHOD;
150 setting_view_node_table_register(&setting_view_personalpage_unlock, NULL);
151 personalUG->view_to_load = &setting_view_personalpage_unlock;
154 personalUG->viewtype = PERSONAL_VIEW_MAIN;
155 setting_view_node_table_register(&setting_view_personalpage_main, NULL);
156 setting_view_node_table_register(&setting_view_personalpage_unlock, &setting_view_personalpage_main);
157 personalUG->view_to_load = &setting_view_personalpage_main;
159 /* register vconf callback */
160 vconf_notify_key_changed(VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL, setting_personalpage_vconf_change_cb, personalUG);
161 vconf_notify_key_changed(VCONFKEY_SETAPPL_PERSONAL_MODE_UNLOCK_METHOD_INT, setting_personalpage_vconf_change_cb, personalUG);
165 setting_retvm_if(NULL == personalUG->view_to_load, NULL,
166 "NULL == personalUG->view_to_load");
168 setting_view_node_set_cur_view(personalUG->view_to_load);
169 setting_view_create(personalUG->view_to_load, (void *)personalUG);
170 evas_object_event_callback_add(personalUG->win_main_layout,
171 EVAS_CALLBACK_RESIZE,
172 setting_personalpage_ug_cb_resize, personalUG);
175 return personalUG->ly_main;
178 void __off_popup_resp_cb(void *data, Evas_Object *obj, void *event_info)
183 SettingPersonalpageUG *ad = (SettingPersonalpageUG *)data;
185 int response_type = btn_type(obj);
187 if (response_type == POPUP_RESPONSE_CANCEL) {
188 SETTING_TRACE("CANCEL");
189 } else if (response_type == POPUP_RESPONSE_OK) {
190 /* if ok, do nothing */
193 if (ad->off_popup_check) {
194 int status = elm_check_state_get(ad->off_popup_check);
195 vconf_set_bool("db/setting/personal_off_popup_do_not_show_flag", status);
197 setting_personalpage_unmount(ad);
201 evas_object_del(ad->off_popup);
202 ad->off_popup = NULL;
205 ug_destroy_me(ad->ug);
208 static void setting_personalpage_ug_on_start(ui_gadget_h ug, app_control_h service,
211 setting_retm_if((!priv), "!priv");
212 SettingPersonalpageUG *personalUG = priv;
214 if (personalUG->viewtype == PERSONAL_VIEW_PW_UG) {
216 vconf_get_bool(VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL, ¤t);
217 if (current) { /* On to Off */
219 vconf_get_bool("db/setting/personal_off_popup_do_not_show_flag", &do_not_show);
221 setting_personalpage_unmount(personalUG);
222 ug_destroy_me(personalUG->ug);
225 /*elm_win_alpha_set(personalUG->win_get, EINA_TRUE); */
226 personalUG->off_popup = setting_create_popup_with_label_check(personalUG, personalUG->ly_main,
228 _("IDS_ST_POP_ANY_PERSONAL_CONTENT_WILL_NOT_BE_ACCESSIBLE_IN_NORMAL_MODE"),
229 _("IDS_ST_BODY_DO_NOT_SHOW_AGAIN"), &(personalUG->off_popup_check),
230 __off_popup_resp_cb, 0,
232 "IDS_COM_SK_CANCEL", "IDS_COM_SK_OK");
235 setting_personalpage_create_password_sg(personalUG, SETTING_PERSONAL_PW_CALLER_ON_OFF);
240 static void setting_personalpage_ug_on_pause(ui_gadget_h ug, app_control_h service,
245 static void setting_personalpage_ug_on_resume(ui_gadget_h ug, app_control_h service,
249 /*ug_destroy_me(ug); */
252 static void setting_personalpage_ug_on_destroy(ui_gadget_h ug, app_control_h service,
255 /*SETTING_TRACE_BEGIN; */
256 setting_retm_if((!priv), "!priv");
257 SettingPersonalpageUG *personalUG = priv;
260 if (!app_control_create(&reply)) {
261 service_reply_to_launch_request(reply, service, APP_CONTROL_ERROR_NONE);
262 app_control_destroy(reply);
265 evas_object_event_callback_del(personalUG->win_main_layout, EVAS_CALLBACK_RESIZE, setting_personalpage_ug_cb_resize); /* fix flash issue for gallery */
269 if (personalUG->viewtype == PERSONAL_VIEW_UNLOCK_METHOD) {
270 setting_view_destroy(&setting_view_personalpage_unlock, personalUG);
271 } else if (personalUG->viewtype == PERSONAL_VIEW_PW_UG) {
272 /*SETTING_TRACE_DEBUG("viewtype is PW_UG"); */
273 if (personalUG->ly_main != NULL) {
274 if (personalUG->off_popup) {
275 evas_object_del(personalUG->off_popup);
276 personalUG->off_popup = NULL;
278 /*SETTING_TRACE_DEBUG("delete ly_main"); */
279 evas_object_del(personalUG->ly_main);
280 personalUG->ly_main = NULL;
283 /* unregister vconf callback */
284 vconf_ignore_key_changed(VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL, setting_personalpage_vconf_change_cb);
285 vconf_ignore_key_changed(VCONFKEY_SETAPPL_PERSONAL_MODE_UNLOCK_METHOD_INT, setting_personalpage_vconf_change_cb);
286 setting_view_destroy(&setting_view_personalpage_unlock, personalUG);
287 setting_view_destroy(&setting_view_personalpage_main, personalUG);
290 FREE(personalUG->change_unlock_method_data);
292 if (NULL != ug_get_layout(personalUG->ug)) {
293 evas_object_hide((Evas_Object *) ug_get_layout(personalUG->ug));
294 evas_object_del((Evas_Object *) ug_get_layout(personalUG->ug));
298 static void setting_personalpage_ug_on_message(ui_gadget_h ug, app_control_h msg,
299 app_control_h service, void *priv)
304 static void setting_personalpage_ug_on_event(ui_gadget_h ug,
305 enum ug_event event, app_control_h service,
309 SettingPersonalpageUG *ad = (SettingPersonalpageUG *)priv;
310 setting_retm_if(NULL == ad, "ad is NULL");
312 case UG_EVENT_LOW_MEMORY:
314 case UG_EVENT_LOW_BATTERY:
316 case UG_EVENT_LANG_CHANGE:
317 setting_navi_items_update(ad->navi_bar);
319 case UG_EVENT_ROTATE_PORTRAIT:
320 case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
321 case UG_EVENT_ROTATE_LANDSCAPE:
322 case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN: {
323 SETTING_TRACE_DEBUG("rotation events : %d", event);
326 case UG_EVENT_REGION_CHANGE:
333 static void setting_personalpage_ug_on_key_event(ui_gadget_h ug,
334 enum ug_key_event event,
335 app_control_h service, void *priv)
339 SettingPersonalpageUG *ad = (SettingPersonalpageUG *) priv; /* ad is point to priv */
341 case UG_KEY_EVENT_END: {
342 if (elm_naviframe_top_item_get(ad->navi_bar) ==
343 elm_naviframe_bottom_item_get(ad->navi_bar)) {
346 /* elm_naviframe_item_pop(ad->navi_bar); */
347 setting_view_cb_at_endKey(ad);
357 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
360 SettingPersonalpageUG *personalUG = calloc(1, sizeof(SettingPersonalpageUG));
361 setting_retvm_if(!personalUG, -1,
362 "Create SettingPersonalpageUG obj failed");
364 ops->create = setting_personalpage_ug_on_create;
365 ops->start = setting_personalpage_ug_on_start;
366 ops->pause = setting_personalpage_ug_on_pause;
367 ops->resume = setting_personalpage_ug_on_resume;
368 ops->destroy = setting_personalpage_ug_on_destroy;
369 ops->message = setting_personalpage_ug_on_message;
370 ops->event = setting_personalpage_ug_on_event;
371 ops->key_event = setting_personalpage_ug_on_key_event;
372 ops->priv = personalUG;
373 ops->opt = UG_OPT_INDICATOR_ENABLE;
378 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
380 struct SettingPersonalpageUG *personalUG;
381 setting_retm_if(!ops, "ops == NULL");
383 personalUG = ops->priv;
388 void setting_personalpage_layout_passwd_ug_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
390 Evas_Object *base = ug_get_layout(ug);
395 case UG_MODE_FULLVIEW:
396 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
398 evas_object_show(base);
407 void setting_personalpage_destroy_password_ug_cb(ui_gadget_h ug, void *priv)
411 setting_ug_destroy(ug);
415 void create_notification(void *data)
418 notification_error_e err;
423 notification_delete_all_by_type("org.tizen.setting.personal", NOTIFICATION_VARIABLE_TYPE_NONE);
425 /* 1 line notification on the notification bar. */
426 notification_status_message_post(_("IDS_ST_TPOP_PERSONAL_MODE_ENABLED_ABB"));
428 noti = notification_new(NOTIFICATION_TYPE_ONGOING, NOTIFICATION_GROUP_ID_NONE, NOTIFICATION_PRIV_ID_NONE);
430 err = notification_set_pkgname(noti, "org.tizen.setting.personal");
431 SETTING_TRACE_DEBUG("notification_set_pkgname() returns %d", err);
432 err = notification_set_text_domain(noti, SETTING_PACKAGE, SETTING_LOCALEDIR);
433 SETTING_TRACE_DEBUG("notification_set_text_domain() returns %d", err);
434 err = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_TITLE,
435 _("IDS_ST_HEADER_PERSONAL_MODE"),
436 "IDS_ST_HEADER_PERSONAL_MODE", NOTIFICATION_VARIABLE_TYPE_NONE);
437 SETTING_TRACE_DEBUG("notification_set_text() returns %d", err);
438 err = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT,
439 _("IDS_ST_TPOP_PERSONAL_MODE_ENABLED_ABB"),
440 "IDS_ST_TPOP_PERSONAL_MODE_ENABLED_ABB", NOTIFICATION_VARIABLE_TYPE_NONE);
441 SETTING_TRACE_DEBUG("notification_set_text() returns %d", err);
443 err = notification_set_layout(noti, NOTIFICATION_LY_ONGOING_EVENT);
444 SETTING_TRACE_DEBUG("notification_set_layout() returns %d", err);
445 err = notification_insert(noti, &id);
446 SETTING_TRACE_DEBUG("notification_insert() returns %d", err);
447 SETTING_TRACE_DEBUG("notification(%d) is created.", id);
449 ret = notification_free(noti);
450 if (ret != NOTIFICATION_ERROR_NONE) {
451 SETTING_TRACE_ERROR("Fail to notification_free [%d]", ret);
456 void setting_personalpage_unmount(void *data)
459 ret_if(data == NULL);
460 SettingPersonalpageUG *ad = (SettingPersonalpageUG *) data;
463 if (ode_init() != 0) {
464 SETTING_TRACE("change #1. init failed");
465 setting_create_simple_popup(ad, ad->navi_bar, NULL, "Fail to change unlock method");
468 if (pse_unmount() != 0) {
469 SETTING_TRACE("change #2. unmount failed");
470 setting_create_simple_popup(ad, ad->navi_bar, NULL, "Fail to change unlock method");
476 vconf_set_bool(VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL, 0);
477 notification_delete_all_by_type("org.tizen.setting.personal", NOTIFICATION_VARIABLE_TYPE_NONE);
478 /* 1 line notification on the notification bar. */
479 notification_status_message_post(_("IDS_ST_TPOP_PERSONAL_MODE_DISABLED_ABB"));
482 void __unmount_popup_resp_cb(void *data, Evas_Object *obj, void *event_info)
485 ret_if(data == NULL);
486 SettingPersonalpageUG *ad = (SettingPersonalpageUG *)data;
488 setting_personalpage_unmount(ad);
489 if (ad->unmount_popup) {
490 evas_object_del(ad->unmount_popup);
491 ad->unmount_popup = NULL;
493 ug_destroy_me(ad->ug);
496 void setting_personalpage_end_password_ug_cb(ui_gadget_h ug, void *priv)
499 ret_if(priv == NULL);
500 SettingPersonalpageUG *ad = (SettingPersonalpageUG *) priv;
502 ad->ug_passwd = NULL;
504 if (ad->do_nothing_flag == 1 || !ad->result_cb_called) {
505 /*SETTING_TRACE_DEBUG("viewtype %d", ad->viewtype); */
506 ad->do_nothing_flag = 0;
507 if (ad->viewtype == PERSONAL_VIEW_PW_UG)
508 ug_destroy_me(ad->ug);
512 ad->result_cb_called = 0;
514 if (ad->unmount_flag == 1) {
515 ad->unmount_flag = 0;
517 char temp[256] = {0,};
518 snprintf(temp, 256, "%s<br>%s", _("IDS_COM_INCORRECT_PASSWORD_ENTERED_5_TIMES"), _("IDS_ST_TPOP_PERSONAL_MODE_DISABLED_ABB"));
520 ad->unmount_popup = setting_create_popup_without_btn(ad, ad->win_main_layout,
523 __unmount_popup_resp_cb, 2, TRUE, TRUE);
527 if (ad->pw_ug_caller == SETTING_PERSONAL_PW_CALLER_UNLOCK_PIN || ad->pw_ug_caller == SETTING_PERSONAL_PW_CALLER_UNLOCK_PASSWORD) {
529 vconf_get_bool(VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL, ¤t);
532 if (ode_init() != 0) {
533 setting_create_simple_popup(ad, ad->navi_bar, NULL, "IDS_ST_TPOP_FAILED_TO_ENABLE_PERSONAL_MODE_TRY_AGAIN_ABB");
537 char *personal_data = NULL;
539 personal_data = vconf_get_str("db/setting/personal_key");
540 if (pse_mount(personal_data) != 0) {
541 setting_create_simple_popup(ad, ad->navi_bar, NULL, "IDS_ST_TPOP_FAILED_TO_ENABLE_PERSONAL_MODE_TRY_AGAIN_ABB");
548 vconf_set_bool(VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL, !current);
549 create_notification(ad);
551 /* mount again because key is changed */
553 if (ode_init() != 0) {
554 SETTING_TRACE("change #1. init failed");
555 setting_create_simple_popup(ad, ad->navi_bar, NULL, "Fail to change unlock method");
558 if (pse_unmount() != 0) {
559 SETTING_TRACE("change #2. unmount failed");
560 setting_create_simple_popup(ad, ad->navi_bar, NULL, "Fail to change unlock method");
564 /* re-mount with new. */
565 char *personal_data = NULL;
566 personal_data = vconf_get_str("db/setting/personal_key");
568 if (pse_mount(personal_data) != 0) {
569 SETTING_TRACE("change #3. re-mount failed");
570 setting_create_simple_popup(ad, ad->navi_bar, NULL, "Fail to change unlock method");
578 vconf_set_int(VCONFKEY_SETAPPL_PERSONAL_MODE_UNLOCK_METHOD_INT, ad->pw_ug_caller - 1);
579 if (ad->viewtype == PERSONAL_VIEW_UNLOCK_METHOD)
580 ug_destroy_me(ad->ug);
582 setting_view_change(&setting_view_personalpage_unlock, &setting_view_personalpage_main, ad);
583 } else if (ad->pw_ug_caller == SETTING_PERSONAL_PW_CALLER_UNLOCK_METHOD) {
584 setting_view_change(&setting_view_personalpage_main, &setting_view_personalpage_unlock, ad);
585 } else if (ad->pw_ug_caller == SETTING_PERSONAL_PW_CALLER_PERSONAL
586 || ad->pw_ug_caller == SETTING_PERSONAL_PW_CALLER_ON_OFF) {
589 vconf_get_bool(VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL, ¤t);
591 new_status = !current;
592 SETTING_TRACE("new_status %d", new_status);
593 if (new_status == 1) {
595 if (ode_init() != 0) {
596 setting_create_simple_popup(ad, ad->win_get, NULL, "IDS_ST_TPOP_FAILED_TO_ENABLE_PERSONAL_MODE_TRY_AGAIN_ABB");
597 if (ad->pw_ug_caller == SETTING_PERSONAL_PW_CALLER_ON_OFF)
598 ug_destroy_me(ad->ug);
603 char *personal_data = NULL;
605 personal_data = vconf_get_str("db/setting/personal_key");
607 if (pse_mount(personal_data) != 0) {
608 setting_create_simple_popup(ad, ad->win_get, NULL, "IDS_ST_TPOP_FAILED_TO_ENABLE_PERSONAL_MODE_TRY_AGAIN_ABB");
609 if (ad->pw_ug_caller == SETTING_PERSONAL_PW_CALLER_ON_OFF) {
610 ug_destroy_me(ad->ug);
620 vconf_set_bool(VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL, new_status);
621 create_notification(ad);
622 } else if (new_status == 0) {
624 if (ode_init() != 0) {
625 setting_create_simple_popup(ad, ad->win_get, NULL, "IDS_ST_TPOP_FAILED_TO_DISABLE_PERSONAL_MODE_TRY_AGAIN_ABB");
626 if (ad->pw_ug_caller == SETTING_PERSONAL_PW_CALLER_ON_OFF)
627 ug_destroy_me(ad->ug);
632 if (pse_unmount() != 0) {
633 setting_create_simple_popup(ad, ad->win_get, NULL, "IDS_ST_TPOP_FAILED_TO_DISABLE_PERSONAL_MODE_TRY_AGAIN_ABB");
634 if (ad->pw_ug_caller == SETTING_PERSONAL_PW_CALLER_ON_OFF) {
635 ug_destroy_me(ad->ug);
643 vconf_set_bool(VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL, new_status);
645 notification_delete_all_by_type("setting-personalpage-efl", NOTIFICATION_VARIABLE_TYPE_NONE);
646 /* 1 line notification on the notification bar. */
647 notification_status_message_post(_("IDS_ST_TPOP_PERSONAL_MODE_DISABLED_ABB"));
649 if (ad->pw_ug_caller == SETTING_PERSONAL_PW_CALLER_ON_OFF)
650 ug_destroy_me(ad->ug);
654 void setting_personalpage_result_password_ug_cb(ui_gadget_h ug, app_control_h service, void *priv)
658 retm_if(priv == NULL, "Data paremeter is NULL");
659 SettingPersonalpageUG *ad = (SettingPersonalpageUG *) priv;
662 app_control_get_extra_data(service, "result", &result);
666 SETTING_TRACE_DEBUG("result : %s", result);
668 if (!safeStrCmp(result, "Cancel") || !safeStrCmp(result, "Fail") || !safeStrCmp(result, "Restore")) {
669 ad->do_nothing_flag = 1;
670 ad->unmount_flag = 0;
671 } else if (!safeStrCmp(result, "Unmount")) {
672 ad->unmount_flag = 1;
673 ad->do_nothing_flag = 0;
676 ad->result_cb_called = 1;
681 gboolean setting_personalpage_create_password_sg(void *data, int caller)
685 retv_if(data == NULL, FALSE);
687 SettingPersonalpageUG *ad = (SettingPersonalpageUG *) data; /* ad is point to data */
689 /* prevent the ug from being loaded again due to window event queuing */
690 /* added by JTS: CQ H0100135346 */
692 SETTING_TRACE("Password UG is already loaded.");
696 struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
700 cbs->layout_cb = setting_personalpage_layout_passwd_ug_cb;
701 cbs->result_cb = setting_personalpage_result_password_ug_cb;
702 cbs->destroy_cb = setting_personalpage_destroy_password_ug_cb;
703 cbs->end_cb = setting_personalpage_end_password_ug_cb;
704 cbs->priv = (void *)ad;
707 if (app_control_create(&svc)) {
712 ad->do_nothing_flag = 0;
713 ad->pw_ug_caller = caller;
715 if (caller == SETTING_PERSONAL_PW_CALLER_PERSONAL
716 || caller == SETTING_PERSONAL_PW_CALLER_ON_OFF)
717 app_control_add_extra_data(svc, "viewtype", "SETTING_PW_TYPE_PERSONAL_PAGE_ON");
718 else if (caller == SETTING_PERSONAL_PW_CALLER_UNLOCK_METHOD)
719 app_control_add_extra_data(svc, "viewtype", "SETTING_PW_TYPE_PERSONAL_PAGE");
720 else if (caller == SETTING_PERSONAL_PW_CALLER_UNLOCK_PIN)
721 app_control_add_extra_data(svc, "viewtype", "SETTING_PW_TYPE_PERSONAL_PAGE_NEW_SIMPLE");
722 else if (caller == SETTING_PERSONAL_PW_CALLER_UNLOCK_PASSWORD)
723 app_control_add_extra_data(svc, "viewtype", "SETTING_PW_TYPE_PERSONAL_PAGE_NEW_PASSWORD");
725 elm_object_tree_focus_allow_set(ad->ly_main, EINA_FALSE);
726 ad->ug_passwd = setting_ug_create(ad->ug, "setting-password-efl", UG_MODE_FULLVIEW, svc, cbs);
727 if (NULL == ad->ug_passwd) { /* error handling */
728 evas_object_show(ad->ly_main);
731 app_control_destroy(svc);
737 #define SUBINDEX_NAME "Personal mode"
739 static Setting_Cfg_Node_T s_cfg_node_array[] = {
740 /*{"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}, */
741 {"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},
745 UG_MODULE_API int setting_plugin_search_init(app_control_h service, void *priv, char **applocale)
748 SETTING_TRACE(">> setting-personalpage-efl DB search code");
750 *applocale = strdup("setting:/usr/apps/org.tizen.setting/res/locale");
752 Eina_List **pplist = (Eina_List **)priv;
754 int size = sizeof(s_cfg_node_array) / sizeof(s_cfg_node_array[0]);
755 for (i = 0; i < size; i++) {
756 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);
757 *pplist = eina_list_append(*pplist, node);
763 int get_personal_mode(Cfg_Item_State *state, void *data)
769 err = vconf_get_bool(VCONFKEY_SETAPPL_PERSONAL_MODE_STATUS_BOOL, &value);
771 *state = Cfg_Item_On;
773 *state = Cfg_Item_Off;
779 int set_personal_mode(Cfg_Item_State state, void *item, void *data)
782 /* launch personal mode */
783 bool is_running = FALSE;
784 app_manager_is_running("org.tizen.setting.personal", &is_running);
787 if (app_control_create(&svc)) {
791 app_control_add_extra_data(svc, "viewtype", "unlock_method");
792 app_control_set_app_id(svc, "org.tizen.setting.personal");
793 app_control_set_operation(svc, APP_CONTROL_OPERATION_DEFAULT);
794 app_control_send_launch_request(svc, NULL, NULL);
795 app_control_destroy(svc);
801 cfg_func_table personal_opt_tab = {
802 .get_item_state = get_personal_mode,
803 .set_item_state = set_personal_mode,
804 .set_item_update_ui = NULL,
807 UG_MODULE_API int setting_plugin_search_query_ops(char *str_id, void **tfunc_obj)
810 if (str_id && !safeStrCmp(str_id, _("IDS_ST_HEADER_PERSONAL_MODE"))) {
811 *tfunc_obj = (void *)&personal_opt_tab;