4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@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 #include <vconf-keys.h>
24 #include <fontconfig/fontconfig.h>
27 #include "lockscreen-options-debug.h"
28 #include "lockscreen-options.h"
29 #include "lockscreen-options-util.h"
30 //#include "lockscreen-options-shortcuts.h"
31 //#include "lockscreen-options-locktitle.h"
33 #define FONT_PRELOAD_FONT_PATH "/usr/share/fonts"
34 #define FONT_DOWNLOADED_FONT_PATH "/opt/share/fonts"
36 const char *sys_str_table[] = {
39 "IDS_COM_BODY_FACEBOOK",
42 const char *app_str_table[] = {
43 "IDS_ST_HEADER_LOCK_SCREEN_SETTINGS",
44 "IDS_LCKSCN_HEADER_PERSONAL_MESSAGE",
45 "IDS_HS_HEADER_THEMES",
46 "IDS_LCKSCN_HEADER_LOCK_SCREEN",
47 "IDS_LCKSCN_HEADER_SET_SHORTCUTS",
48 "IDS_ST_BODY_SCREEN_LOCK_TYPE",
49 "IDS_LCKSCN_MBODY_WALLPAPERS",
50 "IDS_ST_BODY_SHORTCUTS",
51 "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN",
52 "IDS_ST_BODY_SHORTCUTS",
53 "IDS_LCKSCN_BODY_CUSTOMISE_WHICH_SHORTCUTS_WILL_BE_SHOWN_ON_THE_LOCK_SCREEN",
55 "IDS_LCKSCN_BODY_LOCK_SCREEN_THEMES_ABB",
57 "Set contents on the lock screen",
58 "IDS_LCKSCN_BODY_CUSTOMISE_THE_STYLE_OF_YOUR_LOCK_SCREEN",
60 "IDS_LCKSCN_BODY_BRIEFING_BOX_ABB",
61 "Missed event, Weather, Shortcuts...",
62 "IDS_LCKSCN_BODY_CUSTOMISE_WHICH_ITEMS_WILL_BE_SHOWN_IN_YOUR_BRIEFING_BOX_ON_THE_LOCK_SCREEN",
63 "IDS_LCKSCN_BODY_PERSONAL_MESSAGE_ABB",
64 "IDS_LCKSCN_BODY_DISPLAY_YOUR_PERSONAL_MESSAGE_ON_THE_LOCK_SCREEN",
65 //"Event notifications",
66 "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS",
67 //"View event notification on lock screen",
68 "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN",
69 "Context-aware notifications",
70 "View context-aware notifications on lock screen",
72 "IDS_ST_MBODY_CAMERA_QUICK_ACCESS",
73 "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA",
76 "IDS_LCKSCN_MBODY_DUAL_CLOCK",
77 "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING",
78 "IDS_ST_MBODY_SET_HOME_CITY",
79 "IDS_LCKSCN_BODY_WAKE_UP_IN_LOCK_SCREEN_ABB",
80 "IDS_HELP_BODY_UNLOCK_DEVICE_WITH_YOUR_WAKE_UP_COMMAND_WHEN_SWIPE_OR_MOTION_SCREEN_LOCK_TYPE_IS_ENABLED",
81 "IDS_SKM_BODY_WEATHER_M_IDEA_SKETCH",
82 "IDS_IM_BODY_HELP_TEXT",
83 "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN",
84 "IDS_ST_BODY_SET_SHORTCUTS",
85 "IDS_ST_OPT_EDIT_SHORTCUTS",
86 "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN",
87 "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION",
88 "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER",
89 "IDS_ST_BODY_SELECT_APPLICATION",
90 "IDS_LCKSCN_BODY_PERSONAL_MESSAGE_ABB",
91 "IDS_LCKSCN_HEADER_LOCK_SCREEN_THEMES_ABB",
92 "IDS_ST_BODY_SET_AS_LOCK_SCREEN",
93 "IDS_ST_BODY_PREVIEW",
95 "IDS_LCKSCN_HEADER_BRIEFING_BOX",
97 "IDS_LCKSCN_BODY_MUSIC_CONTROLLER_ABB",
98 "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS",
99 "IDS_LCKSCN_BODY_NEWS_ABB",
100 "IDS_LCKSCN_BODY_SCHEDULE",
101 "IDS_LCKSCN_BODY_CLEAR_M_LOCKSCREEN_NAME",
102 "IDS_LCKSCN_BODY_CLOSE_UP_M_LOCKSCREEN_NAME",
103 "IDS_LCKSCN_BODY_BOOK_COVER_M_LOCKSCREEN_NAME",
104 "IDS_LCKSCN_BODY_MAGAZINE_M_LOCKSCREEN_NAME",
105 "IDS_LCKSCN_BODY_DIARY",
106 "IDS_LCKSCN_BODY_FUN_M_LOCKSCREEN_NAME",
107 "IDS_LCKSCN_BODY_POLAROID_M_LOCKSCREEN_NAME",
108 "IDS_SKM_BODY_WEATHER_M_IDEA_SKETCH",
111 "IDS_ST_MBODY_SWIPE",
112 "IDS_ST_BODY_MOTION",
114 "IDS_ST_BODY_SIMPLE_PASSWORD",
115 "IDS_ST_BODY_PASSWORD",
116 "IDS_ST_POP_LOCK_SCREEN_WALLPAPER_CHANGED_ABB",
117 "IDS_LCKSCN_MBODY_SET_WAKE_UP_COMMAND",
118 "IDS_LCKSCN_BODY_EDIT_PERSONAL_MESSAGE",
120 "IDS_LCKSCN_BODY_YOU_CAN_INPUT_TEXT_ON_THE_LOCK_SCREEN_AND_EDIT_IT_BY_SELECTING_EDIT_PERSONAL_MESSAGE",
121 "IDS_ST_HEADER_UNLOCK_EFFECT",
122 "IDS_LCKSCN_OPT_CONFETTI_M_EFFECT",
123 "IDS_LCKSCN_OPT_GEOMETRIC_M_EFFECT",
124 "IDS_LCKSCN_OPT_STARDUST_M_EFFECT",
125 "IDS_LCKSCN_OPT_GLOW_WORMS_M_EFFECT",
126 "IDS_STORYALBUM_OPT_EDIT_TITLE",
127 "IDS_LCKSCN_HEADER_SPECIAL_DAY_WALLPAPERS_ABB",
128 "IDS_ST_HEADER_WEATHER_EFFECT_ABB",
129 "IDS_LCKSCN_BODY_CUSTOMISE_THE_STYLE_OF_YOUR_LOCK_SCREEN",
130 "IDS_ST_MBODY_FINGERPRINT",
131 "IDS_ST_BODY_AUTO_LOCK",
132 "IDS_ST_BODY_CAMERA_SHORTCUT",
133 "IDS_ST_BODY_ADDITIONAL_INFORMATION_ABB",
134 "IDS_ST_BODY_SHOW_INFORMATION_ABOUT_THE_WEATHER_AND_YOUR_STEP_COUNT_ON_THE_LOCK_SCREEN",
135 "IDS_SKM_BODY_WEATHER_M_IDEA_SKETCH",
136 "IDS_ST_BUTTON2_PEDOMETER",
137 "IDS_LCKSCN_BODY_SHOW_INFORMATION_ABOUT_THE_WEATHER_HBASED_ON_THE_WEATHER_APPLICATION_MSG",
138 "IDS_ST_BODY_DISPLAY_A_WEATHER_EFFECT_ON_THE_LOCK_SCREEN",
139 "IDS_IM_BODY_HELP_TEXT",//90
140 "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN",
141 "IDS_LCKSCN_BODY_THEMED_WALLPAPER_WILL_BE_APPLIED_ON_THE_LOCK_SCREEN_FOR_RUSSIAN_PUBLIC_HOLIDAYS",
142 "IDS_LCKSCN_MBODY_SWIPE_THEN_ENTER_PASSWORD",
143 "IDS_LCKSCN_BODY_SET_THE_DEVICE_TO_SHOW_THE_KEYBOARD_AFTER_YOU_SWIPE_THE_LOCK_SCREEN",
146 static Elm_Gen_Item_Class itc_underline;
147 static Elm_Gen_Item_Class itc_separator;
148 static Elm_Gen_Item_Class itc_separator2;
150 Evas_Object *lockscreen_options_util_create_navigation(Evas_Object * parent)
152 Evas_Object *navi_bar = NULL;
154 if (parent == NULL) {
155 LOCKOPTIONS_WARN("Parent is null.");
159 navi_bar = elm_naviframe_add(parent);
160 if (navi_bar == NULL) {
161 LOCKOPTIONS_ERR("Cannot add naviagtionbar.");
165 eext_object_event_callback_add(navi_bar, EEXT_CALLBACK_BACK, eext_naviframe_back_cb, NULL);
167 elm_object_part_content_set(parent, "elm.swallow.content", navi_bar);
169 evas_object_show(navi_bar);
174 Evas_Object *lockscreen_options_util_create_layout(Evas_Object * parent,
178 Evas_Object *layout = NULL;
180 if (parent == NULL) {
181 LOCKOPTIONS_WARN("Parent is null.");
185 layout = elm_layout_add(parent);
186 if (layout == NULL) {
187 LOCKOPTIONS_ERR("Cannot add layout.");
191 if ((file != NULL) && (group != NULL)) {
192 elm_layout_file_set(layout, file, group);
195 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
198 evas_object_show(layout);
203 void lockscreen_options_util_create_seperator(Evas_Object * genlist)
208 Elm_Object_Item *item = NULL;
210 itc_separator.item_style = LOCKSCREEN_GENLIST_STYLE_SEPERATOR;
211 itc_separator.func.text_get = NULL;
212 itc_separator.func.content_get = NULL;
213 itc_separator.func.state_get = NULL;
214 itc_separator.func.del = NULL;
217 elm_genlist_item_append(genlist, &(itc_separator), NULL, NULL,
218 ELM_GENLIST_ITEM_NONE, NULL, NULL);
219 elm_genlist_item_select_mode_set(item,
220 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
223 void lockscreen_options_util_create_seperator2(Evas_Object * genlist)
227 Elm_Object_Item *item = NULL;
228 itc_separator2.item_style = LOCKSCREEN_GENLIST_STYLE_SEPERATOR2;
229 itc_separator2.func.text_get = NULL;
230 itc_separator2.func.content_get = NULL;
231 itc_separator2.func.state_get = NULL;
232 itc_separator2.func.del = NULL;
234 elm_genlist_item_append(genlist, &(itc_separator2), NULL, NULL,
235 ELM_GENLIST_ITEM_NONE, NULL, NULL);
236 elm_genlist_item_select_mode_set(item,
237 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
240 void lockscreen_options_util_create_underline(Evas_Object * genlist)
245 Elm_Object_Item *item = NULL;
247 itc_underline.item_style = LOCKSCREEN_GENLIST_STYLE_UNDERLINE;
248 itc_underline.func.text_get = NULL;
249 itc_underline.func.content_get = NULL;
250 itc_underline.func.state_get = NULL;
251 itc_underline.func.del = NULL;
254 elm_genlist_item_append(genlist, &(itc_underline), NULL, NULL,
255 ELM_GENLIST_ITEM_NONE, NULL, NULL);
256 elm_genlist_item_select_mode_set(item,
257 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
260 char *lockscreen_optoins_get_string(int id)
262 //LOCKOPTIONS_DBG("get string id : %d\n", id);
266 if (id < IDS_LOCKSCREEN_OPTIONS_SYSTEM_STRING_MAX) {
267 /* get system string */
268 str = dgettext("sys_string", sys_str_table[id]);
270 /* get application string */
274 IDS_LOCKSCREEN_OPTIONS_SYSTEM_STRING_MAX]);
277 //LOCKOPTIONS_DBG("get string : %s\n", str);
282 static char *_lockscreen_options_submenu_gl_label_get(void *data,
286 if (data == NULL || part == NULL)
289 lockscreen_menu_item_info *lockoption_data =
290 (lockscreen_menu_item_info *) data;
292 if ((strcmp(part, "elm.text") == 0) ||
293 (strcmp(part, "elm.text.1") == 0)) {
295 strdup(lockscreen_optoins_get_string
296 (lockoption_data->stringId));
304 static void _lockscreen_options_submenu_check_changed_cb(void *data, Evas_Object * obj,
307 if (data == NULL || obj == NULL)
310 lockscreen_menu_item_info *lockoption_data =
311 (lockscreen_menu_item_info *) data;
316 ret = elm_check_state_get(obj);
318 LOCKOPTIONS_DBG("_lockscreen_options_check_changed_cb : %s",
319 ret == EINA_TRUE ? "ON" : "OFF");
321 if (ret == EINA_TRUE) {
331 static Evas_Object *_lockscreen_options_submenu_gl_icon_get(void *data,
335 if (data == NULL || obj == NULL)
338 lockscreen_menu_item_info *lockoption_data =
339 (lockscreen_menu_item_info *) data;
344 check = elm_check_add(obj);
345 elm_object_style_set(check, "on&off");
346 evas_object_show(check);
348 elm_check_state_set(check, value);
350 evas_object_pass_events_set(check, 1);
351 evas_object_propagate_events_set(check, 0);
353 evas_object_smart_callback_add(check, "changed",
354 _lockscreen_options_submenu_check_changed_cb,
357 lockoption_data->check = check;
362 void _lockscreen_options_submenu_gl_item(Elm_Gen_Item_Class * item)
364 item->item_style = LOCKSCREEN_GENLIST_STYLE_1TEXT1ICON;
365 item->func.text_get = _lockscreen_options_submenu_gl_label_get;
366 item->func.content_get = _lockscreen_options_submenu_gl_icon_get;
367 item->func.state_get = NULL;
368 item->func.del = NULL;
374 if(c >= '0' && c <= '9') {
422 void remove_unused_string(char *text, char *unused_string)
424 if(text != NULL && unused_string != NULL && unused_string[0] != '\0') {
425 LOCKOPTIONS_DBG("remove unused string %s in string %s", unused_string, text);
428 len = strlen(unused_string);
430 p = strstr(text, unused_string);
432 while(*(p + len) != '\0') {
438 p = strstr(text, unused_string);
440 LOCKOPTIONS_DBG("the string after remove is %s", text);
444 void replace_unused_string_with_char(char *text, char *unused_string, char c)
446 if(text != NULL && unused_string != NULL && unused_string[0] != '\0') {
447 LOCKOPTIONS_DBG("remove unused string %s in string %s", unused_string, text);
450 len = strlen(unused_string);
452 p = strstr(text, unused_string);
456 while(*(p + len - 1) != '\0') {
458 *(p + len - 1) = '\0';
462 p = strstr(text, unused_string);
464 LOCKOPTIONS_DBG("the string after remove is %s", text);
468 int translate_cur_idx(int cur_idx)
484 int revert_cur_idx(int index)
486 if(index >= 0 && index < 8) {
487 if((index == 0) || (index == 1)) {
490 else if(index == 3) {
505 int ConvertUTF8toUCS2(const char* src, EIWNNSYMB* psTargetStart)
508 unsigned short unicode = 0;
517 unicode = (unsigned short) src[i];
523 unicode = (unsigned short) src[i] & 0x1f;
525 unicode = unicode << 6;
526 unicode = unicode | ((unsigned short) src[i] & 0x3f);
532 unicode = (unsigned short) src[i] & 0x0f;
534 unicode = unicode << 6;
535 unicode = unicode | ((unsigned short) src[i] & 0x3f);
537 unicode = unicode << 6;
538 unicode = unicode | ((unsigned short) src[i] & 0x3f);
541 psTargetStart[count] = unicode;
548 int WmStrlen(const EIWNNSYMB* mszInText)
551 while(*(mszInText + n) != 0)
559 int get_vconf_screenreader(void)
561 int is_screenreader = -1;
562 if(vconf_get_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, &is_screenreader) < 0) {
565 return is_screenreader;
568 void *lockscreen_options_tts_reader_object_get(void *obj, lockscreen_object_type_e type, const char *part, void *parent)
570 Evas_Object *to = NULL;
571 Evas_Object *ao = NULL;
574 LOCK_SCREEN_TRACE_ERR("invalid parameter");
578 if(type == LOCKSCREEN_READER_OBJ_TYPE_EDJ_OBJECT && !part) {
579 LOCK_SCREEN_TRACE_ERR("invalid parameter");
584 case LOCKSCREEN_READER_OBJ_TYPE_ELM_OBJECT:
586 to = (Evas_Object *)elm_object_part_content_get(obj, part);
587 ao = (Evas_Object *)to;
589 ao = (Evas_Object *)obj;
593 case LOCKSCREEN_READER_OBJ_TYPE_EDJ_OBJECT:
594 to = (Evas_Object *)edje_object_part_object_get(_EDJ(obj), part);
597 default: // evas, icon
598 to = (Evas_Object *)obj;
601 if (!ao && to && parent) { // edj, evas, icon, elm_object_item
602 ao = elm_access_object_get(to);
604 ao = elm_access_object_register(to, parent);
610 void *lockscreen_options_tts_get_focus_object(void *parent)
614 Evas_Object *focus = elm_button_add(parent);
616 LOCKOPTIONS_DBG("elm_button_add() failed");
619 elm_object_style_set(focus, "focus");
623 void lockscreen_options_set_tts_info(Evas_Object* obj, const char* label,
624 const char* traits, const char *state,
628 elm_access_info_set(obj, ELM_ACCESS_INFO, label);
630 if (traits)// && isEmptyStr(elm_access_info_get(obj, ELM_ACCESS_TYPE)))
631 elm_access_info_set(obj, ELM_ACCESS_TYPE, traits);
634 elm_access_info_set(obj, ELM_ACCESS_STATE, state);
637 elm_access_info_set(obj, ELM_ACCESS_CONTEXT_INFO, NULL);
638 elm_access_info_set(obj, ELM_ACCESS_CONTEXT_INFO, guide);
642 void set_object_colors(void *ao, const char *color_class, int color)
644 int A = 0x00, R = 0x00, G = 0x00, B = 0x00;
645 COLORTODECIMAL(color, A, R, G, B);
647 edje_object_color_class_set(_EDJ(ao), color_class,
653 void get_font_list(Eina_List **font_list)
655 LOCKOPTIONS_TRACE_BEGIN;
656 FcObjectSet *os = NULL;
657 FcFontSet *fs = NULL;
658 FcPattern *pat = NULL;
659 Eina_List *list = NULL;
660 FcConfig *font_config = NULL;
662 font_config = FcInitLoadConfigAndFonts();
664 if(font_config == NULL) {
665 LOCKOPTIONS_DBG("Failed: FcInitLoadConfigAndFonts");
669 pat = FcPatternCreate();
671 os = FcObjectSetBuild(FC_FAMILY, FC_FILE, (char *) 0);
674 fs = FcFontList(font_config, pat, os);
675 FcObjectSetDestroy(os);
680 FcPatternDestroy(pat);
686 LOCKOPTIONS_DBG("fs->nfont = %d", fs->nfont);
688 for(j = 0; j < fs->nfont; j++) {
689 FcChar8 *family = NULL;
690 FcChar8 *file = NULL;
692 if(FcPatternGetString(fs->fonts[j], FC_FILE, 0, &file) == FcResultMatch) {
693 //LOCKOPTIONS_DBG("FC_FILE : %s\n", file);
694 int preload_path_len = strlen(FONT_PRELOAD_FONT_PATH);
695 int download_path_len = strlen(FONT_DOWNLOADED_FONT_PATH);
696 if(!safeStrNCmp((const char*)file, FONT_PRELOAD_FONT_PATH, preload_path_len) ||
697 !safeStrNCmp((const char*)file, FONT_DOWNLOADED_FONT_PATH, download_path_len)) {
698 if(FcPatternGetString(fs->fonts[j], FC_FAMILY, 0, &family) != FcResultMatch) {
699 LOCKOPTIONS_DBG("Family name is invalid");
703 if(eina_list_data_find(list, family) == NULL) {
704 list = eina_list_append(list, family);
705 LOCKOPTIONS_DBG("-------- ADDED FONT - family = %s", family);
710 FcFontSetDestroy(fs);
714 FcConfigDestroy(font_config);
718 FcChar8 *temp = NULL;
719 EINA_LIST_FOREACH(list, l, temp)
722 char *font_data = strdup((const char *)temp);
723 *font_list = eina_list_append(*font_list, font_data);
727 eina_list_free(list);//don't have to free the "family" data in list
729 LOCKOPTIONS_TRACE_END;
732 void get_font_name(const char *font_data, char *new_name, int bufsize)
734 LOCKOPTIONS_DBG("font data : %s", (char*)font_data);
736 const char* pos = font_data;
739 while(*pos != '\0' && count < bufsize-1)
741 //LOCKOPTIONS_DBG(">>> %c", *pos);
744 //LOCKOPTIONS_DBG(">>> empty ' ' ");
745 new_name[count] = '\\';
747 new_name[count] = ' ';
749 new_name[count] = font_data[i];
756 new_name[count] = '\0';
758 LOCKOPTIONS_DBG("font_name : %s", new_name);
761 Eina_Bool isEmptyStr(const char *str)
763 if (NULL == str || '\0' == str[0])
768 int safeStrNCmp(const char *s1, const char *s2, int len)
770 if (isEmptyStr(s1) && isEmptyStr(s2)) {
772 } else if (isEmptyStr(s1)) {
774 } else if (isEmptyStr(s2)) {
782 return strncmp(s1, s2, len);
784 static void _launch_layout_ug_cb(ui_gadget_h ug,
788 LOCKOPTIONS_DBG("_launch_layout_ug_cb begin.\n");
792 base = (Evas_Object *) ug_get_layout(ug);
796 case UG_MODE_FULLVIEW:
797 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
799 evas_object_show(base);
804 LOCKOPTIONS_DBG("_launch_layout_ug_cb end.\n");
806 static void _launch_destroy_ug_cb(ui_gadget_h ug,
809 LOCKOPTIONS_TRACE_BEGIN;
815 LOCKOPTIONS_TRACE_END;
818 void _fingerprint_reply_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *data)
820 LOCKOPTIONS_DBG("_fingerprint_reply_cb");
823 lockscreen_options_ug_data *ad = (lockscreen_options_ug_data *)data;
825 //if(result == SERVICE_RESULT_SUCCEEDED)
828 LOCKOPTIONS_DBG("_fingerprint_reply_cb SERVICE_RESULT_SUCCEEDED");
830 Evas_Object *win_main = NULL;
831 win_main = ug_get_window();
833 LOCKOPTIONS_DBG("win is null");
836 if (elm_win_wm_rotation_supported_get(win_main)) {
837 LOCKOPTIONS_DBG("_fingerprint_reply_cb elm_win_wm_rotation_supported_get");
838 elm_win_wm_rotation_preferred_rotation_set(win_main, -1);
839 const int rots[4] = { APP_DEVICE_ORIENTATION_0,
840 APP_DEVICE_ORIENTATION_90,
841 APP_DEVICE_ORIENTATION_180,
842 APP_DEVICE_ORIENTATION_270 };
843 elm_win_wm_rotation_available_rotations_set(win_main, &rots, 4);
845 app_control_h new_req;
846 if(!app_control_create(&new_req)){
847 launch_ug("setting-locktype-efl", new_req, ad);
848 app_control_destroy(new_req);
853 LOCKOPTIONS_DBG("_fingerprint_reply_cb fail");
858 static void _launch_result_password_ug_cb(app_control_h ug, app_control_h reply,app_control_result_e result,void *data)
860 LOCKOPTIONS_TRACE_BEGIN;
863 lockscreen_options_ug_data *ad = (lockscreen_options_ug_data *) data; /* ad is point to priv */
867 LOCKOPTIONS_DBG(" !result ");
868 char *string_result = NULL;
869 char *current = NULL;
870 app_control_get_extra_data(reply, "result", &string_result);
871 if(string_result == NULL)
873 LOCKOPTIONS_DBG("_launch_result_password_ug_cb string_result is %s.",string_result);
875 if(strcmp(string_result, "Cancel") == 0)
879 else if(strcmp(string_result, "SETTING_PW_TYPE_ENTER_LOCK_TYPE") == 0 || strcmp(string_result, "SETTING_PW_TYPE_VERIFY_FP_ALT_PASSWORD") == 0)
887 LOCKOPTIONS_DBG(" SETTING_PW_TYPE_ENTER_LOCK_TYPE ||SETTING_PW_TYPE_VERIFY_FP_ALT_PASSWORD _launch_result_password_ug_cb");
890 if (app_control_create(&svc)) {
893 app_control_get_extra_data(reply, "current", ¤t);
895 app_control_add_extra_data(svc, "current", current);
898 launch_ug("setting-locktype-efl", svc, ad);
899 app_control_destroy(svc);
904 void launch_ug(char* ug_name, app_control_h svc_mt_ug, void *data)
906 LOCKOPTIONS_DBG("_launch_ug. %s \n", ug_name);
908 LOCKOPTIONS_ERR("The data (ug_data)is NULL.");
911 if(ug_name == NULL) {
914 lockscreen_options_ug_data *ug_data = (lockscreen_options_ug_data *) data;
916 struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
919 cbs->layout_cb = _launch_layout_ug_cb;
920 if(strcmp(ug_name, "setting-password-efl") == 0) {
921 cbs->result_cb = _launch_result_password_ug_cb;
923 cbs->result_cb = NULL;
925 cbs->destroy_cb = _launch_destroy_ug_cb;
926 cbs->priv = (void *)ug_data;
927 LOCKOPTIONS_DBG("Launch ug begin. %s \n", ug_name);
928 ui_gadget_h loading = ug_create(ug_data->ug, ug_name, UG_MODE_FULLVIEW, svc_mt_ug, cbs);
931 app_control_set_app_id(svc_mt_ug, ug_name);
932 Evas_Object *win = (Evas_Object *)ug_get_window();
933 app_control_set_window(svc_mt_ug, elm_win_xwindow_get(win));
935 if(strcmp(ug_name, "setting-password-efl") == 0) {
936 app_control_send_launch_request(svc_mt_ug, _launch_result_password_ug_cb, data);
938 app_control_send_launch_request(svc_mt_ug, NULL, data);
941 if (NULL == svc_handle) {
942 LOCKOPTIONS_ERR("Launch ug failed.");
946 LOCKOPTIONS_DBG("Launch ug end. %s \n", ug_name);
948 Eina_Bool _client_message_rotation_cb(void *data, int type, void *event)
950 Ecore_X_Event_Client_Message *ev = (Ecore_X_Event_Client_Message *) event;
951 //LOCKOPTIONS_DBG("--------------------- _client_message_cb-----");
953 if (ev->message_type == ECORE_X_ATOM_E_WINDOW_ROTATION_CHANGE_REQUEST) {
954 if (ev->win == elm_win_xwindow_get(ug_get_window())) {
955 angle = ev->data.l[1];
957 if (gIseScreenDegree != angle) {
959 if (!g_in_emoji_win) {
961 rotate_voice_input(angle);
962 ise_set_screen_direction(angle);
963 //ise_set_refresh_flag(true);
964 reset_focus_after_rotation(true); /*reset the focus of candidate after the rotation of phone is changed */
965 ise_show(gLastIC,context_layoutid);
967 ise_set_screen_direction(angle);
968 relocate_window(g_in_emoji_win);
969 update_scroller_content(angle);
973 PRINTFUNC(DLOG_DEBUG, "%d", gCore->get_input_mode());
975 if (gCore->get_input_mode() == INPUT_MODE_HANDWRITING) {
976 _hwr_commit_default_string(true);
977 _hwr_destroy_handwriting();
985 //LOCKOPTIONS_DBG("---------------------------_client_message_cb angle = %d ",angle);
986 return ECORE_CALLBACK_RENEW;
990 Evas_Object *_create_check_on_naviframe(Evas_Object *parent,char * vconf,Evas_Smart_Cb func, void *data)
992 lockscreen_menu_item_info *lockoption_data =
993 (lockscreen_menu_item_info *) data;
999 check = elm_check_add(parent);
1000 elm_object_style_set(check, "on&off");
1001 //elm_object_style_set(check, "naviframe/title_on&off");
1002 evas_object_show(check);
1004 //value = _lockscreen_options_get_menu_status(lockoption_data->stringId);
1005 //vconf_get_bool(VCONFKEY_LOCKSCREEN_ADDITIONAL_INFO_DISPLAY, &value);
1007 vconf_get_bool(vconf, &value);
1008 elm_check_state_set(check, value);
1010 evas_object_pass_events_set(check, 1);
1011 evas_object_propagate_events_set(check, 0);
1014 if (lockoption_data->stringId == IDS_LOCKSCREEN_OPTIONS_SHORTCUTS) {
1015 Eina_Bool is_have = EINA_FALSE;
1016 is_have = lockscreen_options_shortcuts_check_items();
1017 if(is_have == EINA_TRUE){
1018 elm_object_disabled_set(check, EINA_FALSE);
1020 elm_object_disabled_set(check, EINA_TRUE);
1021 elm_check_state_set(check, EINA_FALSE);
1022 _lockscreen_options_set_menu_status(lockoption_data->stringId, EINA_FALSE);
1024 }else if (lockoption_data->stringId ==
1025 IDS_LOCKSCREEN_OPTIONS_CONTEXTAWARE_NOTI) {
1026 elm_object_disabled_set(check, EINA_TRUE);
1030 evas_object_smart_callback_add(check, "changed",