From 4c44472a9e6225666629855d379c0ec427afe896 Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Mon, 17 Aug 2015 14:02:01 +0900 Subject: [PATCH] set disable action menu item when there is no changed item Change-Id: Ic5d554a2faa0049ec7156438a75090252845a28c Signed-off-by: Soohye Shin --- edje/view/actionmenu.edc | 31 ++++--- edje/widget/label.edc | 53 ++++++++++++ images/btn_menu_reset_dis.png | Bin 0 -> 1919 bytes include/defs.h | 2 + src/view/view_action_menu.c | 189 +++++++++++++++++++++++++++--------------- 5 files changed, 193 insertions(+), 82 deletions(-) create mode 100644 images/btn_menu_reset_dis.png diff --git a/edje/view/actionmenu.edc b/edje/view/actionmenu.edc index c3f33ec..dd18a1b 100644 --- a/edje/view/actionmenu.edc +++ b/edje/view/actionmenu.edc @@ -108,8 +108,8 @@ group { } } part { - name, PART_ACTION_MENU_TABLE; - type, SWALLOW; + name, "table.bg"; + type, RECT; scale, 1; description { state, "default" 0.0; @@ -121,6 +121,18 @@ group { min, 0 124; align, 0.5 0.0; fixed, 0 1; + color, 224 224 224 255; + } + } + part { + name, PART_ACTION_MENU_TABLE; + type, SWALLOW; + scale, 1; + description { + state, "default" 0.0; + rel1.to, "table.bg"; + rel2.to, "table.bg"; + fixed, 1 1; } } part { @@ -229,20 +241,7 @@ group { scale, 1; description { state, "default" 0.0; - min, 125 124; - } - } - part { - name, "divider"; - type, RECT; - scale, 1; - description { - state, "default" 0.0; - rel1.relative, 1.0 0.0; - min, 1 0; - fixed, 1 0; - color, 224 224 224 255; - align, 1.0 0.5; + min, 124 124; } } part { diff --git a/edje/widget/label.edc b/edje/widget/label.edc index 9d1d8d8..8fb0f85 100644 --- a/edje/widget/label.edc +++ b/edje/widget/label.edc @@ -39,6 +39,10 @@ styles { name, "action_menu_title_focus"; base, "font=TizenSans font_size=20 color=#ffffff align=center"; } + style { + name, "action_menu_title_dis"; + base, "font=TizenSans font_size=20 color=#b3b3b3 align=center"; + } } group { @@ -417,3 +421,52 @@ group { } } } +group { + name, "elm/label/base/slide_action_menu_title_dis"; + inherit, "elm/label/base/slide_home_title"; + parts { + part { + name, "elm.text"; + type, TEXTBLOCK; + scale, 1; + clip_to, "label.text.clip"; + description { + state, "default" 0.0; + rel1.relative, 0.0 0.0; + rel2.relative, 1.0 1.0; + align, 0.0 0.5; + text { + style, "action_menu_title_dis"; + align, 0.0 1.0; + min, 0 1; + } + } + description { + state, "slide_end" 0.0; + inherit, "default" 0.0; + rel1.relative, 1.0 0.0; + rel2.relative, 1.0 1.0; + align, 1.0 0.5; + text { + style, "action_menu_title_dis"; + align, 0.0 0.0; + min, 1 1; + ellipsis, -1.0; + } + } + description { + state, "slide_begin" 0.0; + inherit, "default" 0.0; + rel1.relative, 0.0 0.0; + rel2.relative, 0.0 1.0; + align, 0.0 0.5; + text { + style, "action_menu_title_dis"; + align, 0.0 0.0; + min, 1 1; + ellipsis, -1.0; + } + } + } + } +} diff --git a/images/btn_menu_reset_dis.png b/images/btn_menu_reset_dis.png new file mode 100644 index 0000000000000000000000000000000000000000..16cb16789fd3d79f77ab9aa491f57861b20678e0 GIT binary patch literal 1919 zcmaJ?X;c$e7)4nGA|i?)DrE?$C}aZ@NFZV$0iq_xfFw{jnq`2IWM)i85xHVW1v~+@?{ZTq+X1@2{x%YnSoY^iCMmpHf zvbV6XaNtLA#kdVIKejgboAtI$gBv%DC&i+XBuppMfEFAjA_oD!T9yooL76grT^)!s zEQwHz6q5>;vlNJ$EHh)sdNqo(aj{T6DpRC_7$66eA(%~kap@WnfRt>agf5^8&~PvX ziptP{(HX)RMMkQEsU(Ij214{KTtE$CGC;3Z!CID{O&rl>;cN3Tg$Rs5uv9kjeNa+? z2na_sAV4PvkQ7uJ4PY?Hv_*6VgXRbLQ)&JbDtBzbOGNMVQ(3ni7S;OC-gd<4WbQqKANwC&yOo0n(6&eV|AOr@? ziZVH}9%B>nNZ+TRMnA~H+R-xM1*7O?D1}C*no}AB3IzWTRjWUswU`+E81H`yYh%(; zkRk@P$a;+eZ(Nd>*%itP*MKq%(ZnE#YOIQ)6a+)GDF_OLM>7B)2?Q$CgKWY2vV|`%m6Muj2GljWzc9e9zBT44Gd#4=;49PFb;TkHk6h-sT=OWXQQR{Z)Ie#VGD3r>fsvG1(D<=1#?>3;D#wo{a9l104~AlH?7td4 zc7#uldHG>%@y&<92Vs2LHTYOZ{nb^6e=R0HmlLCJ@6Efn!g;0h_2e0L6OUduaC)y# zE1fF$Ub@qoeqB1TsmA4)qy6H+MnB46=RUe|P|mTwyUnA^RM} zX-SV8$ZeT>SEF{p!4L0i8{a&S+gJ$ADs`^jIg>z=5?T!B){L4)Vnc(6tBcDPQ`{?H zhWE7e*2A6iQ!Lztl-~ZKX4|x>5MX)JYWk!)AE$RVG1-GfQrT>pYq8Znj$@H!cc<6D zg!WB!t32v+^KHtOFovJA^zP3Lk=dscn&zS3__i=AGOrpAbh<>XiP-k!$_9~Z<&P=O zA(K>!cH`~Lgv4Oa%)tpoR?8|fL`#~Qo4obbKU?QlKxg0}&z`?+FHd{}IC^IXAF(6* z_&hQ7FV07pS;dz0g4RX1;I|E@i}$?Cnxp!4ZT)5>^J0}(#S5U+WT-ik-5Q!rPW;|( znXO~wnYiVpdwHaS7D894d#`PIlk@X9$n$Zy)9fVU>ds_!5-1^GaJp%u7|8H?_?eCT znafGb8ew0_;;-MTx(yzGR+p8O%YD2LFY`QK_mZ5~)_B6}rigSQ_no-CHa@<}p8AQ( zVrwPp$d!l&)>4eIa}#6yV`J@`Vd~+{-OOF#2j!IydYdnv{mx;bb-lfgQ!K6Gbq4#$ z8dWChx!Ny^ClF!?jGls;{$Gx_eO2RqEjQ~^;}eHw;UDoibJU@qgLiK~%V=7-aN%I` zw6Mx!MUUTgJgo~)f8)+x<(?)c zbn#JNVYQRrl*itPQnK6RRx+0vl31tL&z}iOvoC)cWxIc1vTzfB%j-nZUIW|r-hInE zm2n3Tj8@Ifm8ngX0}rC(%rjwld9= z!m^a9Pba5V`2=(elMXmvRu-yQl31gRG^F~W!H^g literal 0 HcmV?d00001 diff --git a/include/defs.h b/include/defs.h index 59c62e3..d2216ef 100644 --- a/include/defs.h +++ b/include/defs.h @@ -149,6 +149,7 @@ #define STYLE_GENGRID_ITEM "gengrid_item" #define STYLE_LABEL_ACTION_MENU_TITLE "slide_action_menu_title" #define STYLE_LABEL_ACTION_MENU_TITLE_FOCUS "slide_action_menu_title_focus" +#define STYLE_LABEL_ACTION_MENU_TITLE_DIS "slide_action_menu_title_dis" #define COLOR_DEFAULT_R 0 #define COLOR_DEFAULT_G 119 @@ -203,6 +204,7 @@ #define IMAGE_RECENT_THUMB_SETTING IMAGEDIR"/ic_default_setting" #define IMAGE_ACTION_MENU_ICON_RESET IMAGEDIR"/btn_menu_reset_nor.png" #define IMAGE_ACTION_MENU_ICON_RESET_FOCUS IMAGEDIR"/btn_menu_reset_foc.png" +#define IMAGE_ACTION_MENU_ICON_RESET_DIS IMAGEDIR"/btn_menu_reset_dis.png" #define MAX_ITEM_COUNT 8 #define MAX_USER_COUNT 9 diff --git a/src/view/view_action_menu.c b/src/view/view_action_menu.c index 37f34c9..6e4232b 100644 --- a/src/view/view_action_menu.c +++ b/src/view/view_action_menu.c @@ -24,10 +24,11 @@ #include "utils.h" #define ACTION_MENU_TITLE_RESET "Reset" +#define COUNT_MENU_ITEM 4 enum input_handler_type { INPUT_HANDLER_TYPE_BTN, - INPUT_HANDLER_TYPE_ITEM, + INPUT_HANDLER_TYPE_ITEM_RESET, INPUT_HANDLER_TYPE_RESET, INPUT_HANDLER_TYPE_DISCARD, INPUT_HANDLER_TYPE_CANCEL @@ -37,12 +38,21 @@ struct _priv { Evas_Object *win; Evas_Object *base; Evas_Object *btn; - Evas_Object *item; Evas_Object *popup; + Evas_Object *box; + Eina_List *list; bool edited; }; +struct _btn_info { + char *icon; + char *focus_icon; + char *dis_icon; + char *title; + int handler_id; +}; + static void _focused(int id, void *data, Evas_Object *obj, Elm_Object_Item *item) { @@ -137,7 +147,7 @@ static void _select(int id, void *data, Evas_Object *obj) viewmgr_update_view(VIEW_USER_EDIT, UPDATE_TYPE_RESET, NULL); viewmgr_hide_view(VIEW_ACTION_MENU); break; - case INPUT_HANDLER_TYPE_ITEM: + case INPUT_HANDLER_TYPE_ITEM_RESET: _add_popup(priv, MESSAGE_RESET, MESSAGE_RESET_CONTENTS, MESSAGE_RESET, INPUT_HANDLER_TYPE_RESET, MESSAGE_CANCEL, INPUT_HANDLER_TYPE_CANCEL); @@ -171,7 +181,7 @@ static void _key_down(int id, void *data, Evas *e, Evas_Object *obj, !strcmp(ev->keyname, KEY_BACK_REMOTE)) { switch (id) { case INPUT_HANDLER_TYPE_BTN: - case INPUT_HANDLER_TYPE_ITEM: + case INPUT_HANDLER_TYPE_ITEM_RESET: viewmgr_hide_view(VIEW_ACTION_MENU); break; case INPUT_HANDLER_TYPE_RESET: @@ -200,57 +210,9 @@ static void _mouse_down(int id, void *data, Evas *e, Evas_Object *obj, _select(id, data, obj); } -static Evas_Object *_add_item(Evas_Object *box, struct _priv *priv) -{ - Evas_Object *item, *ic, *focus_ic, *lbl, *focus_lbl, *bg; - - item = utils_add_layout(box, GRP_ACTION_MENU_TABLE_ITEM, true, NULL); - if (!item) { - _ERR("failed to add item"); - evas_object_del(box); - return false; - } - - ic = utils_add_icon(item, IMAGE_ACTION_MENU_ICON_RESET, - PART_ACTION_MENU_TABLE_ITEM_ICON); - if (!ic) - goto err; - - focus_ic = utils_add_icon(item, IMAGE_ACTION_MENU_ICON_RESET_FOCUS, - PART_ACTION_MENU_TABLE_ITEM_ICON_FOCUS); - if (!focus_ic) - goto err; - - lbl = utils_add_label(item, ACTION_MENU_TITLE_RESET, - STYLE_LABEL_ACTION_MENU_TITLE, - PART_ACTION_MENU_TABLE_ITEM_TEXT); - if (!lbl) - goto err; - - focus_lbl = utils_add_label(item, ACTION_MENU_TITLE_RESET, - STYLE_LABEL_ACTION_MENU_TITLE_FOCUS, - PART_ACTION_MENU_TABLE_ITEM_TEXT_FOCUS); - if (!focus_lbl) - goto err; - - bg = utils_add_bg(item, COLOR_DEFAULT_R, COLOR_DEFAULT_G, - COLOR_DEFAULT_B, COLOR_DEFAULT_A, - PART_ACTION_MENU_TABLE_ITEM_BG); - if (!bg) - goto err; - - evas_object_show(item); - inputmgr_add_callback(item, INPUT_HANDLER_TYPE_ITEM, &handler, priv); - - return item; -err: - evas_object_del(item); - return NULL; -} - -static bool _add_menu(struct _priv *priv) +static bool _add_base(struct _priv *priv) { - Evas_Object *btn, *box, *item; + Evas_Object *btn, *box; btn = utils_add_layout(priv->base, GRP_ACTION_MENU_LIVETV, true, PART_ACTION_MENU_LIVETV); @@ -267,17 +229,9 @@ static bool _add_menu(struct _priv *priv) return false; } elm_object_part_content_set(priv->base, PART_ACTION_MENU_TABLE, box); + elm_box_padding_set(box, 1, 0); elm_box_align_set(box, 0.0, 0.5); - - item = _add_item(box, priv); - if (!item) { - _ERR("failed to add item"); - evas_object_del(box); - return false; - } - - elm_box_pack_start(box, item); - priv->item = item; + priv->box = box; return true; } @@ -306,7 +260,7 @@ static Evas_Object *_create(Evas_Object *win, void *data) priv->win = win; priv->base = base; - if (!_add_menu(priv)) { + if (!_add_base(priv)) { _ERR("failed to add menu"); free(priv); evas_object_del(base); @@ -318,6 +272,98 @@ static Evas_Object *_create(Evas_Object *win, void *data) return base; } +static void _add_empty_item(struct _priv *priv, int len) +{ + int i; + Evas_Object *item; + + for (i = 0; i < len; i++) { + item = utils_add_layout(priv->box, GRP_ACTION_MENU_TABLE_ITEM, + false, NULL); + if (!item) { + _ERR("failed to add item"); + return; + } + + evas_object_show(item); + elm_box_pack_end(priv->box, item); + priv->list = eina_list_append(priv->list, item); + } +} + +static bool _add_item(struct _priv *priv) +{ + Evas_Object *item, *ic, *focus_ic, *lbl, *focus_lbl, *bg; + struct _btn_info btn_info[] = { + { + IMAGE_ACTION_MENU_ICON_RESET, + IMAGE_ACTION_MENU_ICON_RESET_FOCUS, + IMAGE_ACTION_MENU_ICON_RESET_DIS, + ACTION_MENU_TITLE_RESET, + INPUT_HANDLER_TYPE_ITEM_RESET + } + }; + int i; + + elm_box_clear(priv->box); + + for (i = 0; i < sizeof(btn_info) / sizeof(*btn_info); i++) { + item = utils_add_layout(priv->box, GRP_ACTION_MENU_TABLE_ITEM, + priv->edited, NULL); + if (!item) { + _ERR("failed to add item"); + return false; + } + + ic = utils_add_icon(item, priv->edited ? + btn_info[i].icon : btn_info[i].dis_icon, + PART_ACTION_MENU_TABLE_ITEM_ICON); + if (!ic) + goto err; + + lbl = utils_add_label(item, btn_info[i].title, + priv->edited ? STYLE_LABEL_ACTION_MENU_TITLE : + STYLE_LABEL_ACTION_MENU_TITLE_DIS, + PART_ACTION_MENU_TABLE_ITEM_TEXT); + if (!lbl) + goto err; + + if (priv->edited) { + focus_ic = utils_add_icon(item, btn_info[i].focus_icon, + PART_ACTION_MENU_TABLE_ITEM_ICON_FOCUS); + if (!focus_ic) + goto err; + + focus_lbl = utils_add_label(item, btn_info[i].title, + STYLE_LABEL_ACTION_MENU_TITLE_FOCUS, + PART_ACTION_MENU_TABLE_ITEM_TEXT_FOCUS); + if (!focus_lbl) + goto err; + + bg = utils_add_bg(item, COLOR_DEFAULT_R, + COLOR_DEFAULT_G, COLOR_DEFAULT_B, + COLOR_DEFAULT_A, + PART_ACTION_MENU_TABLE_ITEM_BG); + if (!bg) + goto err; + + inputmgr_add_callback(item, btn_info[i].handler_id, + &handler, priv); + } + evas_object_show(item); + elm_box_pack_end(priv->box, item); + priv->list = eina_list_append(priv->list, item); + } + + _add_empty_item(priv, COUNT_MENU_ITEM - + sizeof(btn_info) / sizeof(*btn_info)); + + return true; +err: + evas_object_del(item); + return false; +} + static void _show(void *data) { struct _priv *priv; @@ -329,6 +375,11 @@ static void _show(void *data) priv = data; + if (!_add_item(priv)) { + _ERR("failed to add item"); + return; + } + evas_object_show(priv->base); if (priv->btn) @@ -338,6 +389,7 @@ static void _show(void *data) static void _hide(void *data) { struct _priv *priv; + Evas_Object *eo; if (!data) { _ERR("Invalid argument"); @@ -346,7 +398,13 @@ static void _hide(void *data) priv = data; + EINA_LIST_FREE(priv->list, eo) { + evas_object_del(eo); + inputmgr_remove_callback(eo, &handler); + } + evas_object_hide(priv->base); + priv->list = NULL; priv->edited = false; } @@ -362,7 +420,6 @@ static void _destroy(void *data) priv = data; inputmgr_remove_callback(priv->btn, &handler); - inputmgr_remove_callback(priv->item, &handler); evas_object_del(priv->base); free(priv); -- 2.7.4