From: Soohye Shin Date: Mon, 29 Jun 2015 03:38:59 +0000 (+0900) Subject: add ctxpopup for icon item list X-Git-Tag: accepted/tizen/tv/20150728.070602~40 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=48097dfaad848267b3e2a0767e1bfc676d04764b;p=profile%2Ftv%2Fapps%2Fnative%2Fair_home.git add ctxpopup for icon item list Change-Id: I6277239cd49019f9c563960fdab9b8985effa32c Signed-off-by: Soohye Shin --- diff --git a/include/utils.h b/include/utils.h index 433b466..0f3688e 100644 --- a/include/utils.h +++ b/include/utils.h @@ -29,6 +29,7 @@ Evas_Object *utils_add_label(Evas_Object *base, char *text, const char *style, Evas_Object *utils_add_bg(Evas_Object *base, int r, int g, int b, int a, const char *part); Evas_Object *utils_add_scroller(Evas_Object *base); +Evas_Object *utils_add_table(Evas_Object *base, bool homo, const char *part); Evas_Object *utils_add_box(Evas_Object *base, bool horizon); Evas_Object *utils_add_button(Evas_Object *base, char *text, const char *part); Evas_Object *utils_add_entry(Evas_Object *base, char *text, bool password, diff --git a/src/view/view_user_edit.c b/src/view/view_user_edit.c index caec778..a4350ac 100644 --- a/src/view/view_user_edit.c +++ b/src/view/view_user_edit.c @@ -33,6 +33,20 @@ #define MESSAGE_ENTRY_ACCOUNT "sample@tizen.com" #define MESSAGE_ENTRY_PIN "Pin code" +#define CTXPOPUP_X 294 +#define CTXPOPUP_Y 310 + +static const char *icon_info[][2] = { + { IMAGE_USER_DEFAULT, IMAGE_USER_DEFAULT_FOCUS }, + { IMAGE_USER_DEFAULT_02, IMAGE_USER_DEFAULT_02_FOCUS }, + { IMAGE_USER_DEFAULT_03, IMAGE_USER_DEFAULT_03_FOCUS }, + { IMAGE_USER_DEFAULT_04, IMAGE_USER_DEFAULT_04_FOCUS }, + { IMAGE_USER_DEFAULT_05, IMAGE_USER_DEFAULT_05_FOCUS }, + { IMAGE_USER_DEFAULT_06, IMAGE_USER_DEFAULT_06_FOCUS }, + { IMAGE_USER_DEFAULT_07, IMAGE_USER_DEFAULT_07_FOCUS }, + { IMAGE_USER_ADD, IMAGE_USER_ADD_FOCUS } +}; + struct _priv { Evas_Object *win; Evas_Object *base; @@ -46,6 +60,7 @@ struct _priv { Evas_Object *focus_icon; Evas_Object *done; Evas_Object *cancel; + Evas_Object *ctxpopup; struct datamgr *dm; }; @@ -114,10 +129,115 @@ static void _unfocused(int id, void *data, Evas_Object *obj, elm_object_signal_emit(obj, SIG_UNFOCUS, SRC_PROG); } +static void _eo_key_down(int id, void *data, Evas *e, Evas_Object *obj, + Evas_Event_Key_Down *ev) +{ + if (!strcmp(ev->keyname, KEY_BACK) || + !strcmp(ev->keyname, KEY_BACK_REMOTE)) { + evas_object_del(data); + } else if (!strcmp(ev->keyname, KEY_ENTER) || + !strcmp(ev->keyname, KEY_ENTER_REMOTE)) { + /* It should be implemented later */ + evas_object_del(data); + } +} + +static input_handler icon_handler = { + .focused = _focused, + .unfocused = _unfocused, + .key_down = _eo_key_down +}; + +static Evas_Object *_pack_icon(Evas_Object *table, const char *icon_file, + const char *focus_icon_file, int i) +{ + Evas_Object *eo, *ic, *focus_ic; + + eo = utils_add_layout(table, GRP_USER_EDIT_ICON_LIST_ITEM, true, NULL); + if (!eo) { + _ERR("failed to add layout"); + return NULL; + } + evas_object_show(eo); + elm_table_pack(table, eo, i % 4, i / 4, 1, 1); + + ic = utils_add_icon(eo, icon_file, PART_USER_EDIT_ICON_LIST_ITEM); + if (!ic) { + _ERR("failed to add icon"); + evas_object_del(eo); + return NULL; + } + + focus_ic = utils_add_icon(eo, focus_icon_file, + PART_USER_EDIT_ICON_LIST_ITEM_FOCUS); + if (!focus_ic) { + _ERR("failed to add focus icon"); + evas_object_del(eo); + return NULL; + } + + return eo; +} + +static void _add_icon_list(struct _priv *priv) +{ + Evas_Coord x, y, w, h; + Evas_Object *ctxpopup, *ly, *table, *eo; + int i; + + ctxpopup = elm_ctxpopup_add(priv->base); + if (!ctxpopup) { + _ERR("failed to add ctxpopup"); + return; + } + elm_ctxpopup_horizontal_set(ctxpopup, EINA_TRUE); + elm_ctxpopup_auto_hide_disabled_set(ctxpopup, EINA_TRUE); + + ly = utils_add_layout(ctxpopup, GRP_USER_EDIT_ICON_LIST, false, NULL); + if (!ly) { + _ERR("failed to layout"); + evas_object_del(ctxpopup); + return; + } + elm_object_content_set(ctxpopup, ly); + evas_object_show(ly); + evas_object_show(ctxpopup); + + evas_object_geometry_get(priv->photo, &x, &y, &w, &h); + evas_object_move(ctxpopup, + (x + w + CTXPOPUP_X) * elm_config_scale_get(), + (y + CTXPOPUP_Y) * elm_config_scale_get()); + + table = utils_add_table(ly, true, PART_USER_EDIT_ICON_LIST); + if (!table) { + _ERR("failed to add table"); + evas_object_del(ctxpopup); + return; + } + elm_table_padding_set(table, elm_config_scale_get() * 1, + elm_config_scale_get() * 1); + evas_object_size_hint_weight_set(table, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + + for (i = 0; i < sizeof(icon_info) / sizeof(*icon_info); i++) { + eo = _pack_icon(table, icon_info[i][0], icon_info[i][1], i); + if (!eo) + continue; + + inputmgr_add_callback(eo, 0, &icon_handler, ctxpopup); + if (i == 0) + elm_object_focus_set(eo, EINA_TRUE); + } + + priv->ctxpopup = ctxpopup; +} + static void _photo_key_down(int id, void *data, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev) { - /* It should be implemented later to drawing icon list */ + if (!strcmp(ev->keyname, KEY_ENTER)) { + _add_icon_list(data); + } } static input_handler photo_handler = {