From 36e6e4ac73a2d8b25c67afbd2077aa706a40c7cf Mon Sep 17 00:00:00 2001 From: "hhh.kwon" Date: Mon, 25 Nov 2013 21:06:06 +0900 Subject: [PATCH] Implement Simple password lockscreen on RSA. Change-Id: I012a47faaee82f67c021acd1ce9f6c1a998d1732 --- data/groups/lock-simple-password.edc | 16 ++++---- org.tizen.lockscreen.xml.in | 2 +- packaging/org.tizen.lockscreen.spec | 2 +- src/bg.c | 27 ++++++++------ src/lockscreen.c | 2 + src/lockscreen.h | 2 + src/simple-password.c | 72 +++++++++++++++++++++--------------- src/util.c | 44 +++++++++++++++++++--- 8 files changed, 110 insertions(+), 57 deletions(-) diff --git a/data/groups/lock-simple-password.edc b/data/groups/lock-simple-password.edc index d9fb0ea..73b9b04 100755 --- a/data/groups/lock-simple-password.edc +++ b/data/groups/lock-simple-password.edc @@ -15,11 +15,11 @@ */ #define NUMBER_KEYPAD_PANEL_WIDTH 636 -#define NUMBER_KEYPAD_PANEL_HEIGHT 656 +#define NUMBER_KEYPAD_PANEL_HEIGHT 680 #define NUMBER_KEYPAD_BUTTON_WIDTH 194 #define NUMBER_KEYPAD_BUTTON_HEIGHT 194 #define NUMBER_KEYPAD_BUTTON_PAD_X 27 -#define NUMBER_KEYPAD_BUTTON_PAD_Y 40 +#define NUMBER_KEYPAD_BUTTON_PAD_Y 20 #define NUMBER_KEYPAD_REL_W(x) ((x)/NUMBER_KEYPAD_PANEL_WIDTH) #define NUMBER_KEYPAD_REL_H(y) ((y)/NUMBER_KEYPAD_PANEL_HEIGHT) #define NUMBER_KEYPAD_BUTTON_REL_W(x) ((x)/NUMBER_KEYPAD_BUTTON_WIDTH) @@ -325,10 +325,10 @@ group{ PART_KEYPAD_BUTTON_NUMBER("7", 0, 2*(NUMBER_KEYPAD_BUTTON_HEIGHT-NUMBER_KEYPAD_BUTTON_PAD_Y), "ls_button_default.png", "ls_button_press.png", "7", "Tizen:style=Roman", 60) PART_KEYPAD_BUTTON_NUMBER("8", NUMBER_KEYPAD_BUTTON_WIDTH+NUMBER_KEYPAD_BUTTON_PAD_X, 2*(NUMBER_KEYPAD_BUTTON_HEIGHT-NUMBER_KEYPAD_BUTTON_PAD_Y), "ls_button_default.png", "ls_button_press.png", "8", "Tizen:style=Roman", 60) PART_KEYPAD_BUTTON_NUMBER("9", 2*(NUMBER_KEYPAD_BUTTON_WIDTH+NUMBER_KEYPAD_BUTTON_PAD_X), 2*(NUMBER_KEYPAD_BUTTON_HEIGHT-NUMBER_KEYPAD_BUTTON_PAD_Y), "ls_button_default.png", "ls_button_press.png", "9", "Tizen:style=Roman", 60) - PART_KEYPAD_BUTTON_NUMBER("SOS", 0, 3*(NUMBER_KEYPAD_BUTTON_HEIGHT-NUMBER_KEYPAD_BUTTON_PAD_Y), "ls_button_default.png", "ls_button_press.png", "", "Tizen:style=Roman", 60) + //PART_KEYPAD_BUTTON_NUMBER("SOS", 0, 3*(NUMBER_KEYPAD_BUTTON_HEIGHT-NUMBER_KEYPAD_BUTTON_PAD_Y), "ls_button_default.png", "ls_button_press.png", "", "Tizen:style=Roman", 60) PART_KEYPAD_BUTTON_NUMBER("0", NUMBER_KEYPAD_BUTTON_WIDTH+NUMBER_KEYPAD_BUTTON_PAD_X, 3*(NUMBER_KEYPAD_BUTTON_HEIGHT-NUMBER_KEYPAD_BUTTON_PAD_Y), "ls_button_default.png", "ls_button_press.png", "0", "Tizen:style=Roman", 60) - PART_KEYPAD_BUTTON_NUMBER("Backspace", 2*(NUMBER_KEYPAD_BUTTON_WIDTH+NUMBER_KEYPAD_BUTTON_PAD_X), 3*(NUMBER_KEYPAD_BUTTON_HEIGHT-NUMBER_KEYPAD_BUTTON_PAD_Y), "ls_button_default.png", "ls_button_press.png", "", "Tizen:style=Roman", 60) - part{ + //PART_KEYPAD_BUTTON_NUMBER("Backspace", 2*(NUMBER_KEYPAD_BUTTON_WIDTH+NUMBER_KEYPAD_BUTTON_PAD_X), 3*(NUMBER_KEYPAD_BUTTON_HEIGHT-NUMBER_KEYPAD_BUTTON_PAD_Y), "ls_button_default.png", "ls_button_press.png", "", "Tizen:style=Roman", 60) + /*part{ name: "img.sos"; type: IMAGE; scale: 1; @@ -356,7 +356,7 @@ group{ rel2{relative: 1.0 1.0; to: "Backspace";} image.normal: "ls_button_x.png"; } - } + }*/ } programs { @@ -369,8 +369,8 @@ group{ PROG_KEYPAD_BUTTON("7") PROG_KEYPAD_BUTTON("8") PROG_KEYPAD_BUTTON("9") - PROG_KEYPAD_BUTTON("SOS") + //PROG_KEYPAD_BUTTON("SOS") PROG_KEYPAD_BUTTON("0") - PROG_KEYPAD_BUTTON("Backspace") + //PROG_KEYPAD_BUTTON("Backspace") } } diff --git a/org.tizen.lockscreen.xml.in b/org.tizen.lockscreen.xml.in index 72c4cb3..2994515 100755 --- a/org.tizen.lockscreen.xml.in +++ b/org.tizen.lockscreen.xml.in @@ -1,5 +1,5 @@ - + Youngjoo Park seungtaek chung diff --git a/packaging/org.tizen.lockscreen.spec b/packaging/org.tizen.lockscreen.spec index 066a214..ff02939 100755 --- a/packaging/org.tizen.lockscreen.spec +++ b/packaging/org.tizen.lockscreen.spec @@ -2,7 +2,7 @@ Name: org.tizen.lockscreen Summary: lockscreen application -Version: 0.1.18 +Version: 0.1.19 Release: 1 Group: TBD License: Apache diff --git a/src/bg.c b/src/bg.c index da64605..65bf577 100755 --- a/src/bg.c +++ b/src/bg.c @@ -34,10 +34,9 @@ static void _flick_event_process(struct appdata *ad) int locktype = 0; vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &locktype); - if(locktype == SETTING_SCREEN_LOCK_TYPE_SIMPLE_PASSWORD){ + + if(locktype == 4) { simple_password_layout_create(ad); - } else if(locktype == SETTING_SCREEN_LOCK_TYPE_PASSWORD){ - complex_password_layout_create(ad); } } @@ -236,7 +235,8 @@ void _slider_move_cb(void *data, Evas * evas, Evas_Object * obj, void *event_inf "lock.image.r"); LOCK_SCREEN_TRACE_DBG("[ == %s == ] press15", __func__); } - evas_object_color_set(ad->ly_main, alpha, alpha, alpha, alpha); + if(ad->lock_type == 1) + evas_object_color_set(ad->ly_main, alpha, alpha, alpha, alpha); } else { LOCK_SCREEN_TRACE_DBG("sliding is canceled"); ad->bDrag = 0; @@ -284,13 +284,18 @@ void _slider_up_cb(void *data, Evas * evas, Evas_Object * obj, void *event_info) if (ad->bDrag == 1) { ad->bDrag = 0; - if(ad->slider) { - evas_object_del(ad->slider); - ad->slider = NULL; + + if(ad->lock_type == 1) { + if(ad->slider) { + evas_object_del(ad->slider); + ad->slider = NULL; + } + LOCK_SCREEN_TRACE_DBG("unlock the lock-screen"); + elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_HIDE); + elm_object_signal_emit(ad->ly_main, "transit,clipper", "clipper"); + vconf_set_int(VCONFKEY_IDLE_LOCK_STATE, VCONFKEY_IDLE_UNLOCK); + } else if (ad->lock_type == 4) { + simple_password_layout_create(ad); } - LOCK_SCREEN_TRACE_DBG("unlock the lock-screen"); - elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_HIDE); - elm_object_signal_emit(ad->ly_main, "transit,clipper", "clipper"); - vconf_set_int(VCONFKEY_IDLE_LOCK_STATE, VCONFKEY_IDLE_UNLOCK); } } diff --git a/src/lockscreen.c b/src/lockscreen.c index 52ddeb3..5bc609d 100755 --- a/src/lockscreen.c +++ b/src/lockscreen.c @@ -86,6 +86,8 @@ static bool app_create(void *data) if (ad == NULL) return false; + vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &ad->lock_type); + ad->win = NULL; ad->ly_main = NULL; ad->ao_bg = NULL; diff --git a/src/lockscreen.h b/src/lockscreen.h index 38e57e3..c323277 100755 --- a/src/lockscreen.h +++ b/src/lockscreen.h @@ -52,6 +52,8 @@ enum { }; struct appdata { + int lock_type; + Evas_Object *win; Evas_Object *ly_main;//top_layout Evas_Object *ao_bg; diff --git a/src/simple-password.c b/src/simple-password.c index afe9ab1..5216f62 100755 --- a/src/simple-password.c +++ b/src/simple-password.c @@ -137,49 +137,61 @@ static void __simple_password_mouse_move_cb(void *data, Evas * evas, Evas_Object LOCK_SCREEN_TRACE_DBG("__simple_password_mouse_move_cb"); } -void __simple_password_check_result(void *data) +void __simple_password_check_result(void *data, char *event) { struct appdata *ad = (struct appdata *) data; int value = -1; + int ret = 0; - vconf_get_int(VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT, &value); + ret = vconf_get_int(VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT, &value); value--; - if (value > 0 && value <= PASSWORD_ATTEMPTS_MAX_NUM) { - char temp_str[200] = {0}; - char temp_left[50] = {0}; + if(ret == 0) { + if (value > 0 && value <= PASSWORD_ATTEMPTS_MAX_NUM) { + char temp_str[200] = {0}; + char temp_left[50] = {0}; - vconf_set_int(VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT, - value); - if(value == 1) - { - snprintf(temp_left, sizeof(temp_left), _("IDS_IDLE_BODY_1_ATTEMPT_LEFT")); - } - else - { - snprintf(temp_left, sizeof(temp_left), _("IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"), value); - } - snprintf(temp_str, sizeof(temp_str), "%s, %s", _("IDS_IDLE_BODY_INCORRECT_PASSWORD"), temp_left); - edje_object_part_text_set(_EDJ(ad->ly_simple_password), "txt.result", temp_str); - } else if (value == 0) { - time_t cur_time = time(NULL); - char cur_timestamp[64] = {0}; - char temp_str[512] = {0}; + vconf_set_int(VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT, + value); + if(value == 1) + { + snprintf(temp_left, sizeof(temp_left), _("IDS_IDLE_BODY_1_ATTEMPT_LEFT")); + } + else + { + snprintf(temp_left, sizeof(temp_left), _("IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"), value); + } + snprintf(temp_str, sizeof(temp_str), "%s, %s", _("IDS_IDLE_BODY_INCORRECT_PASSWORD"), temp_left); + edje_object_part_text_set(_EDJ(ad->ly_simple_password), "txt.result", temp_str); + } else if (value == 0) { + time_t cur_time = time(NULL); + char cur_timestamp[64] = {0}; + char temp_str[512] = {0}; - snprintf(cur_timestamp, sizeof(cur_timestamp), "%ld", cur_time); - vconf_set_str(VCONFKEY_SETAPPL_PASSWORD_TIMESTAMP_STR, cur_timestamp); - vconf_set_int(VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT, value); - ad->block_seconds = PASSWORD_BLOCK_SECONDS; + snprintf(cur_timestamp, sizeof(cur_timestamp), "%ld", cur_time); + vconf_set_str(VCONFKEY_SETAPPL_PASSWORD_TIMESTAMP_STR, cur_timestamp); + vconf_set_int(VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT, value); + ad->block_seconds = PASSWORD_BLOCK_SECONDS; - snprintf(temp_str, sizeof(temp_str), _L("Input password again after %d seconds."), ad->block_seconds); + snprintf(temp_str, sizeof(temp_str), _L("Input password again after %d seconds."), ad->block_seconds); + edje_object_part_text_set(_EDJ(ad->ly_simple_password), "txt.result", temp_str); + } + } else { + char temp_str[200] = {0}; + snprintf(temp_str, sizeof(temp_str), _("IDS_IDLE_BODY_INCORRECT_PASSWORD")); edje_object_part_text_set(_EDJ(ad->ly_simple_password), "txt.result", temp_str); + + while(simple_password_length != 0) { + simple_password_length--; + simple_password[simple_password_length] = '\0'; + } } } static void __simple_password_check_result_cb (const char *event, void *data) { - __simple_password_check_result(data); + __simple_password_check_result(data, event); } static void __simple_password_results_update(void *data) @@ -296,9 +308,9 @@ void simple_password_layout_create(void *data) elm_object_part_content_set(ad->ly_simple_password, "sw.keypad.number", keypad_layout); edje_object_signal_emit(_EDJ(ad->ly_simple_password), "show,numberkeyboard", "sw.keypad.number"); edje_object_signal_callback_add(_EDJ(keypad_layout), "keypad_down_clicked", "*", __simple_password_keypad_process, ad); - evas_object_event_callback_add(ad->ly_simple_password, EVAS_CALLBACK_MOUSE_DOWN, __simple_password_mouse_down_cb, ad); - evas_object_event_callback_add(ad->ly_simple_password, EVAS_CALLBACK_MOUSE_MOVE, __simple_password_mouse_move_cb, ad); - evas_object_event_callback_add(ad->ly_simple_password, EVAS_CALLBACK_MOUSE_UP, __simple_password_mouse_up_cb, ad); + //evas_object_event_callback_add(ad->ly_simple_password, EVAS_CALLBACK_MOUSE_DOWN, __simple_password_mouse_down_cb, ad); + //evas_object_event_callback_add(ad->ly_simple_password, EVAS_CALLBACK_MOUSE_MOVE, __simple_password_mouse_move_cb, ad); + //evas_object_event_callback_add(ad->ly_simple_password, EVAS_CALLBACK_MOUSE_UP, __simple_password_mouse_up_cb, ad); evas_object_show(keypad_layout); vconf_notify_key_changed(VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT, __simple_password_check_vconf_value_cb, ad); __simple_password_check_vconf_value(ad); diff --git a/src/util.c b/src/util.c index cff67ca..22fa679 100755 --- a/src/util.c +++ b/src/util.c @@ -485,9 +485,9 @@ static Eina_Bool _init_widget_cb(void *data) noti_process(ad); } - evas_object_event_callback_add(ad->event_bg, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb_s, ad); - evas_object_event_callback_add(ad->event_bg, EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb_s, ad); - evas_object_event_callback_add(ad->event_bg, EVAS_CALLBACK_MOUSE_MOVE, _mouse_move_cb_s, ad); + //evas_object_event_callback_add(ad->event_bg, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb_s, ad); + //evas_object_event_callback_add(ad->event_bg, EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb_s, ad); + //evas_object_event_callback_add(ad->event_bg, EVAS_CALLBACK_MOUSE_MOVE, _mouse_move_cb_s, ad); evas_object_event_callback_add(ad->slider, EVAS_CALLBACK_MOUSE_DOWN, _slider_down_cb, ad); evas_object_event_callback_add(ad->slider, EVAS_CALLBACK_MOUSE_UP, _slider_up_cb, ad); evas_object_event_callback_add(ad->slider, EVAS_CALLBACK_MOUSE_MOVE, _slider_move_cb, ad); @@ -572,6 +572,15 @@ int _app_create(struct appdata *ad) return 0; } +#define _MAKE_ATOM(a, s) \ + do { \ + a = ecore_x_atom_get(s); \ + if (!a) \ + LOCK_SCREEN_TRACE_ERR("%s creation failed.", s); \ + } while(0) + +#define STR_ATOM_PANEL_SCROLLABLE_STATE "_E_MOVE_PANEL_SCROLLABLE_STATE" + int _app_reset(struct appdata *ad) { if (ad == NULL) @@ -583,9 +592,32 @@ int _app_reset(struct appdata *ad) } static int initted = 0; - if(initted == 0) { - ecore_idler_add(_init_widget_cb, ad); - initted = 1; + if(ad->lock_type == 1) { + if(initted == 0) { + ecore_idler_add(_init_widget_cb, ad); + initted = 1; + } + } else if (ad->lock_type == 4) { + if(initted == 0) { + Ecore_X_Atom ATOM_PANEL_SCROLLABLE_STATE = 0; + unsigned int val[3]; + + // init atoms + _MAKE_ATOM(ATOM_PANEL_SCROLLABLE_STATE, STR_ATOM_PANEL_SCROLLABLE_STATE ); + + val[0] = 0; // always enable F + val[1] = 0; // quickpanel enable F + val[2] = 0; // apptray enable F + + LOCK_SCREEN_TRACE_DBG("Set quickpanel disable"); + ecore_x_window_prop_card32_set(elm_win_xwindow_get(ad->win), + ATOM_PANEL_SCROLLABLE_STATE, + val, + 3); + + simple_password_layout_create(ad); + initted = 1; + } } return 0; -- 2.7.4