From 41726613d2443889ba919e2266bde111ec770a29 Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Sat, 1 Aug 2015 19:04:55 +0900 Subject: [PATCH] bug fix - user edit view - support back key - remove pin entry - modify name entry to focus/unfocus - diable name entry when edit user Change-Id: Ie6e485ca853231fe08ca4891da9e3570f8e5ccf2 Signed-off-by: Soohye Shin --- edje/images/search_searchbar_small_bg_nor.png | Bin 0 -> 209 bytes edje/view/useredit.edc | 353 ++++++++++---------------- include/defs.h | 6 +- src/utils.c | 31 +-- src/view/view_user_edit.c | 146 +++++------ 5 files changed, 198 insertions(+), 338 deletions(-) create mode 100644 edje/images/search_searchbar_small_bg_nor.png diff --git a/edje/images/search_searchbar_small_bg_nor.png b/edje/images/search_searchbar_small_bg_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..74848b3bca1b3fa523d0ac55d7cecc63e5155f73 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s0wkH2?q3U}7>k44ofy`glX(f`FeQ1ryDe+xGddG!C5Y46*;wUk@lTmxYybp;gj2yE+ t?tk$x{6$vo(HRnP*{2qAtMku!ODlf<(44$rjF6*2UngI4MLOcKf literal 0 HcmV?d00001 diff --git a/edje/view/useredit.edc b/edje/view/useredit.edc index 6e6889e..67b2b02 100644 --- a/edje/view/useredit.edc +++ b/edje/view/useredit.edc @@ -140,7 +140,7 @@ group { to, "contents"; relative, 0.5 0.5; } - min, 1128 408; + min, 1128 378; fixed, 1 1; } } @@ -153,6 +153,7 @@ group { image, "ic_user_require_01.png" COMP; image, "ic_user_require_02.png" COMP; image, "btn_user_del.png" COMP; + image, "search_searchbar_small_bg_nor.png" COMP; } parts { part { @@ -161,7 +162,7 @@ group { scale, 1; description { state, "default" 0.0; - min, 1128 408; + min, 1128 378; visible, 0; } } @@ -284,90 +285,6 @@ group { } } part { - name, "pad.require"; - type, RECT; - scale, 1; - description { - state, "default" 0.0; - rel1 { - to, PART_USER_EDIT_CONTENTS_PHOTO; - relative, 0.0 1.0; - } - rel2 { - to, PART_USER_EDIT_CONTENTS_PHOTO; - relative, 0.0 1.0; - } - min, 0 22; - fixed, 1 1; - align, 0.0 0.0; - visible, 0; - } - } - part { - name, "icon.require"; - type, IMAGE; - scale, 1; - description { - state, "default" 0.0; - rel1 { - to, "pad.require"; - relative, 1.0 1.0; - } - rel2.to, "pad.require"; - min, 12 24; - fixed, 1 1; - align, 0.0 0.0; - image.normal, "ic_user_require_02.png"; - } - } - part { - name, "pad.require.text"; - type, RECT; - scale, 1; - description { - state, "default" 0.0; - rel1 { - to, "icon.require"; - relative, 1.0 0.0; - } - rel2 { - to, "icon.require"; - relative, 1.0 0.0; - } - min, 6 0; - align, 0.0 0.0; - fixed, 1 1; - visible, 0; - } - } - part { - name, "require"; - type, TEXT; - scale, 1; - description { - state, "default" 0.0; - rel1 { - to, "pad.require.text"; - relative, 1.0 1.0; - } - rel2 { - to, "pad.require.text"; - relative, 1.0 1.0; - } - min, 294 24; - fixed, 1 1; - align, 0.0 0.0; - text { - font, "TizenSans"; - size, 24; - align, 0.0 0.5; - text, "Required fields"; - } - color, 64 136 211 255; - } - } - - part { name, "pad.profile"; type, RECT; scale, 1; @@ -450,12 +367,11 @@ group { min, 0 22; fixed, 1 1; align, 0.0 0.0; - visible, 0; } } part { - name, PART_USER_EDIT_CONTENTS_NAME; - type, SWALLOW; + name, "border.name"; + type, IMAGE; scale, 1; description { state, "default" 0.0; @@ -468,10 +384,56 @@ group { fixed, 1 1; align, 0.0 0.0; fixed, 1 1; + image { + normal, "search_searchbar_small_bg_nor.png"; + border, 4 4 4 4; + border_scale, 1; + } + visible, 1; + } + description { + state, "focus"; + inherit, "default" 0.0; + visible, 0; + } + } + part { + name, PART_USER_EDIT_CONTENTS_NAME; + type, SWALLOW; + scale, 1; + description { + state, "default" 0.0; + rel1 { + to, "border.name"; + relative, 0.5 0.5; + } + rel2 { + to, "border.name"; + relative, 0.5 0.5; + } + min, 432 60; + fixed, 1 1; + } + } + part { + name, "disable.name"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + rel1.to, PART_USER_EDIT_CONTENTS_NAME; + rel2.to, PART_USER_EDIT_CONTENTS_NAME; + color, 200 200 200 100; + visible, 0; + } + description { + state, "disable"; + inherit, "default" 0.0; + visible, 1; } } part { - name, "pad.pin"; + name, "pad.lock"; type, RECT; scale, 1; description { @@ -484,157 +446,154 @@ group { to, PART_USER_EDIT_CONTENTS_NAME; relative, 0.0 1.0; } - min, 0 32; + min, 0 42; fixed, 1 1; align, 0.0 0.0; visible, 0; } } part { - name, "pin"; + name, "lock"; type, TEXT; scale, 1; description { state, "default" 0.0; rel1 { - to, "pad.pin"; - relative, 0.0 1.0; - } - rel2 { - to, "pad.pin"; - relative, 0.0 1.0; + to, "pad.lock"; + relative, 1.0 1.0; } + rel2.to, "pad.lock"; min, 436 32; fixed, 1 1; align, 0.0 0.0; text { - text, "Pin code"; font, "TizenSans"; size, 32; + text, "Privacy lock"; align, 0.0 0.5; } color, 77 77 77 255; } } part { - name, "pad.pin.down"; + name, "pad.lock.down"; type, RECT; scale, 1; description { state, "default" 0.0; rel1 { - to, "pin"; + to, "lock"; relative, 0.0 1.0; } rel2 { - to, "pin"; + to, "lock"; relative, 0.0 1.0; } min, 0 22; - align, 0.0 0.0; fixed, 1 1; + align, 0.0 0.0; visible, 0; } } part { - name, PART_USER_EDIT_CONTENTS_PIN; + name, PART_USER_EDIT_CONTENTS_LOCK; type, SWALLOW; scale, 1; description { state, "default" 0.0; rel1 { - to, "pad.pin.down"; - relative, 1.0 1.0; - } - rel2 { - to, "pad.pin.down"; + to, "pad.lock.down"; relative, 1.0 1.0; } - min, 436 64; + rel2.to, "pad.lock.down"; + min, 104 54; fixed, 1 1; align, 0.0 0.0; } } part { - name, "pad.lock"; + name, "pad.require"; type, RECT; scale, 1; description { state, "default" 0.0; rel1 { - to, PART_USER_EDIT_CONTENTS_PIN; + to, PART_USER_EDIT_CONTENTS_LOCK; relative, 0.0 1.0; } rel2 { - to, PART_USER_EDIT_CONTENTS_PIN; + to, PART_USER_EDIT_CONTENTS_LOCK; relative, 0.0 1.0; } - min, 0 32; + min, 0 52; fixed, 1 1; align, 0.0 0.0; visible, 0; } } part { - name, "lock"; - type, TEXT; + name, "icon.require"; + type, IMAGE; scale, 1; description { state, "default" 0.0; rel1 { - to, "pad.lock"; + to, "pad.require"; relative, 1.0 1.0; } - rel2.to, "pad.lock"; - min, 436 32; + rel2.to, "pad.require"; + min, 12 24; fixed, 1 1; align, 0.0 0.0; - text { - font, "TizenSans"; - size, 32; - text, "Privacy lock"; - align, 0.0 0.5; - } - color, 77 77 77 255; + image.normal, "ic_user_require_02.png"; } } part { - name, "pad.lock.down"; + name, "pad.require.text"; type, RECT; scale, 1; description { state, "default" 0.0; rel1 { - to, "lock"; - relative, 0.0 1.0; + to, "icon.require"; + relative, 1.0 0.0; } rel2 { - to, "lock"; - relative, 0.0 1.0; + to, "icon.require"; + relative, 1.0 0.0; } - min, 0 22; - fixed, 1 1; + min, 6 0; align, 0.0 0.0; + fixed, 1 1; visible, 0; } } part { - name, PART_USER_EDIT_CONTENTS_LOCK; - type, SWALLOW; + name, "require"; + type, TEXT; scale, 1; description { state, "default" 0.0; rel1 { - to, "pad.lock.down"; + to, "pad.require.text"; relative, 1.0 1.0; } - rel2.to, "pad.lock.down"; - min, 104 54; + rel2 { + to, "pad.require.text"; + relative, 1.0 1.0; + } + min, 294 24; fixed, 1 1; align, 0.0 0.0; + text { + font, "TizenSans"; + size, 24; + align, 0.0 0.5; + text, "Required fields"; + } + color, 64 136 211 255; } } - part { name, "pad.delete"; type, RECT; @@ -643,15 +602,15 @@ group { state, "default" 0.0; rel1 { to, PART_USER_EDIT_CONTENTS_NAME; - relative, 1.0 0.0; + relative, 1.0 0.5; } rel2 { to, PART_USER_EDIT_CONTENTS_NAME; - relative, 1.0 0.0; + relative, 1.0 0.5; } min, 14 0; fixed, 1 1; - align, 0.0 0.0; + align, 0.0 0.5; visible, 0; } } @@ -663,18 +622,48 @@ group { state, "default" 0.0; rel1 { to, "pad.delete"; - relative, 1.0 0.0; + relative, 1.0 0.5; } rel2 { to, "pad.delete"; - relative, 1.0 0.0; + relative, 1.0 0.5; } min, 174 64; fixed, 1 1; - align, 0.0 0.0; + align, 0.0 0.5; } } } + programs { + program { + name, "sig,focus"; + signal, SIG_FOCUS; + source, SRC_PROG; + action, STATE_SET "focus" 0.0; + target, "border.name"; + } + program { + name, "sig,unfocus"; + signal, SIG_UNFOCUS; + source, SRC_PROG; + action, STATE_SET "default" 0.0; + target, "border.name"; + } + program { + name, "sig,disable"; + signal, SIG_DISABLE; + source, SRC_PROG; + action, STATE_SET "disable" 0.0; + target, "disable.name"; + } + program { + name, "sig,enable"; + signal, SIG_ENABLE; + source, SRC_PROG; + action, STATE_SET "default" 0.0; + target, "disable.name"; + } + } } group { @@ -863,80 +852,6 @@ group { } group { - name, GRP_USER_EDIT_ENTRY; - parts { - part { - name, "bg"; - type, RECT; - scale, 1; - description { - state, "default" 0.0; - min, 436 64; - color, 194 194 194 255; - } - description { - state, "focus" 0.0; - inherit, "default" 0.0; - color, 0 119 246 255; - } - description { - state, "disable" 0.0; - inherit, "default" 0.0; - color, 194 194 194 120; - } - } - part { - name, "bg.entry"; - type, RECT; - scale, 1; - description { - state, "default" 0.0; - min, 432 60; - rel1.relative, 0.5 0.5; - rel2.relative, 0.5 0.5; - fixed, 1 1; - } - } - part { - name, PART_USER_EDIT_ENTRY; - type, SWALLOW; - scale, 1; - description { - state, "default" 0.0; - rel1.to, "bg.entry"; - rel2.to, "bg.entry"; - fixed, 1 1; - } - } - } - programs { - program { - name, "sig,focus"; - signal, SIG_FOCUS; - source, SRC_PROG; - action, STATE_SET "focus"; - transition, TRANSITION_LINEAR; - target, "bg"; - } - program { - name, "sig,unfocus"; - signal, SIG_UNFOCUS; - source, SRC_PROG; - action, STATE_SET "default" 0.0; - transition, TRANSITION_LINEAR; - target, "bg"; - } - program { - name, "sig,disable"; - signal, SIG_DISABLE; - source, SRC_PROG; - action, STATE_SET "disable" 0.0; - target, "bg"; - } - } -} - -group { name, GRP_USER_EDIT_DELETE; parts { part { diff --git a/include/defs.h b/include/defs.h index 4f47793..752c66c 100644 --- a/include/defs.h +++ b/include/defs.h @@ -25,6 +25,7 @@ #define SRC_PROG "prog" #define SRC_EDJE "edje" +#define SRC_ELM "elm" #define ICON_ADD "add" #define GRP_HOME "group.home" @@ -114,6 +115,7 @@ #define SIG_HIDE_RECENT "sig.hide.recent" #define SIG_HIDE_RECENT_DONE "sig.hide.recent.done" #define SIG_DISABLE "sig.disable" +#define SIG_ENABLE "sig.enable" #define SIG_SHOW_MASK "sig.show.mask" #define SIG_SHOW "sig.show" #define SIG_HIDE "sig.hide" @@ -122,6 +124,8 @@ #define SIG_CLICK_ARROW "sig.click.arrow" #define SIG_SHOW_ARROW "sig.show.arrow" #define SIG_HIDE_ARROW "sig.hide.arrow" +#define SIG_SELECT "elm,state,selected" +#define SIG_UNSELECT "elm,state,unselected" #define TITLE_WIDTH "title.width" @@ -188,8 +192,6 @@ #define MESSAGE_DISCARD "Discard" #define MESSAGE_DELETE_CONTENTS "If you delete this user, their data will also be deleted." #define MESSAGE_DISCARD_CONTENTS "Discard all entered data?
If you are out of this screen, data won't be saved" -#define MESSAGE_ENTRY_NAME "User Name" -#define MESSAGE_ENTRY_PIN "Pin code" #define GUM_ATTR_NAME "username" #define GUM_ATTR_USERTYPE "usertype" diff --git a/src/utils.c b/src/utils.c index cb24df5..aadb952 100644 --- a/src/utils.c +++ b/src/utils.c @@ -18,7 +18,6 @@ #include #include #include -#include #include "utils.h" #include "defs.h" @@ -313,35 +312,12 @@ Evas_Object *utils_add_button(Evas_Object *base, char *text, const char *part) return btn; } -static void _entry_focused(int id, void *data, Evas_Object *obj, - Elm_Object_Item *item) -{ - elm_object_signal_emit(data, SIG_FOCUS, SRC_PROG); -} - -static void _entry_unfocused(int id, void *data, Evas_Object *obj, - Elm_Object_Item *item) -{ - elm_object_signal_emit(data, SIG_UNFOCUS, SRC_PROG); -} - -static input_handler entry_handle = { - .focused = _entry_focused, - .unfocused = _entry_unfocused -}; - Evas_Object *utils_add_entry(Evas_Object *base, char *text, bool password, const char *part) { - Evas_Object *ly, *entry; - - ly = utils_add_layout(base, GRP_USER_EDIT_ENTRY, false, part); - if (!ly) { - _ERR("failed to add entry layout"); - return NULL; - } + Evas_Object *entry; - entry = elm_entry_add(ly); + entry = elm_entry_add(base); if (!entry) { _ERR("failed to add entry"); return NULL; @@ -362,9 +338,8 @@ Evas_Object *utils_add_entry(Evas_Object *base, char *text, bool password, ELM_SCROLLER_POLICY_OFF); if (text) elm_entry_entry_set(entry, text); - elm_object_part_content_set(ly, PART_USER_EDIT_ENTRY, entry); + elm_object_part_content_set(base, part, entry); - inputmgr_add_callback(entry, 0, &entry_handle, ly); evas_object_show(entry); return entry; diff --git a/src/view/view_user_edit.c b/src/view/view_user_edit.c index 6794072..0ef6b49 100644 --- a/src/view/view_user_edit.c +++ b/src/view/view_user_edit.c @@ -34,7 +34,6 @@ enum input_handler_type { INPUT_HANDLER_TYPE_PHOTO, - INPUT_HANDLER_TYPE_LOCK, INPUT_HANDLER_TYPE_DELETE, INPUT_HANDLER_TYPE_EO, INPUT_HANDLER_TYPE_BTN_DONE, @@ -42,7 +41,8 @@ enum input_handler_type { INPUT_HANDLER_TYPE_POPUP_BTN_DISCARD, INPUT_HANDLER_TYPE_POPUP_BTN_CANCEL, INPUT_HANDLER_TYPE_DELETE_POPUP_BTN_DELETE, - INPUT_HANDLER_TYPE_DELETE_POPUP_BTN_CANCEL + INPUT_HANDLER_TYPE_DELETE_POPUP_BTN_CANCEL, + INPUT_HANDLER_TYPE_ENTRY }; enum user_item_type { @@ -65,8 +65,6 @@ struct _priv { Evas_Object *ly; Evas_Object *photo; Evas_Object *name; - Evas_Object *pin; - Evas_Object *lock; Evas_Object *icon; Evas_Object *focus_icon; Evas_Object *done; @@ -74,7 +72,6 @@ struct _priv { Evas_Object *ctxpopup; Evas_Object *del; Evas_Object *popup; - Evas_Object *lock_icon; char *selected_photo; @@ -87,13 +84,19 @@ struct _priv { static void _focused(int id, void *data, Evas_Object *obj, Elm_Object_Item *item) { + struct _priv *priv; + switch (id) { case INPUT_HANDLER_TYPE_PHOTO: - case INPUT_HANDLER_TYPE_LOCK: case INPUT_HANDLER_TYPE_DELETE: case INPUT_HANDLER_TYPE_EO: elm_object_signal_emit(obj, SIG_FOCUS, SRC_PROG); break; + case INPUT_HANDLER_TYPE_ENTRY: + priv = data; + elm_object_signal_emit(obj, SIG_SELECT, SRC_ELM); + elm_object_signal_emit(priv->ly, SIG_FOCUS, SRC_PROG); + break; default: return; } @@ -102,13 +105,19 @@ static void _focused(int id, void *data, Evas_Object *obj, static void _unfocused(int id, void *data, Evas_Object *obj, Elm_Object_Item *item) { + struct _priv *priv; + switch (id) { case INPUT_HANDLER_TYPE_PHOTO: - case INPUT_HANDLER_TYPE_LOCK: case INPUT_HANDLER_TYPE_DELETE: case INPUT_HANDLER_TYPE_EO: elm_object_signal_emit(obj, SIG_UNFOCUS, SRC_PROG); break; + case INPUT_HANDLER_TYPE_ENTRY: + priv = data; + elm_object_signal_emit(obj, SIG_UNSELECT, SRC_ELM); + elm_object_signal_emit(priv->ly, SIG_UNFOCUS, SRC_PROG); + break; default: return; } @@ -128,10 +137,9 @@ static input_handler handler = { }; static void _get_profile(struct _priv *priv, const char **name, - const char **photo, const char **pin) + const char **photo) { *name = elm_entry_entry_get(priv->name); - *pin = elm_entry_entry_get(priv->pin); elm_image_file_get(priv->icon, photo, NULL); *photo = utils_get_icon_from_photo(*photo); } @@ -179,18 +187,15 @@ static void _add_discard_popup(struct _priv *priv) static bool _check_changed_input(struct _priv *priv) { - const char *photo, *name, *pin; + const char *photo, *name; - _get_profile(priv, &name, &photo, &pin); + _get_profile(priv, &name, &photo); if (priv->di) { - if (!strcmp(name, priv->di->title) && !strcmp(pin, "") && - !strcmp(photo, priv->di->icon)) + if (!strcmp(photo, priv->di->icon)) return false; } else { - if (!strcmp(name, MESSAGE_ENTRY_NAME) && - !strcmp(pin, MESSAGE_ENTRY_PIN) && - !strcmp(photo, IMAGE_USER_DEFAULT)) + if (!strcmp(name, "") && !strcmp(photo, IMAGE_USER_DEFAULT)) return false; } @@ -334,51 +339,9 @@ static void _add_icon_list(struct _priv *priv) priv->ctxpopup = ctxpopup; } -static void _change_entry_status(Evas_Object *pin, Eina_Bool disable, - const char *signal) -{ - Evas_Object *parent; - - elm_entry_editable_set(pin, disable); - parent = elm_object_parent_widget_get(pin); - if (parent) - elm_object_signal_emit(parent, signal, SRC_PROG); - - elm_object_focus_allow_set(pin, disable); -} - -static void _load_lock_icon(struct _priv *priv) -{ - const char *file = NULL; - - if (!priv->lock_icon) { - priv->lock_icon = utils_add_icon(priv->lock, IMAGE_SWITCH_ON, - PART_USER_EDIT_SWITCH); - _change_entry_status(priv->pin, EINA_TRUE, SIG_UNFOCUS); - return; - } - - elm_image_file_get(priv->lock_icon, &file, NULL); - elm_object_part_content_unset(priv->lock, PART_USER_EDIT_SWITCH); - evas_object_del(priv->lock_icon); - - if (!file || !strcmp(file, IMAGE_SWITCH_OFF)) { - file = IMAGE_SWITCH_ON; - _change_entry_status(priv->pin, EINA_TRUE, SIG_UNFOCUS); - elm_entry_entry_set(priv->pin, MESSAGE_ENTRY_PIN); - } else { - file = IMAGE_SWITCH_OFF; - _change_entry_status(priv->pin, EINA_FALSE, SIG_DISABLE); - elm_entry_entry_set(priv->pin, ""); - } - - priv->lock_icon = utils_add_icon(priv->lock, file, - PART_USER_EDIT_SWITCH); -} - static Evas_Object *_add_layout(struct _priv *priv) { - Evas_Object *ly, *photo, *name, *pin, *lock; + Evas_Object *ly, *photo, *name, *lock; ly = utils_add_layout(priv->base, GRP_USER_EDIT_CONTENTS, false, PART_USER_EDIT_CONTENTS); @@ -397,23 +360,18 @@ static Evas_Object *_add_layout(struct _priv *priv) if (!name) goto err; - pin = utils_add_entry(ly, MESSAGE_ENTRY_PIN, false, - PART_USER_EDIT_CONTENTS_PIN); - if (!pin) - goto err; - - lock = utils_add_layout(ly, GRP_USER_EDIT_SWITCH, true, + lock = utils_add_layout(ly, GRP_USER_EDIT_SWITCH, false, PART_USER_EDIT_CONTENTS_LOCK); if (!lock) goto err; - inputmgr_add_callback(lock, INPUT_HANDLER_TYPE_LOCK, &handler, priv); + utils_add_icon(lock, IMAGE_SWITCH_OFF, PART_USER_EDIT_SWITCH); + inputmgr_add_callback(photo, INPUT_HANDLER_TYPE_PHOTO, &handler, priv); + inputmgr_add_callback(name, INPUT_HANDLER_TYPE_ENTRY, &handler, priv); - priv->lock = lock; priv->photo = photo; priv->name = name; - priv->pin = pin; return ly; err: @@ -438,8 +396,6 @@ static bool _add_user_edit(struct _priv *priv) return false; } - /* It should be implemented later about function btn */ - priv->ly = ly; return true; @@ -545,18 +501,17 @@ static void _select_eo(struct _priv *priv, Evas_Object *obj) static void _select_btn_done(struct _priv *priv) { - const char *name, *pin, *photo; + const char *name, *photo; - _get_profile(priv, &name, &photo, &pin); + _get_profile(priv, &name, &photo); if (priv->di) { priv->di->action = ITEM_SELECT_ACTION_UPDATE; priv->di->title = strdup(name ? name : ""); priv->di->icon = strdup(photo ? photo : IMAGE_USER_DEFAULT); - priv->di->parameter = strdup(pin ? pin : ""); datamgr_select_item(priv->dm, priv->di); } else - datamgr_add_item(priv->dm, name, photo, pin); + datamgr_add_item(priv->dm, name, photo, ""); priv->di = NULL; viewmgr_pop_view(); @@ -568,9 +523,6 @@ static void _select(struct _priv *priv, int id, Evas_Object *obj) case INPUT_HANDLER_TYPE_PHOTO: _add_icon_list(priv); break; - case INPUT_HANDLER_TYPE_LOCK: - _load_lock_icon(priv); - break; case INPUT_HANDLER_TYPE_DELETE: _add_delete_popup(priv); break; @@ -620,6 +572,17 @@ static void _key_down(int id, void *data, Evas *e, Evas_Object *obj, if (!strcmp(ev->keyname, KEY_BACK) || !strcmp(ev->keyname, KEY_BACK_REMOTE)) { switch (id) { + case INPUT_HANDLER_TYPE_PHOTO: + case INPUT_HANDLER_TYPE_BTN_DONE: + case INPUT_HANDLER_TYPE_BTN_CANCEL: + case INPUT_HANDLER_TYPE_DELETE: + case INPUT_HANDLER_TYPE_ENTRY: + if (_check_changed_input(priv)) { + _add_discard_popup(priv); + return; + } + viewmgr_pop_view(); + break; case INPUT_HANDLER_TYPE_EO: evas_object_del(priv->ctxpopup); priv->ctxpopup = NULL; @@ -638,8 +601,12 @@ static void _key_down(int id, void *data, Evas *e, Evas_Object *obj, return; } } else if (!strcmp(ev->keyname, KEY_ENTER) || - !strcmp(ev->keyname, KEY_ENTER_REMOTE)) + !strcmp(ev->keyname, KEY_ENTER_REMOTE)) { _select(priv, id, obj); + } else if (!strcmp(ev->keyname, KEY_RIGHT)) { + if (id == INPUT_HANDLER_TYPE_PHOTO && priv->del) + elm_object_focus_set(priv->del, EINA_TRUE); + } } static void _mouse_down(int id, void *data, Evas *e, Evas_Object *obj, @@ -671,6 +638,15 @@ static void _load_del_btn(struct _priv *priv) priv->del = btn; } +static void _change_entry(Evas_Object *name, Evas_Object *ly, Eina_Bool disable, + const char *text, const char *signal) +{ + elm_entry_entry_set(name, text); + elm_object_focus_allow_set(name, disable); + elm_entry_editable_set(name, disable); + elm_object_signal_emit(ly, signal, SRC_PROG); +} + static void _show(void *data) { struct _priv *priv; @@ -686,8 +662,8 @@ static void _show(void *data) if (priv->di) { elm_object_part_text_set(priv->base, PART_USER_EDIT_TITLE, MESSAGE_EDIT_USER); - elm_entry_entry_set(priv->name, priv->di->title); - elm_entry_entry_set(priv->pin, ""); + _change_entry(priv->name, priv->ly, EINA_FALSE, priv->di->title, + SIG_DISABLE); if (priv->selected_photo) { _load_user_icon(priv, priv->selected_photo, priv->selected_photo); @@ -702,8 +678,7 @@ static void _show(void *data) } else { elm_object_part_text_set(priv->base, PART_USER_EDIT_TITLE, MESSAGE_ADD_USER); - elm_entry_entry_set(priv->name, MESSAGE_ENTRY_NAME); - elm_entry_entry_set(priv->pin, MESSAGE_ENTRY_PIN); + _change_entry(priv->name, priv->ly, EINA_TRUE, "", SIG_ENABLE); if (priv->selected_photo) _load_user_icon(priv, priv->selected_photo, priv->selected_photo); @@ -712,7 +687,6 @@ static void _show(void *data) IMAGE_USER_CURRENT_DEFAULT_FOCUS); } - _load_lock_icon(priv); evas_object_show(priv->base); elm_object_focus_set(priv->cancel, EINA_TRUE); } @@ -733,11 +707,6 @@ static void _hide(void *data) priv->del = NULL; } - if (priv->lock_icon) { - evas_object_del(priv->lock_icon); - priv->lock_icon = NULL; - } - priv->selected_photo = NULL; evas_object_hide(priv->base); } @@ -754,7 +723,6 @@ static void _destroy(void *data) priv = data; inputmgr_remove_callback(priv->photo, &handler); - inputmgr_remove_callback(priv->lock, &handler); inputmgr_remove_callback(priv->done, &handler); inputmgr_remove_callback(priv->cancel, &handler); viewmgr_remove_view(VIEW_PHOTO); -- 2.7.4