From 0cfb1036ea8af04e334df5d0ad9a0d169a44bb00 Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Wed, 24 Jun 2015 17:08:29 +0900 Subject: [PATCH 01/16] add utils_add_button and utils_add_entry Change-Id: I4411e25db62a3b9c8d39f641812fd5cb041b9af8 Signed-off-by: Soohye Shin --- include/defs.h | 1 + include/utils.h | 8 ++++++-- src/utils.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 2 deletions(-) diff --git a/include/defs.h b/include/defs.h index d946e8b..51f959d 100644 --- a/include/defs.h +++ b/include/defs.h @@ -90,6 +90,7 @@ #define STYLE_LABEL_TITLE "slide_home_title" #define STYLE_LABEL_TITLE_FOCUS "slide_home_title_focus" +#define STYLE_INPUT "input.field" #define COLOR_DEFAULT_R 0 #define COLOR_DEFAULT_G 119 diff --git a/include/utils.h b/include/utils.h index 4d34d14..433b466 100644 --- a/include/utils.h +++ b/include/utils.h @@ -20,15 +20,19 @@ #include #include -Evas_Object *utils_add_layout(Evas_Object *base, const char *group, bool focus_allow, +Evas_Object *utils_add_layout(Evas_Object *base, const char *group, + bool focus_allow, const char *part); +Evas_Object *utils_add_icon(Evas_Object *base, const char *file, const char *part); -Evas_Object *utils_add_icon(Evas_Object *base, const char *file, const char *part); Evas_Object *utils_add_label(Evas_Object *base, char *text, const char *style, const char *part); 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_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, + const char *part); bool utils_launch_app(const char *pkg); #endif /* __AIR_HOME_UTILS_H__ */ diff --git a/src/utils.c b/src/utils.c index 97423fe..1f78641 100644 --- a/src/utils.c +++ b/src/utils.c @@ -169,6 +169,58 @@ Evas_Object *utils_add_box(Evas_Object *base, bool horizon) return box; } +Evas_Object *utils_add_button(Evas_Object *base, char *text, const char *part) +{ + Evas_Object *btn; + + btn = elm_button_add(base); + if (!btn) { + _ERR("failed to add btn"); + return NULL; + } + + if (part) + elm_object_part_content_set(base, part, btn); + if (text) + elm_object_text_set(btn, text); + evas_object_show(btn); + + return btn; +} + +Evas_Object *utils_add_entry(Evas_Object *base, char *text, bool password, + const char *part) +{ + Evas_Object *entry; + + entry = elm_entry_add(base); + if (!entry) { + _ERR("failed to add entry"); + return NULL; + } + + if (password) { + elm_entry_password_set(entry, EINA_TRUE); + elm_config_password_show_last_set(EINA_FALSE); + } + + elm_object_style_set(entry, STYLE_INPUT); + elm_entry_single_line_set(entry, EINA_TRUE); + elm_entry_input_panel_language_set(entry, + ELM_INPUT_PANEL_LANG_ALPHABET); + elm_entry_cursor_end_set(entry); + elm_scroller_policy_set(entry, ELM_SCROLLER_POLICY_OFF, + ELM_SCROLLER_POLICY_OFF); + if (text) + elm_entry_entry_set(entry, text); + if (part) + elm_object_part_content_set(base, part, entry); + + evas_object_show(entry); + + return entry; +} + bool utils_launch_app(const char *pkg) { app_control_h app_control; -- 2.7.4 From 05dc0839c29eccfffcfbc0b032598609b2945d5e Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Thu, 25 Jun 2015 15:00:46 +0900 Subject: [PATCH 02/16] add elements in view_user_edit - photo - entry input - switch icon - delete icon Change-Id: I3c0095a07b646a3423bc37e3990bc1f3f0518cf8 Signed-off-by: Soohye Shin --- edje/images/btn_switch_off_nor.png | Bin 0 -> 1112 bytes edje/images/btn_switch_on_nor.png | Bin 0 -> 1565 bytes edje/view/useredit.edc | 231 ++++++++++++++++++++++++++++-- images/ic_user_profile_current_01_foc.png | Bin 0 -> 5765 bytes images/ic_user_profile_current_01_nor.png | Bin 0 -> 6116 bytes include/defs.h | 9 ++ src/utils.c | 14 +- 7 files changed, 235 insertions(+), 19 deletions(-) create mode 100644 edje/images/btn_switch_off_nor.png create mode 100644 edje/images/btn_switch_on_nor.png create mode 100644 images/ic_user_profile_current_01_foc.png create mode 100644 images/ic_user_profile_current_01_nor.png diff --git a/edje/images/btn_switch_off_nor.png b/edje/images/btn_switch_off_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..10d632c9fb9bee0518941f30a5d69b5dcbb0a95c GIT binary patch literal 1112 zcmbVLO-$2J9Iv3FC=w5vNQi05L5Z&I+q$kROzhT9rVelnA)YMlV{4#&rG0aS#DgX# z8a#XQ$k7-NCgMi|CYng1CSE+?0izdVh9g{!&;DaAySkj~k92^OGk&dsjEeu`?H zvWgRUB7a^skj?5Lh7D|&uqmp4AaHeK8e)19mMka5e1E#k(3Y8E#^ZTD?`B}x8l3mw z==@O8n4dP1CNpq~?hj<5z=l|-1AE5t^vYx%9&-#`gW%~DQ+H}2KSF1a2kAH) zix@lrv?#Jbh>IdPNk@4Q<#;m02oU7BC`S`?<70?5&zzDAYPMmE>{3h_V^`+5YPHH% zV=VGY97raUp^j)YLJ$#u&cS*Rar~a91{L~-XSvuy4jpRLCs75b7~*L?1l!H$Hx)a6 zBT*z}T%fxgV0q5A!?S>Zm?zT4+0*N>BuxF7+ z(Pva-RBY(roSI_D4QpDaEb-}BGLZy=#A{j{03|786&1u{iYls#mTl_Tikp$7s4DOx z5Yh?&T3i8IM$2kZNstl=KAmWCbB>R7$AC?{7O~sl#<%6l84v0hc}0X~niVioMi}{J zg;_spad@#zPx&!S?@b|uTnY6GF?MsW8&KjyV?%iUAflU zl-(`v@{NUKZcE#NZmBNA%Wmn-+OG#cuFjS|?+hizWP>wf^l+gzOh literal 0 HcmV?d00001 diff --git a/edje/images/btn_switch_on_nor.png b/edje/images/btn_switch_on_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..745dbde8bba401070931bdfb25904f511f72ae9e GIT binary patch literal 1565 zcmeAS@N?(olHy`uVBq!ia0vp^89;2t!2~3i{PHdYQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?{&CLn2Bde0{8v^Kf6`()~Xj@TAnpKdC8`Lf!&sHg;q@=(~U%$M( zT(8_%FTW^V-_X+15@d#vkuFe$ZgFK^Nn(X=Ua>OF1ees}t-3#_`hBq$Z(46Le)Ln;eW^@CE2 z^Gl18f$@>14ATq@JNy=b6armi*iJ_sRqmhM^lZC6ZsfC%dxrH0d3~YLhOkIs#ot+&GO`MDj4P8wwP0Y+( zfowNt3l~#oXH%G7&%EN2#JuEGn7x@md!c$Q@#?j5E=o--$uA1Y&(DFSfPjqrlKkR~ z`~n5%U^4}c@XWlF{PJQ=Q1n22>ylcOS(cjOR+OKs01jWPOf2@BTbh}hIGQ;c0A1i} zYG`O-ZsF)?YGLYTY;I`jV(6>{)tf?2nCSx@qYp|PNQng|1WbV-COqi_Iq=Mrng`4= zMZm0a+UDsT1_mZyPZ!6Kid%1H$9qR5${e>|yOMcfMUQhKcDmbr|p6dRzKEuUhy{;HF4|ywn^^A{`UC1lz-OgGWnrSg(B`C)bdE94}>_5 z2Fd`@PKy&JT6*o3ISw^fQ%mj49_GG!fAZM6EkdW&j9I%@e>yD3aXEj^dp1|c9nUW2 zxy`P~{J&@FUx}OgQ_g9;TekH?is72cRpD1yY+OJ=FSb%9z9y{xNOGXxaf}| zGkHTJc0ak^D8r#DP+^_nJmXQxF`J~#3Oe~|iYua?eQ)exNa6^dbFN^y=-*%cHE(B# zT{t8XzAW}`wRxmFzWggeqFogMR)JIRcs>dv3kGmE$`1dzQNRS{=e`g7IS-d zwA}l?XKNXcwAGh*A)%u$*BmQK?`qP``!4Lg)hB#*>K$dJZ9=C5=lK2Um+5;Zx9X_# z`Tutk3+gVl0&U)0wBwO;%KF1;P9HZ|TwOagX7?%uACt9D4xRd7s;PJ^YAaL7g3aEZ zYfseMr?~I_w{nq5>*A+M`yV=8J+WMQLX%ZVK$M>pLpd|o#)=EpaR>|)z4*} HQ$iB}Z^v3q literal 0 HcmV?d00001 diff --git a/edje/view/useredit.edc b/edje/view/useredit.edc index a8d780f..cebea5b 100644 --- a/edje/view/useredit.edc +++ b/edje/view/useredit.edc @@ -39,7 +39,7 @@ group { rel2.to, "title"; fixed, 1 1; text { - font, 46; + size, 46; font, "TizenSans"; } color, 51 51 51 255; @@ -127,7 +127,7 @@ group { } } part { - name, PART_USER_EDIT_BTN_CACEL; + name, PART_USER_EDIT_BTN_CANCEL; type, SWALLOW; scale, 1; description { @@ -734,11 +734,11 @@ group { } } part { - name, "bg.delete"; - type, RECT; + name, PART_USER_EDIT_CONTENTS_DELETE; + type, SWALLOW; scale, 1; description { - state, "default"; + state, "default" 0.0; rel1 { to, "pad.delete"; relative, 1.0 0.0; @@ -750,43 +750,244 @@ group { min, 86 64; fixed, 1 1; align, 0.0 0.0; - color, 126 145 172 255; } + } + } +} + +group { + name, GRP_USER_EDIT_PHOTO; + parts { + part { + name, "bg"; + type, RECT; + scale, 1; description { - state, "focus"; + state, "default" 0.0; + min, 294 294; + color, 194 194 194 255; + } + } + part { + name, "bg.photo"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + min, 290 290; + rel1.relative, 0.5 0.5; + rel2.relative, 0.5 0.5; + fixed, 1 1; + color, 255 255 255 255; + } + description { + state, "focus" 0.0; inherit, "default" 0.0; color, 0 119 246 255; } } part { - name, PART_USER_EDIT_CONTENTS_DELETE; + name, PART_USER_EDIT_PHOTO; + type, SWALLOW; + scale, 1; + description { + state, "default" 0.0; + min, 284 284; + rel1 { + to, "bg.photo"; + relative, 0.5 0.5; + } + rel2 { + to, "bg.photo"; + relative, 0.5 0.5; + } + fixed, 1 1; + } + } + } + programs { + program { + name, "sig,focus"; + signal, SIG_FOCUS; + source, SRC_PROG; + action, STATE_SET "focus" 0.0; + transition, LINEAR 0.5; + target, "bg.photo"; + } + program { + name, "sig,unfocus"; + signal, SIG_UNFOCUS; + source, SRC_PROG; + action, STATE_SET "default" 0.0; + transition, LINEAR 0.5; + target, "bg.photo"; + } + } +} + +group { + name, GRP_USER_EDIT_SWITCH; + images { + image, "btn_switch_on_nor.png" COMP; + image, "btn_switch_off_nor.png" COMP; + } + parts { + part { + name, "bg"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + min, 104 54; + visible, 0; + } + } + part { + name, "icon"; type, IMAGE; scale, 1; description { state, "default" 0.0; - rel1.to, "bg.delete"; - rel2.to, "bg.delete"; + image.normal, "btn_switch_on_nor.png"; + fixed, 1 1; + } + description { + state, "focus" 0.0; + image.normal, "btn_switch_off_nor.png"; + fixed, 1 1; + } + } + } + programs { + program { + name, "sig,focus"; + signal, SIG_FOCUS; + source, SRC_PROG; + action, STATE_SET "focus" 0.0; + transition, ACCEL 0.2; + target, "icon"; + } + program { + name, "sig,unfocus"; + signal, SIG_UNFOCUS; + source, SRC_PROG; + action, STATE_SET "default" 0.0; + transition, ACCEL 0.2; + target, "icon"; + } + } +} + +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; + } + } + 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, LINEAR 0.5; + target, "bg"; + } + program { + name, "sig,unfocus"; + signal, SIG_UNFOCUS; + source, SRC_PROG; + action, STATE_SET "default" 0.0; + transition, LINEAR 0.5; + target, "bg"; + } + } +} + +group { + name, GRP_USER_EDIT_DELETE; + images { + image, "btn_user_del.png" COMP; + } + parts { + part { + name, "bg"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + min, 86 64; + color, 126 145 172 255; + } + description { + state, "focus" 0.0; + inherit, "default" 0.0; + color, 0 119 246 255; + } + } + part { + name, "icon"; + type, IMAGE; + scale, 1; + description { + state, "default" 0.0; image.normal, "btn_user_del.png"; + fixed, 1 1; } } } programs { program { - name, "sig,focus,delete"; + name, "sig,focus"; signal, SIG_FOCUS; source, SRC_PROG; action, STATE_SET "focus" 0.0; transition, LINEAR 0.5; - target, "bg.delete"; + target, "bg"; } program { - name, "sig,unfocus,delete"; + name, "sig,unfocus"; signal, SIG_UNFOCUS; source, SRC_PROG; - action, STATE_SET "unfocus" 0.0; + action, STATE_SET "default" 0.0; transition, LINEAR 0.5; - target, "bg.delete"; + target, "bg"; } } } diff --git a/images/ic_user_profile_current_01_foc.png b/images/ic_user_profile_current_01_foc.png new file mode 100644 index 0000000000000000000000000000000000000000..8181db787c388d4584f58e65ad37f973358e501b GIT binary patch literal 5765 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 literal 0 HcmV?d00001 diff --git a/images/ic_user_profile_current_01_nor.png b/images/ic_user_profile_current_01_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..975ac7fb285f9e78b702eca448e8d6ade1402630 GIT binary patch literal 6116 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 Oxw|gT2wRDEi2g5px7@J+ literal 0 HcmV?d00001 diff --git a/include/defs.h b/include/defs.h index 51f959d..148e6f7 100644 --- a/include/defs.h +++ b/include/defs.h @@ -37,6 +37,10 @@ #define GRP_USER_ITEM "group.user.item" #define GRP_USER_EDIT "group.user.edit" #define GRP_USER_EDIT_CONTENTS "group.user.edit.contents" +#define GRP_USER_EDIT_SWITCH "group.user.edit.switch" +#define GRP_USER_EDIT_PHOTO "group.user.edit.photo" +#define GRP_USER_EDIT_ENTRY "group.user.edit.entry" +#define GRP_USER_EDIT_DELETE "group.user.edit.delete" #define GRP_BAR_ITEM "group.bar.item" #define PART_HOME_MENU_BAR "part.home.menu.bar" @@ -60,6 +64,8 @@ #define PART_USER_EDIT_CONTENTS_ACCOUNT "part.user.edit.contents.account" #define PART_USER_EDIT_CONTENTS_LOCK "part.user.edit.contents.lock" #define PART_USER_EDIT_CONTETNS_DELETE "part.user.edit.contents.delete" +#define PART_USER_EDIT_PHOTO "part.user.edit.photo" +#define PART_USER_EDIT_ENTRY "part.user.edit.entry" #define PART_BAR_ITEM_BG "part.bar.item.bg" #define PART_BAR_ITEM_ICON "part.bar.item.icon" #define PART_BAR_ITEM_ICON_FOCUS "part.bar.item.icon.focus" @@ -102,4 +108,7 @@ #define IMAGE_USER_ADD_FOCUS IMAGEDIR"/btn_user_add_foc.png" #define IMAGE_USER_DEFAULT IMAGEDIR"/ic_user_01_nor.png" #define IMAGE_USER_DEFAULT_FOCUS IMAGEDIR"/ic_user_01_foc.png" +#define IMAGE_USER_CURRENT_DEFAULT IMAGEDIR"/ic_user_profile_current_01_nor.png" +#define IMAGE_USER_CURRENT_DEFAULT_FOCUS IMAGEDIR"/ic_user_profile_current_01_foc.png" + #endif /* __AIR_HOME_DEFS_H__ */ diff --git a/src/utils.c b/src/utils.c index 1f78641..c309f50 100644 --- a/src/utils.c +++ b/src/utils.c @@ -191,9 +191,15 @@ 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, const char *part) { - Evas_Object *entry; + Evas_Object *ly, *entry; - entry = elm_entry_add(base); + ly = utils_add_layout(base, GRP_USER_EDIT_ENTRY, false, part); + if (!ly) { + _ERR("failed to add entry layout"); + return NULL; + } + + entry = elm_entry_add(ly); if (!entry) { _ERR("failed to add entry"); return NULL; @@ -209,12 +215,12 @@ Evas_Object *utils_add_entry(Evas_Object *base, char *text, bool password, elm_entry_input_panel_language_set(entry, ELM_INPUT_PANEL_LANG_ALPHABET); elm_entry_cursor_end_set(entry); + elm_entry_scrollable_set(entry, EINA_TRUE); elm_scroller_policy_set(entry, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF); if (text) elm_entry_entry_set(entry, text); - if (part) - elm_object_part_content_set(base, part, entry); + elm_object_part_content_set(ly, PART_USER_EDIT_ENTRY, entry); evas_object_show(entry); -- 2.7.4 From a513fa0f5f6ac91fda3dd1c1c0c1c475a3d3e82a Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Thu, 25 Jun 2015 16:53:56 +0900 Subject: [PATCH 03/16] draw user edit layout Change-Id: I74792810bd5ee67ac3557892f94654610aafe944 Signed-off-by: Soohye Shin --- src/view/view_user_edit.c | 135 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 134 insertions(+), 1 deletion(-) diff --git a/src/view/view_user_edit.c b/src/view/view_user_edit.c index 89de84c..d5262e6 100644 --- a/src/view/view_user_edit.c +++ b/src/view/view_user_edit.c @@ -25,13 +25,120 @@ #include "datamgr.h" #include "utils.h" +#define MESSAGE_BTN_DONE "Done" +#define MESSAGE_BTN_CANCEL "Cancel" +#define MESSAGE_ADD_USER "Add user" +#define MESSAGE_EDIT_USER "Edit user" +#define MESSAGE_ENTRY_NAME "User Name" +#define MESSAGE_ENTRY_ACCOUNT "sample@tizen.com" +#define MESSAGE_ENTRY_PIN "Pin code" + struct _priv { Evas_Object *win; Evas_Object *base; + Evas_Object *ly; + Evas_Object *photo; + Evas_Object *name; + Evas_Object *account; + Evas_Object *pin; + Evas_Object *lock; + Evas_Object *icon; struct datamgr *dm; }; +static bool _add_btns(Evas_Object *base) +{ + Evas_Object *btn; + + btn = utils_add_button(base, MESSAGE_BTN_DONE, PART_USER_EDIT_BTN_DONE); + if (!btn) { + _ERR("failed to add done btn"); + return false; + } + + btn = utils_add_button(base, MESSAGE_BTN_CANCEL, + PART_USER_EDIT_BTN_CANCEL); + if (!btn) { + _ERR("failed to add cancel btn"); + return false; + } + + return true; +} + +static Evas_Object *_add_layout(struct _priv *priv) +{ + Evas_Object *ly, *photo, *name, *pin, *account, *lock; + + ly = utils_add_layout(priv->base, GRP_USER_EDIT_CONTENTS, false, + PART_USER_EDIT_CONTENTS); + if (!ly) { + _ERR("failed to add layout"); + return NULL; + } + + photo = utils_add_layout(ly, GRP_USER_EDIT_PHOTO, true, + PART_USER_EDIT_CONTENTS_PHOTO); + if (!photo) + goto err; + + name = utils_add_entry(ly, MESSAGE_ENTRY_NAME, false, + PART_USER_EDIT_CONTENTS_NAME); + if (!name) + goto err; + + pin = utils_add_entry(ly, MESSAGE_ENTRY_PIN, false, + PART_USER_EDIT_CONTENTS_PIN); + if (!pin) + goto err; + + account = utils_add_entry(ly, MESSAGE_ENTRY_ACCOUNT, false, + PART_USER_EDIT_CONTENTS_ACCOUNT); + if (!account) + goto err; + + lock = utils_add_layout(ly, GRP_USER_EDIT_SWITCH, true, + PART_USER_EDIT_CONTENTS_LOCK); + if (!lock) + goto err; + + priv->photo = photo; + priv->name = name; + priv->account = account; + priv->pin = pin; + priv->lock = lock; + + return ly; +err: + _ERR("failed to add layout"); + evas_object_del(ly); + return NULL; +} + +static bool _add_user_edit(struct _priv *priv) +{ + Evas_Object *ly; + + ly = _add_layout(priv); + if (!ly) { + _ERR("failed to add edit layout"); + return false; + } + + if (!_add_btns(priv->base)) { + _ERR("failed to add buttons"); + evas_object_del(ly); + return false; + } + + /* It should be implemented later about function btn */ + + priv->ly = ly; + + return true; +} + static Evas_Object *_create(Evas_Object *win, void *data) { struct _priv *priv; @@ -54,18 +161,42 @@ static Evas_Object *_create(Evas_Object *win, void *data) free(priv); return NULL; } - evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); elm_win_resize_object_add(win, base); priv->win = win; priv->base = base; priv->dm = data; + if (!_add_user_edit(priv)) { + _ERR("failed to add user edit layout"); + evas_object_del(base); + free(priv); + return NULL; + } + viewmgr_set_view_data(VIEW_USER_EDIT, priv); return base; } +static void _load_user_edit(struct _priv *priv) +{ + Evas_Object *icon; + + /* check state of user edit */ + + elm_object_part_text_set(priv->base, PART_USER_EDIT_TITLE, + MESSAGE_ADD_USER); + icon = utils_add_icon(priv->photo, IMAGE_USER_CURRENT_DEFAULT, + PART_USER_EDIT_PHOTO); + if (!icon) + _ERR("failed to add icon"); + + priv->icon = icon; +} + static void _show(void *data) { struct _priv *priv; @@ -78,6 +209,8 @@ static void _show(void *data) priv = data; evas_object_show(priv->base); + + _load_user_edit(priv); } static void _hide(void *data) -- 2.7.4 From 2e5c282c098e40e58f52c83337127504baf71671 Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Fri, 26 Jun 2015 16:35:09 +0900 Subject: [PATCH 04/16] add user icon list and item group Change-Id: I7864fce11770b234ae42e5fa3b848c5bf804c3eb Signed-off-by: Soohye Shin --- edje/view/useredit.edc | 138 +++++++++++++++++++++++++++++++++++++++++++++++-- include/defs.h | 18 +++++++ 2 files changed, 152 insertions(+), 4 deletions(-) diff --git a/edje/view/useredit.edc b/edje/view/useredit.edc index cebea5b..4fee726 100644 --- a/edje/view/useredit.edc +++ b/edje/view/useredit.edc @@ -138,7 +138,7 @@ group { relative, 0.0 1.0; } min, 308 0; - fixed, 1 0; + fixed, 1 1; align, 1.0 0.5; } } @@ -154,7 +154,7 @@ group { } rel2.to, "pad.action.btn"; min, 308 0; - fixed, 1 0; + fixed, 1 1; align, 0.0 0.5; } } @@ -787,6 +787,19 @@ group { } } part { + name, "clip"; + type, RECT; + description { + state, "default" 0.0; + color, 0 0 0 0; + } + description { + state, "focus" 0.0; + inherit, "default" 0.0; + color, 255 255 255 255; + } + } + part { name, PART_USER_EDIT_PHOTO; type, SWALLOW; scale, 1; @@ -804,6 +817,17 @@ group { fixed, 1 1; } } + part { + name, PART_USER_EDIT_PHOTO_FOCUS; + type, SWALLOW; + scale, 1; + clip_to, "clip"; + description { + state, "default" 0.0; + rel1.to, PART_USER_EDIT_PHOTO; + rel2.to, PART_USER_EDIT_PHOTO; + } + } } programs { program { @@ -811,16 +835,18 @@ group { signal, SIG_FOCUS; source, SRC_PROG; action, STATE_SET "focus" 0.0; - transition, LINEAR 0.5; + transition, LINEAR 0.2; target, "bg.photo"; + target, "clip"; } program { name, "sig,unfocus"; signal, SIG_UNFOCUS; source, SRC_PROG; action, STATE_SET "default" 0.0; - transition, LINEAR 0.5; + transition, LINEAR 0.2; target, "bg.photo"; + target, "clip"; } } } @@ -991,3 +1017,107 @@ group { } } } + +group { + name, GRP_USER_EDIT_ICON_LIST; + parts { + part { + name, "bg"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + min, 589 295; + color, 194 194 194 255; + } + } + part { + name, PART_USER_EDIT_ICON_LIST; + type, SWALLOW; + scale, 1; + description { + state, "default" 0.0; + fixed, 1 1; + } + } + } +} + +group { + name, GRP_USER_EDIT_ICON_LIST_ITEM; + parts { + part { + name, "bg"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + min, 146 146; + color, 255 255 255 255; + } + description { + state, "focus" 0.0; + inherit, "default" 0.0; + color, 0 119 246 255; + } + } + part { + name, "clip"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + color, 0 0 0 0; + } + description { + state, "focus" 0.0; + inherit, "default" 0.0; + color, 255 255 255 255; + } + } + part { + name, PART_USER_EDIT_ICON_LIST_ITEM; + type, SWALLOW; + scale, 1; + description { + state, "default" 0.0; + min, 70 70; + rel1.relative, 0.5 0.5; + rel2.relative, 0.5 0.5; + fixed, 1 1; + } + } + part { + name, PART_USER_EDIT_ICON_LIST_ITEM_FOCUS; + type, SWALLOW; + scale, 1; + clip_to, "clip"; + description { + state, "default" 0.0; + rel1.to, PART_USER_EDIT_ICON_LIST_ITEM; + rel2.to, PART_USER_EDIT_ICON_LIST_ITEM; + fixed, 1 1; + } + } + } + programs { + program { + name, "sig,focus"; + signal, SIG_FOCUS; + source, SRC_PROG; + action, STATE_SET "focus" 0.0; + transition, LINEAR 0.3; + target, "clip"; + target, "bg"; + } + program { + name, "sig,unfocus"; + signal, SIG_UNFOCUS; + source, SRC_PROG; + action, STATE_SET "default" 0.0; + transition, LINEAR 0.3; + target, "clip"; + target, "bg"; + } + } +} diff --git a/include/defs.h b/include/defs.h index 148e6f7..aaf8d47 100644 --- a/include/defs.h +++ b/include/defs.h @@ -41,6 +41,8 @@ #define GRP_USER_EDIT_PHOTO "group.user.edit.photo" #define GRP_USER_EDIT_ENTRY "group.user.edit.entry" #define GRP_USER_EDIT_DELETE "group.user.edit.delete" +#define GRP_USER_EDIT_ICON_LIST "group.user.edit.icon.list" +#define GRP_USER_EDIT_ICON_LIST_ITEM "group.user.edit.icon.list.item" #define GRP_BAR_ITEM "group.bar.item" #define PART_HOME_MENU_BAR "part.home.menu.bar" @@ -65,7 +67,11 @@ #define PART_USER_EDIT_CONTENTS_LOCK "part.user.edit.contents.lock" #define PART_USER_EDIT_CONTETNS_DELETE "part.user.edit.contents.delete" #define PART_USER_EDIT_PHOTO "part.user.edit.photo" +#define PART_USER_EDIT_PHOTO_FOCUS "part.user.edit.photo.focus" #define PART_USER_EDIT_ENTRY "part.user.edit.entry" +#define PART_USER_EDIT_ICON_LIST "part.user.edit.icon.list" +#define PART_USER_EDIT_ICON_LIST_ITEM "part.user.edit.icon.list.item" +#define PART_USER_EDIT_ICON_LIST_ITEM_FOCUS "part.user.edit.icon.list.item.focus" #define PART_BAR_ITEM_BG "part.bar.item.bg" #define PART_BAR_ITEM_ICON "part.bar.item.icon" #define PART_BAR_ITEM_ICON_FOCUS "part.bar.item.icon.focus" @@ -108,6 +114,18 @@ #define IMAGE_USER_ADD_FOCUS IMAGEDIR"/btn_user_add_foc.png" #define IMAGE_USER_DEFAULT IMAGEDIR"/ic_user_01_nor.png" #define IMAGE_USER_DEFAULT_FOCUS IMAGEDIR"/ic_user_01_foc.png" +#define IMAGE_USER_DEFAULT_02 IMAGEDIR"/ic_user_02_nor.png" +#define IMAGE_USER_DEFAULT_02_FOCUS IMAGEDIR"/ic_user_02_foc.png" +#define IMAGE_USER_DEFAULT_03 IMAGEDIR"/ic_user_03_nor.png" +#define IMAGE_USER_DEFAULT_03_FOCUS IMAGEDIR"/ic_user_03_foc.png" +#define IMAGE_USER_DEFAULT_04 IMAGEDIR"/ic_user_04_nor.png" +#define IMAGE_USER_DEFAULT_04_FOCUS IMAGEDIR"/ic_user_04_foc.png" +#define IMAGE_USER_DEFAULT_05 IMAGEDIR"/ic_user_05_nor.png" +#define IMAGE_USER_DEFAULT_05_FOCUS IMAGEDIR"/ic_user_05_foc.png" +#define IMAGE_USER_DEFAULT_06 IMAGEDIR"/ic_user_06_nor.png" +#define IMAGE_USER_DEFAULT_06_FOCUS IMAGEDIR"/ic_user_06_foc.png" +#define IMAGE_USER_DEFAULT_07 IMAGEDIR"/ic_user_07_nor.png" +#define IMAGE_USER_DEFAULT_07_FOCUS IMAGEDIR"/ic_user_07_foc.png" #define IMAGE_USER_CURRENT_DEFAULT IMAGEDIR"/ic_user_profile_current_01_nor.png" #define IMAGE_USER_CURRENT_DEFAULT_FOCUS IMAGEDIR"/ic_user_profile_current_01_foc.png" -- 2.7.4 From a002bafa67c203f72a0ff9b816763aa25fe1b9da Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Fri, 26 Jun 2015 16:53:55 +0900 Subject: [PATCH 05/16] add focus and key input handler in view_user_edit Change-Id: I3d5b20b9bd5d571b0df7727b1bea02e4bebb650c Signed-off-by: Soohye Shin --- src/utils.c | 38 +++++++++++++++++++++ src/view/view_user_edit.c | 87 ++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 117 insertions(+), 8 deletions(-) diff --git a/src/utils.c b/src/utils.c index c309f50..2fbbbe9 100644 --- a/src/utils.c +++ b/src/utils.c @@ -18,6 +18,7 @@ #include #include #include +#include #include "utils.h" #include "defs.h" @@ -169,6 +170,25 @@ Evas_Object *utils_add_box(Evas_Object *base, bool horizon) return box; } +Evas_Object *utils_add_table(Evas_Object *base, bool homo, const char *part) +{ + Evas_Object *table; + + table = elm_table_add(base); + if (!table) { + _ERR("failed to add table"); + return NULL; + } + + if (homo) + elm_table_homogeneous_set(table, EINA_TRUE); + + if (part) + elm_object_part_content_set(base, part, table); + + return table; +} + Evas_Object *utils_add_button(Evas_Object *base, char *text, const char *part) { Evas_Object *btn; @@ -188,6 +208,23 @@ 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) { @@ -222,6 +259,7 @@ Evas_Object *utils_add_entry(Evas_Object *base, char *text, bool password, elm_entry_entry_set(entry, text); elm_object_part_content_set(ly, PART_USER_EDIT_ENTRY, 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 d5262e6..caec778 100644 --- a/src/view/view_user_edit.c +++ b/src/view/view_user_edit.c @@ -43,30 +43,89 @@ struct _priv { Evas_Object *pin; Evas_Object *lock; Evas_Object *icon; + Evas_Object *focus_icon; + Evas_Object *done; + Evas_Object *cancel; struct datamgr *dm; }; -static bool _add_btns(Evas_Object *base) +static void _done_key_down(int id, void *data, Evas *e, Evas_Object *obj, + Evas_Event_Key_Down *ev) { - Evas_Object *btn; + if (!strcmp(ev->keyname, KEY_ENTER)) { + /* check state of user edit */ + viewmgr_pop_view(); + } +} + +static input_handler done_handler = { + .key_down = _done_key_down +}; + +static void _cancel_key_down(int id, void *data, Evas *e, Evas_Object *obj, + Evas_Event_Key_Down *ev) +{ + if (!strcmp(ev->keyname, KEY_ENTER)) { + viewmgr_pop_view(); + } +} + +static input_handler cancel_handler = { + .key_down = _cancel_key_down +}; - btn = utils_add_button(base, MESSAGE_BTN_DONE, PART_USER_EDIT_BTN_DONE); - if (!btn) { +static bool _add_btns(struct _priv *priv) +{ + Evas_Object *done, *cancel; + + done = utils_add_button(priv->base, MESSAGE_BTN_DONE, + PART_USER_EDIT_BTN_DONE); + if (!done) { _ERR("failed to add done btn"); return false; } + inputmgr_add_callback(done, 0, &done_handler, NULL); - btn = utils_add_button(base, MESSAGE_BTN_CANCEL, + cancel = utils_add_button(priv->base, MESSAGE_BTN_CANCEL, PART_USER_EDIT_BTN_CANCEL); - if (!btn) { + if (!cancel) { _ERR("failed to add cancel btn"); + evas_object_del(done); return false; } + inputmgr_add_callback(cancel, 0, &cancel_handler, NULL); + + priv->cancel = cancel; + priv->done = done; return true; } +static void _focused(int id, void *data, Evas_Object *obj, + Elm_Object_Item *item) +{ + elm_object_signal_emit(obj, SIG_FOCUS, SRC_PROG); +} + +static void _unfocused(int id, void *data, Evas_Object *obj, + Elm_Object_Item *item) +{ + elm_object_signal_emit(obj, SIG_UNFOCUS, SRC_PROG); +} + +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 */ +} + +static input_handler photo_handler = { + .focused = _focused, + .unfocused = _unfocused, + .key_down = _photo_key_down +}; + static Evas_Object *_add_layout(struct _priv *priv) { Evas_Object *ly, *photo, *name, *pin, *account, *lock; @@ -103,6 +162,8 @@ static Evas_Object *_add_layout(struct _priv *priv) if (!lock) goto err; + inputmgr_add_callback(photo, 0, &photo_handler, priv); + priv->photo = photo; priv->name = name; priv->account = account; @@ -126,7 +187,7 @@ static bool _add_user_edit(struct _priv *priv) return false; } - if (!_add_btns(priv->base)) { + if (!_add_btns(priv)) { _ERR("failed to add buttons"); evas_object_del(ly); return false; @@ -183,7 +244,7 @@ static Evas_Object *_create(Evas_Object *win, void *data) static void _load_user_edit(struct _priv *priv) { - Evas_Object *icon; + Evas_Object *icon, *focus_icon; /* check state of user edit */ @@ -194,7 +255,14 @@ static void _load_user_edit(struct _priv *priv) if (!icon) _ERR("failed to add icon"); + focus_icon = utils_add_icon(priv->photo, + IMAGE_USER_CURRENT_DEFAULT_FOCUS, + PART_USER_EDIT_PHOTO_FOCUS); + if (!focus_icon) + _ERR("failed to add focus icon"); + priv->icon = icon; + priv->focus_icon = focus_icon; } static void _show(void *data) @@ -238,6 +306,9 @@ static void _destroy(void *data) priv = data; + inputmgr_remove_callback(priv->photo, &photo_handler); + inputmgr_remove_callback(priv->done, &done_handler); + inputmgr_remove_callback(priv->cancel, &cancel_handler); evas_object_del(priv->base); free(priv); } -- 2.7.4 From 48097dfaad848267b3e2a0767e1bfc676d04764b Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Mon, 29 Jun 2015 12:38:59 +0900 Subject: [PATCH 06/16] add ctxpopup for icon item list Change-Id: I6277239cd49019f9c563960fdab9b8985effa32c Signed-off-by: Soohye Shin --- include/utils.h | 1 + src/view/view_user_edit.c | 122 +++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 122 insertions(+), 1 deletion(-) 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 = { -- 2.7.4 From 84e7dd1d6a9672ba7a914fc244ce8aac0138638e Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Mon, 29 Jun 2015 14:35:11 +0900 Subject: [PATCH 07/16] pack recent data Change-Id: I2328f146f9074d73b198d1a41ffeeeab637ace50 Signed-off-by: Soohye Shin --- edje/view/recent.edc | 48 ++------------------- edje/widget/label.edc | 107 ++++++++++++++++++++++++++++++++++++++++++++++ include/datamgr.h | 7 ++++ include/defs.h | 2 + src/view/view_recent.c | 112 +++++++++++++++++++++++++++++++++++++++++++++++-- 5 files changed, 228 insertions(+), 48 deletions(-) diff --git a/edje/view/recent.edc b/edje/view/recent.edc index 35a9f32..b6d8352 100644 --- a/edje/view/recent.edc +++ b/edje/view/recent.edc @@ -460,37 +460,17 @@ group { } } part { - name, "pad.text.subtitle"; - type, RECT; - scale, 1; - description { - state, "default" 0.0; - rel1 { - to, PART_RECENT_TITLE; - relative, 0.0 1.0; - } - rel2 { - to, PART_RECENT_TITLE; - relative, 1.0 1.0; - } - min, 0 8; - fixed, 0 1; - align, 0.5 0.0; - visible, 0; - } - } - part { name, PART_RECENT_SUBTITLE; type, SWALLOW; scale, 1; description { state, "default" 0.0; rel1 { - to, "pad.text.subtitle"; + to, PART_RECENT_TITLE; relative, 0.0 1.0; } rel2 { - to, "pad.text.subtitle"; + to, PART_RECENT_TITLE; relative, 1.0 1.0; } min, 0 24; @@ -721,37 +701,17 @@ group { } } part { - name, "pad.text.subtitle"; - type, RECT; - scale, 1; - description { - state, "default" 0.0; - rel1 { - to, PART_RECENT_TITLE; - relative, 0.0 1.0; - } - rel2 { - to, PART_RECENT_TITLE; - relative, 1.0 1.0; - } - min, 0 8; - fixed, 0 1; - align, 0.5 0.0; - visible, 0; - } - } - part { name, PART_RECENT_SUBTITLE; type, SWALLOW; scale, 1; description { state, "default" 0.0; rel1 { - to, "pad.text.subtitle"; + to, PART_RECENT_TITLE; relative, 0.0 1.0; } rel2 { - to, "pad.text.subtitle"; + to, PART_RECENT_TITLE; relative, 1.0 1.0; } min, 0 24; diff --git a/edje/widget/label.edc b/edje/widget/label.edc index 5c9c825..e908ed1 100644 --- a/edje/widget/label.edc +++ b/edje/widget/label.edc @@ -23,6 +23,14 @@ styles { name, "home_label_title_focus"; base, "font=TizenSans font_size=22 color=#ffffff align=center"; } + style { + name, "recent_label_title"; + base, "font=TizenSans font_size=28 color=#ffffff align=left"; + } + style { + name, "recent_label_subtitle"; + base, "font=TizenSans font_size=24 color=#7f7f7f align=left"; + } } group { @@ -204,3 +212,102 @@ group { } } } + +group { + name, "elm/label/base/slide_recent_title"; + 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, "recent_label_title"; + 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, "recent_label_title"; + 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, "recent_label_title"; + align, 0.0 0.0; + min, 1 1; + ellipsis, -1.0; + } + } + } + } +} +group { + name, "elm/label/base/slide_recent_subtitle"; + 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, "recent_label_subtitle"; + 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, "recent_label_subtitle"; + 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, "recent_label_subtitle"; + align, 0.0 0.0; + min, 1 1; + ellipsis, -1.0; + } + } + } + } +} diff --git a/include/datamgr.h b/include/datamgr.h index 982694d..ef0a272 100644 --- a/include/datamgr.h +++ b/include/datamgr.h @@ -28,6 +28,12 @@ enum datamgr_item_select_action { ITEM_SELECT_ACTION_MAX }; +enum recent_item_type { + RECENT_ITEM_ICON, + RECENT_ITEM_PREVIEW, + RECENT_ITEM_MAX +}; + struct datamgr { Eina_List *list; const char *view_id; @@ -43,6 +49,7 @@ struct datamgr_item { char *parameter; bool noti; enum datamgr_item_select_action action; + enum recent_item_type rtype; }; struct data_class { diff --git a/include/defs.h b/include/defs.h index aaf8d47..b412957 100644 --- a/include/defs.h +++ b/include/defs.h @@ -102,6 +102,8 @@ #define STYLE_LABEL_TITLE "slide_home_title" #define STYLE_LABEL_TITLE_FOCUS "slide_home_title_focus" +#define STYLE_LABEL_RECENT_TITLE "slide_recent_title" +#define STYLE_LABEL_RECENT_SUBTITLE "slide_recent_subtitle" #define STYLE_INPUT "input.field" #define COLOR_DEFAULT_R 0 diff --git a/src/view/view_recent.c b/src/view/view_recent.c index 653d926..be4c5a2 100644 --- a/src/view/view_recent.c +++ b/src/view/view_recent.c @@ -41,13 +41,17 @@ struct _priv { struct _bar_item { Evas_Object *eo; + + struct datamgr_item *di; + struct _priv *priv; }; static bool _add_delete_btn(struct _priv *priv, Evas_Object *base) { Evas_Object *btn; - btn = utils_add_layout(base, GRP_RECENT_DELETE, true, PART_RECENT_DELETE_ICON); + btn = utils_add_layout(base, GRP_RECENT_DELETE, true, + PART_RECENT_DELETE_ICON); if (!btn) { _ERR("failed to add delete icon"); return false; @@ -120,7 +124,8 @@ static Evas_Object *_create(Evas_Object *win, void *data) free(priv); return NULL; } - evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); elm_win_resize_object_add(win, base); priv->win = win; @@ -143,10 +148,95 @@ static Evas_Object *_create(Evas_Object *win, void *data) return base; } +static void _focused(int id, void *data, Evas_Object *obj, + Elm_Object_Item *item) +{ + elm_object_signal_emit(obj, SIG_FOCUS, SRC_PROG); +} + +static void _unfocused(int id, void *data, Evas_Object *obj, + Elm_Object_Item *item) +{ + elm_object_signal_emit(obj, SIG_UNFOCUS, SRC_PROG); +} + +static input_handler eo_handler = { + .focused = _focused, + .unfocused = _unfocused +}; + +static struct _bar_item *_pack_item(struct _priv *priv, Evas_Object *box, + struct datamgr_item *di) +{ + Evas_Object *eo, *lbl, *sub_lbl, *ic; + struct _bar_item *bi; + const char *group; + + switch (di->rtype) { + case RECENT_ITEM_PREVIEW: + group = GRP_RECENT_PREVIEW; + break; + case RECENT_ITEM_ICON: + group = GRP_RECENT_ICON; + break; + default: + return NULL; + } + + bi = calloc(1, sizeof(*bi)); + if (!bi) { + _ERR("failed to calloc bar item"); + return NULL; + } + + eo = utils_add_layout(box, group, true, NULL); + if (!eo) { + _ERR("failed to add layout"); + free(bi); + return NULL; + } + evas_object_show(eo); + + ic = utils_add_icon(eo, di->icon, PART_BAR_ITEM_ICON); + if (!ic) { + _ERR("failed to add icon"); + evas_object_del(eo); + free(bi); + return NULL; + } + + lbl = utils_add_label(eo, di->title, STYLE_LABEL_RECENT_TITLE, + PART_RECENT_TITLE); + if (!lbl) { + _ERR("failed to add title"); + evas_object_del(eo); + free(bi); + return NULL; + } + + if(di->subtitle) { + sub_lbl = utils_add_label(eo, di->subtitle, + STYLE_LABEL_RECENT_SUBTITLE, + PART_RECENT_SUBTITLE); + if (!sub_lbl) + _ERR("failed to add sub title"); + } + + inputmgr_add_callback(eo, 0, &eo_handler, bi); + elm_box_pack_end(box, eo); + + bi->eo = eo; + bi->di = di; + + return bi; +} + static void _load_recent(struct _priv *priv) { - Eina_List *list; + Eina_List *list, *l; Evas_Object *scr, *box; + struct _bar_item *bi; + struct datamgr_item *di; list = datamgr_get_items(priv->dm); if (!list) { @@ -171,8 +261,14 @@ static void _load_recent(struct _priv *priv) elm_object_part_content_set(priv->base, PART_RECENT_CONTENTS, scr); elm_object_part_text_set(priv->base, PART_RECENT_NO_CONTENTS, ""); - /* It should be implemented later */ + EINA_LIST_FOREACH(list, l, di) { + bi = _pack_item(priv, box, di); + if (!bi) + continue; + bi->priv = priv; + priv->list = eina_list_append(priv->list, bi); + } priv->scr = scr; priv->box = box; } @@ -180,6 +276,7 @@ static void _load_recent(struct _priv *priv) static void _show(void *data) { struct _priv *priv; + struct _bar_item *bi; if (!data) { _ERR("Invalid argument"); @@ -192,6 +289,12 @@ static void _show(void *data) elm_object_signal_emit(priv->base, SIG_SHOW_RECENT, SRC_PROG); _load_recent(priv); + + if (!priv->list) + return; + + bi = eina_list_data_get(priv->list); + elm_object_focus_set(bi->eo, EINA_TRUE); } static void _unload_recent(struct _priv *priv) @@ -199,6 +302,7 @@ static void _unload_recent(struct _priv *priv) struct _bar_item *bi; EINA_LIST_FREE(priv->list, bi) { + inputmgr_remove_callback(bi->eo, &eo_handler); evas_object_del(bi->eo); free(bi); } -- 2.7.4 From 1369f9e78513a1d81b5b5130e4facd4b5181ff2a Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Mon, 29 Jun 2015 16:17:57 +0900 Subject: [PATCH 08/16] add initial view_photo Change-Id: Iaa3a60bdcb3624de7c4a76f139c8a3787fd134b4 Signed-off-by: Soohye Shin --- CMakeLists.txt | 1 + edje/home.edc | 1 + edje/view/photo.edc | 22 +++++++++ include/defs.h | 2 + include/view_photo.h | 22 +++++++++ src/view/view_photo.c | 121 ++++++++++++++++++++++++++++++++++++++++++++++ src/view/view_user_edit.c | 4 ++ 7 files changed, 173 insertions(+) create mode 100644 edje/view/photo.edc create mode 100644 include/view_photo.h create mode 100644 src/view/view_photo.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 546b4df..bfdffcc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,6 +47,7 @@ SET(SRCS src/data/data_home.c src/data/data_recent.c src/data/data_user.c + src/view/view_photo.c src/view/view_user_edit.c src/view/view_user.c src/view/view_recent.c diff --git a/edje/home.edc b/edje/home.edc index 0cf5ac2..1d06e76 100644 --- a/edje/home.edc +++ b/edje/home.edc @@ -22,4 +22,5 @@ collections { #include "view/recent.edc" #include "view/user.edc" #include "view/useredit.edc" + #include "view/photo.edc" } diff --git a/edje/view/photo.edc b/edje/view/photo.edc new file mode 100644 index 0000000..28ab518 --- /dev/null +++ b/edje/view/photo.edc @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "../../include/defs.h" +group { + name, GRP_PHOTO; + parts { + } +} diff --git a/include/defs.h b/include/defs.h index b412957..cf2a209 100644 --- a/include/defs.h +++ b/include/defs.h @@ -21,6 +21,7 @@ #define VIEW_RECENT "VIEW_RECENT" #define VIEW_USER "VIEW_USER" #define VIEW_USER_EDIT "VIEW_USER_EDIT" +#define VIEW_PHOTO "VIEW_PHOTO" #define SRC_PROG "prog" #define SRC_EDJE "edje" @@ -44,6 +45,7 @@ #define GRP_USER_EDIT_ICON_LIST "group.user.edit.icon.list" #define GRP_USER_EDIT_ICON_LIST_ITEM "group.user.edit.icon.list.item" #define GRP_BAR_ITEM "group.bar.item" +#define GRP_PHOTO "group.photo" #define PART_HOME_MENU_BAR "part.home.menu.bar" #define PART_HOME_UP_ARROW "part.home.up.arrow" diff --git a/include/view_photo.h b/include/view_photo.h new file mode 100644 index 0000000..9dd7b14 --- /dev/null +++ b/include/view_photo.h @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __AIR_HOME_VIEW_PHOTO_H__ +#define __AIR_HOME_VIEW_PHOTO_H__ + +view_class *view_photo_get_vclass(void); + +#endif /* __AIR_HOME_VIEW_PHOTO_H__ */ diff --git a/src/view/view_photo.c b/src/view/view_photo.c new file mode 100644 index 0000000..e3a0319 --- /dev/null +++ b/src/view/view_photo.c @@ -0,0 +1,121 @@ +/* + + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include + +#include "defs.h" +#include "view_photo.h" +#include "utils.h" + +struct _priv { + Evas_Object *win; + Evas_Object *base; +}; + +static Evas_Object *_create(Evas_Object *win, void *data) +{ + struct _priv *priv; + Evas_Object *base; + + if (!win) { + _ERR("Invalid argument"); + return NULL; + } + + priv = calloc(1, sizeof(*priv)); + if (!priv) { + _ERR("failed to calloc priv"); + return NULL; + } + + base = utils_add_layout(win, GRP_PHOTO, false, NULL); + if (!base) { + _ERR("failed to create base"); + free(priv); + return NULL; + } + evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + elm_win_resize_object_add(win, base); + + priv->win = win; + priv->base = base; + + viewmgr_set_view_data(VIEW_PHOTO, priv); + + return base; +} + +static void _show(void *data) +{ + struct _priv *priv; + + if (!data) { + _ERR("Invalid argument"); + return; + } + + priv = data; + + evas_object_show(priv->base); +} + +static void _hide(void *data) +{ + struct _priv *priv; + + if (!data) { + _ERR("Invalid argument"); + return; + } + + priv = data; + + evas_object_hide(priv->base); +} + +static void _destroy(void *data) +{ + struct _priv *priv; + + if (!data) { + _ERR("Invalid argument"); + return; + } + + priv = data; + + evas_object_del(priv->base); + free(priv); +} + +static view_class vclass = { + .view_id = VIEW_PHOTO, + .create = _create, + .show = _show, + .hide = _hide, + .destroy = _destroy +}; + +view_class *view_photo_get_vclass(void) +{ + return &vclass; +} + diff --git a/src/view/view_user_edit.c b/src/view/view_user_edit.c index a4350ac..89bdc30 100644 --- a/src/view/view_user_edit.c +++ b/src/view/view_user_edit.c @@ -22,6 +22,7 @@ #include "defs.h" #include "view_user_edit.h" +#include "view_photo.h" #include "datamgr.h" #include "utils.h" @@ -139,6 +140,7 @@ static void _eo_key_down(int id, void *data, Evas *e, Evas_Object *obj, !strcmp(ev->keyname, KEY_ENTER_REMOTE)) { /* It should be implemented later */ evas_object_del(data); + viewmgr_push_view(VIEW_PHOTO); } } @@ -358,6 +360,7 @@ static Evas_Object *_create(Evas_Object *win, void *data) } viewmgr_set_view_data(VIEW_USER_EDIT, priv); + viewmgr_add_view(view_photo_get_vclass(), NULL); return base; } @@ -429,6 +432,7 @@ static void _destroy(void *data) inputmgr_remove_callback(priv->photo, &photo_handler); inputmgr_remove_callback(priv->done, &done_handler); inputmgr_remove_callback(priv->cancel, &cancel_handler); + viewmgr_remove_view(VIEW_PHOTO); evas_object_del(priv->base); free(priv); } -- 2.7.4 From 82bfb08ee72af783028c676da12602acc6978b63 Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Mon, 29 Jun 2015 19:42:42 +0900 Subject: [PATCH 09/16] load recent app data Change-Id: Ic95c6ca437de3f888ccc23b4b98302c2c089f2c1 Signed-off-by: Soohye Shin --- CMakeLists.txt | 1 + packaging/org.tizen.home.spec | 1 + src/data/data_recent.c | 147 ++++++++++++++++++++++++++++++++++++++++-- src/view/view_recent.c | 56 ++++++++-------- 4 files changed, 171 insertions(+), 34 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bfdffcc..f58ef70 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -67,6 +67,7 @@ pkg_check_modules(PKGS REQUIRED gio-2.0 libgum app-utils + pkgmgr-info capi-appfw-application) FOREACH(flag ${PKGS_CFLAGS}) diff --git a/packaging/org.tizen.home.spec b/packaging/org.tizen.home.spec index 594c5b3..11b37b6 100644 --- a/packaging/org.tizen.home.spec +++ b/packaging/org.tizen.home.spec @@ -16,6 +16,7 @@ BuildRequires: pkgconfig(json-glib-1.0) BuildRequires: pkgconfig(gio-2.0) BuildRequires: pkgconfig(libgum) BuildRequires: pkgconfig(app-utils) +BuildRequires: pkgconfig(pkgmgr-info) BuildRequires: edje-bin BuildRequires: gettext-devel diff --git a/src/data/data_recent.c b/src/data/data_recent.c index 5bad2b3..460a06a 100644 --- a/src/data/data_recent.c +++ b/src/data/data_recent.c @@ -18,9 +18,125 @@ #include #include #include +#include +#include #include "data_recent.h" #include "datamgr.h" +#include "utils.h" + +/* FIXME: change default thumbnail */ +#define THUMB_DEFAULT "/usr/share/icons/default/small/apps_img_app_default_4x2.png" + +static struct datamgr_item *_new_datamgr_item(char *title, char *icon, + char *parameter, enum recent_item_type type) +{ + struct datamgr_item *di; + + di = calloc(1, sizeof(*di)); + if (!di) { + _ERR("failed to calloc datamgr item"); + return NULL; + } + + di->title = strdup(title); + di->icon = strdup(icon); + di->rtype = type; + di->parameter = strdup(parameter); + di->action = ITEM_SELECT_ACTION_LAUNCH; + + return di; +} + +static void _app_list_foreach(gpointer data, gpointer user_data) +{ + struct recent_data *rdata; + char *label, *thumb, *thumb_land; + pkgmgrinfo_appinfo_h handle; + int r; + struct datamgr_item *di; + struct datamgr *dm; + + if (!data) { + _ERR("Invalid argument"); + return; + } + + rdata = data; + dm = user_data; + + if (!strcmp(rdata->id, PACKAGE)) + return; + + r = pkgmgrinfo_appinfo_get_appinfo(rdata->id, &handle); + if (r != PMINFO_R_OK) { + _ERR("failed to get app info"); + return; + } + + r = pkgmgrinfo_appinfo_get_label(handle, &label); + if (r != PMINFO_R_OK) { + _ERR("failed to get app label"); + } + + r = pkgmgrinfo_appinfo_get_effectimage(handle, &thumb, &thumb_land); + if (r != PMINFO_R_OK) { + _ERR("failed to get app icon"); + } + + if (!strcmp(thumb_land, "")) + thumb_land = THUMB_DEFAULT; + + di = _new_datamgr_item(label, thumb_land, rdata->id, RECENT_ITEM_ICON); + if (di) + dm->list = eina_list_append(dm->list, di); + + pkgmgrinfo_appinfo_destroy_appinfo(handle); +} + +static bool _load_recent_app(struct datamgr *dm) +{ + GList *app_list = NULL; + int r; + + r = app_contents_get_recent_list(CONTENTS_APP, -1, &app_list); + if (r != APP_CONTENTS_ERROR_NONE) { + _ERR("failed to get recent app list"); + return false; + } + + g_list_foreach(app_list, _app_list_foreach, dm); + + app_contents_free_recent_list(app_list); + + return true; +} + +static bool _load_recent(struct datamgr *dm) +{ + if (!_load_recent_app(dm)) + _ERR("failed to load recent app"); + + /* It should be implemented later about media contents */ + + return true; +} + +static void _unload_recent(struct datamgr *dm) +{ + struct datamgr_item *di; + + EINA_LIST_FREE(dm->list, di) { + free(di->title); + free(di->subtitle); + free(di->icon); + free(di->parameter); + + free(di); + } + + dm->list = NULL; +} static Eina_List *_get_items(struct datamgr *dm) { @@ -29,29 +145,50 @@ static Eina_List *_get_items(struct datamgr *dm) return NULL; } + _unload_recent(dm); + _load_recent(dm); + return dm->list; } static void _fini(struct datamgr *dm) { - /* It should be implemented later */ + if (!dm) { + _ERR("Invalid argument"); + return; + } + + _unload_recent(dm); } static bool _init(struct datamgr *dm) { - /* It should be implemented later */ + return _load_recent(dm); +} - return true; +static void _select(struct datamgr_item *di) +{ + if (!di || !di->parameter) + return; + + switch (di->action) { + case ITEM_SELECT_ACTION_LAUNCH: + utils_launch_app(di->parameter); + break; + default: + _ERR("Invalid state"); + return; + } } static struct data_class dclass = { .init = _init, .fini = _fini, - .get_items = _get_items + .get_items = _get_items, + .select = _select }; struct data_class *datamgr_recent_get_dclass(void) { return &dclass; } - diff --git a/src/view/view_recent.c b/src/view/view_recent.c index be4c5a2..cbc981f 100644 --- a/src/view/view_recent.c +++ b/src/view/view_recent.c @@ -27,6 +27,7 @@ #include "utils.h" #define MESSAGE_NO_CONTENTS "No Contents" +#define PADDING_BOX 26 struct _priv { Evas_Object *win; @@ -62,31 +63,6 @@ static bool _add_delete_btn(struct _priv *priv, Evas_Object *base) return true; } -static void _key_down(int id, void *data, Evas *e, Evas_Object *obj, - Evas_Event_Key_Down *ev) -{ - struct _priv *priv; - - if (!data) { - _ERR("Invalid argument"); - return; - } - - priv = data; - - if (!strcmp(ev->keyname, KEY_BACK) || - !strcmp(ev->keyname, KEY_BACK_REMOTE)) { - elm_object_signal_emit(priv->base, SIG_HIDE_RECENT, SRC_PROG); - } else if (!strcmp(ev->keyname, KEY_ENTER) || - !strcmp(ev->keyname, KEY_ENTER_REMOTE)) { - /* It should be implemented later */ - } -} - -static input_handler base_handler = { - .key_down = _key_down -}; - static void _hide_done(void *data, Evas_Object *obj, const char *emission, const char *source) { @@ -141,7 +117,6 @@ static Evas_Object *_create(Evas_Object *win, void *data) } viewmgr_set_view_data(VIEW_RECENT, priv); - inputmgr_add_callback(base, 0, &base_handler, priv); elm_object_signal_callback_add(base, SIG_HIDE_RECENT_DONE, SRC_EDJE, _hide_done, NULL); @@ -160,9 +135,31 @@ 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) +{ + struct _bar_item *bi; + struct _priv *priv; + + if (!data) + return; + + bi = data; + priv = bi->priv; + + if (!strcmp(ev->keyname, KEY_DOWN) || !strcmp(ev->keyname, KEY_BACK) + || !strcmp(ev->keyname, KEY_BACK_REMOTE)) { + elm_object_signal_emit(priv->base, SIG_HIDE_RECENT, SRC_PROG); + } else if (!strcmp(ev->keyname, KEY_ENTER) || + !strcmp(ev->keyname, KEY_ENTER_REMOTE)) { + datamgr_select_item(priv->dm, bi->di); + } +} + static input_handler eo_handler = { .focused = _focused, - .unfocused = _unfocused + .unfocused = _unfocused, + .key_down = _eo_key_down }; static struct _bar_item *_pack_item(struct _priv *priv, Evas_Object *box, @@ -197,13 +194,14 @@ static struct _bar_item *_pack_item(struct _priv *priv, Evas_Object *box, } evas_object_show(eo); - ic = utils_add_icon(eo, di->icon, PART_BAR_ITEM_ICON); + ic = utils_add_icon(eo, di->icon, PART_RECENT_THUMBNAIL); if (!ic) { _ERR("failed to add icon"); evas_object_del(eo); free(bi); return NULL; } + elm_image_fill_outside_set(ic, EINA_TRUE); lbl = utils_add_label(eo, di->title, STYLE_LABEL_RECENT_TITLE, PART_RECENT_TITLE); @@ -260,6 +258,7 @@ static void _load_recent(struct _priv *priv) elm_object_content_set(scr, box); elm_object_part_content_set(priv->base, PART_RECENT_CONTENTS, scr); elm_object_part_text_set(priv->base, PART_RECENT_NO_CONTENTS, ""); + elm_box_padding_set(box, PADDING_BOX * elm_config_scale_get(), 0); EINA_LIST_FOREACH(list, l, di) { bi = _pack_item(priv, box, di); @@ -343,7 +342,6 @@ static void _destroy(void *data) _unload_recent(priv); - inputmgr_remove_callback(priv->base, &base_handler); datamgr_fini(priv->dm); evas_object_del(priv->base); free(priv); -- 2.7.4 From 076bd48bb59327b16e49aa583ac28936dc5750df Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Tue, 30 Jun 2015 17:00:10 +0900 Subject: [PATCH 10/16] enable to clear recent app item - add key and focus input handler - modify recent delete edc for swallow icon - draw no contents when there is no recent item Change-Id: Ia374b6945b5103437bf09b25c51c6b0cf9d67458 Signed-off-by: Soohye Shin --- edje/view/recent.edc | 59 ++++++++++++-- images/btn_bar_clearall_dis.png | Bin 0 -> 3429 bytes images/btn_bar_clearall_foc.png | Bin 0 -> 3423 bytes images/btn_bar_clearall_nor.png | Bin 0 -> 3450 bytes include/datamgr.h | 2 + include/defs.h | 6 ++ src/data/data_recent.c | 27 +++++-- src/data/datamgr.c | 13 +++ src/view/view_recent.c | 174 ++++++++++++++++++++++++++++++---------- 9 files changed, 227 insertions(+), 54 deletions(-) create mode 100644 images/btn_bar_clearall_dis.png create mode 100644 images/btn_bar_clearall_foc.png create mode 100644 images/btn_bar_clearall_nor.png diff --git a/edje/view/recent.edc b/edje/view/recent.edc index b6d8352..aba105f 100644 --- a/edje/view/recent.edc +++ b/edje/view/recent.edc @@ -230,9 +230,6 @@ group { group { name, GRP_RECENT_DELETE; - images { - image, "btn_bar_clearall_nor.png" COMP; - } parts { part { name, "bg"; @@ -241,20 +238,68 @@ group { description { state, "default" 0.0; min, 82 104; - visible, 0; + color, 255 255 255 255; + } + description { + state, "focus" 0.0; + inherit, "default" 0.0; + color, 0 119 246 255; } } part { - name, "ico"; - type, IMAGE; + name, "clip"; + type, RECT; + description { + state, "default" 0.0; + color, 0 0 0 0; + } + description { + state, "focus" 0.0; + inherit, "default" 0.0; + color, 255 255 255 255; + } + } + part { + name, PART_RECENT_DELETE; + type, SWALLOW; scale, 1; description { state, "default" 0.0; rel1.to, "bg"; rel2.to, "bg"; - image.normal, "btn_bar_clearall_nor.png"; } } + part { + name, PART_RECENT_DELETE_FOCUS; + type, SWALLOW; + scale, 1; + clip_to, "clip"; + description { + state, "default" 0.0; + rel1.to, PART_RECENT_DELETE; + rel2.to, PART_RECENT_DELETE; + } + } + } + programs { + program { + name, "sig,focus"; + signal, SIG_FOCUS; + source, SRC_PROG; + action, STATE_SET "focus" 0.0; + transition, LINEAR 0.5; + target, "bg"; + target, "clip"; + } + program { + name, "sig,unfocus"; + signal, SIG_UNFOCUS; + source, SRC_PROG; + action, STATE_SET "default" 0.0; + transition, LINEAR 0.5; + target, "bg"; + target, "clip"; + } } } diff --git a/images/btn_bar_clearall_dis.png b/images/btn_bar_clearall_dis.png new file mode 100644 index 0000000000000000000000000000000000000000..fb138eab9cc9ac2451abdfb0d0e2e252509a9174 GIT binary patch literal 3429 zcmaJ@XCM`R7ygOtotcr9l|8$*d+iyn5X!zJE>Tu=Wskp+Y*$qFj9g@N?R|wLu8|$W zKO?g4tM~i+et6Dv&bM=(=lO8r?wIJ(P+q450MO{`X_;U0U$~Q#URI}(k~^0~;iG5c z2LRQzzaRoRd29esntH%sckZ|&{gHm|NFN@37>vi~G1ATBkt+a!GiVD0++u@8^=SS8 zY8Z=pWr#FqCg(ASCZL#71x0x&=nZ0d3#XaQIvBLINjUloVu_QIP>IZDV$|`J-^f;Y z-y}u6jg22XT?~2a`L*?EZRDb1N^QMzA6-96h9#%Y(33TjM^TqSxf#Ak^mX?xu1IKv zQwsP1dh&V~UcYmGB5)k0qH>E5OV$pE0w<`*0oFJdE5#W@pxcCI+YzB6iLm~uw++cr zOh6+z30e#^bcj&sEI|uUKmr_woSl}z9dY0w^n7gspwP$JAw(`UWKq~LhPF-Jq9Gbo!~CR~p0 z`~ENh1*y!J*Y2MO;%KXJIE5q(?E~@6PoxAsC#U6$)zJzc4FDGX!^SSeBo{l?dV%PCfVDb* z^e0T^?C9`&`;tJojD5H+$?^Bj;RB;0&e4|?kxsK~$+~BaRD?6G3BGQ9r)FzWre!lm z-z2S^#C@3}zBuShk)E651ec`+u~TBT1$j{WP>m=gRlL;RnfSM%5WTfOcIgO!y%uE0 z7h!T@lzYVDXaHeX{am-;CP2CAzw`y*zLtOle6U`LB?=gG&x;<{q8qLo3l~*+i@ALwDjx zp5Gzd8cso?*-w7Wk#{DR$SK~MKZ%?*JL;IXLyv?pL4aoWbd$wRbCtTjCC#N8bmK zFotVmDHKQopgfM;ntIko)+XQdN_jX1kfYSXr)|-gW-8ff*OiIx@&B zF`irfQ7h<`t`*r8juqZLTS~N(hVQ#$izQ+6!G{LytMsdKtE8@3GMbiebIj*T3*ij% z$@idDg&6Z1vzXFra!+y~BM~h6hDB9x(kHIFv$`L7)co-O$S{}AZIb!fYJ6xz_ebUr z;)4KcnrP;TzF34XdoCLp8-hK6ttQK;n0+FFy$>#>D7}@no=umHw6qq*h(2RZ9i&V* zNEb}!5S4_Nl^2)Kms45pTMogK%kEo*R_j>GS}d1Qe95S=EJxqjvf!{llqr|Slp{)! zaP@a#Hs^7qHeE(trm%Nr1@9j$xAyW-IkVRXit&2VR75`sm+uyQKQjI7sc1{qIaf=9 zYI#{91SV@BYgKQ)|H@6BY&pyKIM3gNVqLf-b3ZJ8o@rNPNra@-ErQ%5T4q$~Qum%m=ltpKyjsp2N?*PD&1SsjW%tsRc;!)HpVk9(iA+3YTOb z{+AidzDomE* z>aLx%wzSZXq5qt#lF`IW(^hcZ;|lZp@R&*IuF`xCE^kLYwC5mWLlR*Cd3)O7?Q|TlgQ=ho$GH~G4Mb1wOy%x#0k@frB)erk_wmPOx^*UY3bD=WK6lNNZXjtc$be2rDs+y{8ED9(; za@=KA`>po)^|IQsisHP?yv>7QMQme#)!t}rHc1xJqwqL^Pr8o6ZYfl zXEMh%$AqphYN4o@D644oB%fI8>toWH@&RMBFuw(@6Rixb`CNpwDWpc+Kwea>T;ie1 zjN(VRkLtY=ZZ^Y{)@W<}M~0jb3DIf=??>$mXWRQROXwx4&ldBWKCpo4t7W)lmC(3QIrzdJ0{PJgN zt9+0^k8F|HYICGeSxT!BjnQ1LQa(%0QywoFRi!rRh?l7;zR+@B<1`Fn6S3y@bg0rb zs_vr4JE2jMJDqI6vp%Krs*N}$23q_BeouHxl&lWnYUTE6ByJFrQIUUZWP7-N5TBx$ zxBHr~&DhDf_!3hTZD=LVWxdu``4Cd4;v0mgTxPy{EBY>JrAkvgM$~K4v|`&TvpTFz zFxc2L{C>yai;e~&&n+rT%GIdQt=Xw_buAgdjVP7TFg}Qmr1U1Rk(Tb*IQe0LoL$*LOWHhrmYVS zG`2OTVRJE)>b4iN-*#u8Kg0$U?2par9+5^xj9#Q3Cey*LCTAxPMbkuY<=<9=K$g@W zpKqL%z(!q01@l=i-dqe-v$9Br9Zzme;l{GY3N!aI(>{4UD>~oAZn4+kdpmo%+Xn(= zrSBiyJ>BjIm<{0CeY-$sy7G+YxiG=~&-+7*&n2g6>}hEP65_1=GiOwWaUz$Jma656BuS(ehk2NDX4FR-apJ@Cy5>$ZD-C>c z2z8}}^SlpSVwr}OpK1z8pp+u-ZoW%_QhHE`yi3WrZ2tG`;v_%wlq_w)CCx1v6(fJD z26kJxeU#8{5WZbxljIx&MIK>!c@FYbfWtbr-jcl+fv5mlRDDKP$YL8=q1T~O66}ExL|ozOzt@jxe>P&p z7>;1MR*P)YVhUSJqfdZGXC)sF73BS^#ADLC^HD<9NUU8Z)237lkKm2x?U7Yw)x=+> zky-v4B!L{5pG&3)-EdT(bw=gZ+|YET6AYW=^j?P zs7$!MpOmGa+|T!@D<>?M&%}0k@3<#kC|_WS4!fT-wF^qb@2>xecZY`}HR%@YcA#hM zSCW;r@;3Wb=AyP@L$6dg=@UI8k?688&dsxSx*v_vHkGbuv~7{N5=z?sG;d-JYj|;u4Og&X%V?nwJ&EMhZW?;YotgmWbskOK?Zk|nF#X+}kvT+b{%SsG6s^f5 z3Z9fq@vhqy`u9qc!4s_uFb`P$3A8QSqG1dtP4PjF#DuMSzf1q`{Wbo-{{J@!|95Wg bIgtmBzlsG2JHo#&a}4ygO|+_^4ln)#q%C3b literal 0 HcmV?d00001 diff --git a/images/btn_bar_clearall_foc.png b/images/btn_bar_clearall_foc.png new file mode 100644 index 0000000000000000000000000000000000000000..950c90178d54fd48abd3686fa2c0a4f0b134ddac GIT binary patch literal 3423 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 TT@ikAd)$DQn!aic%r@*lW>IS4 literal 0 HcmV?d00001 diff --git a/include/datamgr.h b/include/datamgr.h index ef0a272..853f14c 100644 --- a/include/datamgr.h +++ b/include/datamgr.h @@ -57,6 +57,7 @@ struct data_class { void (*fini)(struct datamgr *dm); void (*select)(struct datamgr_item *di); Eina_List *(*get_items)(struct datamgr *dm); + void (*clear)(struct datamgr *dm); /* It should be added later */ }; @@ -64,5 +65,6 @@ struct datamgr *datamgr_init(struct data_class *dclass, const char *view_id); void datamgr_fini(struct datamgr *dm); Eina_List *datamgr_get_items(struct datamgr *dm); void datamgr_select_item(struct datamgr *dm, struct datamgr_item *di); +void datamgr_clear_item(struct datamgr *dm); #endif /* __AIR_HOME_DATAMGR_H__ */ diff --git a/include/defs.h b/include/defs.h index cf2a209..b817842 100644 --- a/include/defs.h +++ b/include/defs.h @@ -58,6 +58,8 @@ #define PART_RECENT_THUMBNAIL "part.recent.thumbnail" #define PART_RECENT_ICON "part.recent.icon" #define PART_RECENT_FAVORITE "part.recent.favorite" +#define PART_RECENT_DELETE "part.recent.delete" +#define PART_RECENT_DELETE_FOCUS "part.recent.delete.focus" #define PART_USER_EDIT_TITLE "part.user.edit.title" #define PART_USER_EDIT_BTN_DONE "part.user.edit.btn.done" #define PART_USER_EDIT_BTN_CANCEL "part.user.edit.btn.cancel" @@ -132,5 +134,9 @@ #define IMAGE_USER_DEFAULT_07_FOCUS IMAGEDIR"/ic_user_07_foc.png" #define IMAGE_USER_CURRENT_DEFAULT IMAGEDIR"/ic_user_profile_current_01_nor.png" #define IMAGE_USER_CURRENT_DEFAULT_FOCUS IMAGEDIR"/ic_user_profile_current_01_foc.png" +#define IMAGE_RECENT_DELETE_NOR IMAGEDIR"/btn_bar_clearall_nor.png" +#define IMAGE_RECENT_DELETE_FOC IMAGEDIR"/btn_bar_clearall_foc.png" +#define IMAGE_RECENT_DELETE_DIS IMAGEDIR"/btn_bar_clearall_dis.png" +#define IMAGE_RECENT_APP IMAGEDIR"/ic_thumbnail_app.png" #endif /* __AIR_HOME_DEFS_H__ */ diff --git a/src/data/data_recent.c b/src/data/data_recent.c index 460a06a..7a3c84d 100644 --- a/src/data/data_recent.c +++ b/src/data/data_recent.c @@ -24,12 +24,13 @@ #include "data_recent.h" #include "datamgr.h" #include "utils.h" +#include "defs.h" /* FIXME: change default thumbnail */ #define THUMB_DEFAULT "/usr/share/icons/default/small/apps_img_app_default_4x2.png" -static struct datamgr_item *_new_datamgr_item(char *title, char *icon, - char *parameter, enum recent_item_type type) +static struct datamgr_item *_new_datamgr_item(char *title, char *thumb, + char *parameter, char *icon, enum recent_item_type type) { struct datamgr_item *di; @@ -40,7 +41,8 @@ static struct datamgr_item *_new_datamgr_item(char *title, char *icon, } di->title = strdup(title); - di->icon = strdup(icon); + di->icon = strdup(thumb); + di->focus_icon = strdup(icon); di->rtype = type; di->parameter = strdup(parameter); di->action = ITEM_SELECT_ACTION_LAUNCH; @@ -87,7 +89,8 @@ static void _app_list_foreach(gpointer data, gpointer user_data) if (!strcmp(thumb_land, "")) thumb_land = THUMB_DEFAULT; - di = _new_datamgr_item(label, thumb_land, rdata->id, RECENT_ITEM_ICON); + di = _new_datamgr_item(label, thumb_land, rdata->id, IMAGE_RECENT_APP, + RECENT_ITEM_ICON); if (di) dm->list = eina_list_append(dm->list, di); @@ -181,11 +184,25 @@ static void _select(struct datamgr_item *di) } } +void _clear(struct datamgr *dm) +{ + int r; + + r = app_contents_recent_clear(CONTENTS_APP); + if (r != APP_CONTENTS_ERROR_NONE) { + _ERR("failed to clear app recent"); + return; + } + + /* It should be implemeted later about media contents */ +} + static struct data_class dclass = { .init = _init, .fini = _fini, .get_items = _get_items, - .select = _select + .select = _select, + .clear = _clear }; struct data_class *datamgr_recent_get_dclass(void) diff --git a/src/data/datamgr.c b/src/data/datamgr.c index a9d398b..ac19f2d 100644 --- a/src/data/datamgr.c +++ b/src/data/datamgr.c @@ -85,3 +85,16 @@ void datamgr_select_item(struct datamgr *dm, struct datamgr_item *di) dm->dclass->select(di); } + +void datamgr_clear_item(struct datamgr *dm) +{ + if (!dm || !dm->dclass) { + _ERR("Invalid argument"); + return; + } + + if (!dm->dclass->clear) + return; + + dm->dclass->clear(dm); +} diff --git a/src/view/view_recent.c b/src/view/view_recent.c index cbc981f..c644ce2 100644 --- a/src/view/view_recent.c +++ b/src/view/view_recent.c @@ -37,6 +37,7 @@ struct _priv { Evas_Object *box; Eina_List *list; + struct _bar_item *cur; struct datamgr *dm; }; @@ -47,26 +48,106 @@ struct _bar_item { struct _priv *priv; }; -static bool _add_delete_btn(struct _priv *priv, Evas_Object *base) +static void _btn_focused(int id, void *data, Evas_Object *obj, + Elm_Object_Item *item) +{ + elm_object_signal_emit(obj, SIG_FOCUS, SRC_PROG); +} + +static void _unfocused(int id, void *data, Evas_Object *obj, + Elm_Object_Item *item) +{ + elm_object_signal_emit(obj, SIG_UNFOCUS, SRC_PROG); +} + +static void _hide_done(void *data, Evas_Object *obj, const char *emission, + const char *source) +{ + viewmgr_pop_view(); +} + +static void _dis_btn_key_down(int id, void *data, Evas *e, Evas_Object *obj, + Evas_Event_Key_Down *ev) +{ + struct _priv *priv; + + if (!data) + return; + + priv = data; + + if (!strcmp(ev->keyname, KEY_BACK) || + !strcmp(ev->keyname, KEY_BACK_REMOTE) || + !strcmp(ev->keyname, KEY_DOWN)) { + elm_object_signal_emit(priv->base, SIG_HIDE_RECENT, SRC_PROG); + } +} + +static input_handler dis_btn_handler = { + .key_down = _dis_btn_key_down +}; + +static void _btn_key_down(int id, void *data, Evas *e, Evas_Object *obj, + Evas_Event_Key_Down *ev) +{ + struct _priv *priv; + + if (!data) + return; + + priv = data; + + if (!strcmp(ev->keyname, KEY_BACK) || + !strcmp(ev->keyname, KEY_BACK_REMOTE)) { + elm_object_signal_emit(priv->base, SIG_HIDE_RECENT, SRC_PROG); + } else if (!strcmp(ev->keyname, KEY_ENTER) || + !strcmp(ev->keyname, KEY_ENTER_REMOTE)) { + datamgr_clear_item(priv->dm); + elm_object_signal_emit(priv->base, SIG_HIDE_RECENT, SRC_PROG); + } else if (!strcmp(ev->keyname, KEY_DOWN)) { + if (!priv->cur) + priv->cur = eina_list_data_get(priv->list); + elm_object_focus_set(priv->cur->eo, EINA_TRUE); + } +} + +static input_handler btn_handler = { + .focused = _btn_focused, + .unfocused = _unfocused, + .key_down = _btn_key_down +}; + +static void _add_delete_btn(struct _priv *priv, const char *ic_image, + const char *focus_ic_image, input_handler *handler) { - Evas_Object *btn; + Evas_Object *btn, *ic, *focus_ic; - btn = utils_add_layout(base, GRP_RECENT_DELETE, true, + btn = utils_add_layout(priv->base, GRP_RECENT_DELETE, true, PART_RECENT_DELETE_ICON); if (!btn) { _ERR("failed to add delete icon"); - return false; + return; } + evas_object_show(btn); - priv->del_btn = btn; + ic = utils_add_icon(btn, ic_image, PART_RECENT_DELETE); + if (!ic) { + _ERR("failed to add icon"); + evas_object_del(btn); + return; + } - return true; -} + focus_ic = utils_add_icon(btn, focus_ic_image, + PART_RECENT_DELETE_FOCUS); + if (!focus_ic) { + _ERR("failed to add focus icon"); + evas_object_del(btn); + return; + } -static void _hide_done(void *data, Evas_Object *obj, const char *emission, - const char *source) -{ - viewmgr_pop_view(); + inputmgr_add_callback(btn, 0, handler, priv); + + priv->del_btn = btn; } static Evas_Object *_create(Evas_Object *win, void *data) @@ -108,14 +189,6 @@ static Evas_Object *_create(Evas_Object *win, void *data) priv->base = base; priv->dm = dm; - if (!_add_delete_btn(priv, base)) { - _ERR("failed to add recent"); - evas_object_del(base); - datamgr_fini(dm); - free(priv); - return NULL; - } - viewmgr_set_view_data(VIEW_RECENT, priv); elm_object_signal_callback_add(base, SIG_HIDE_RECENT_DONE, SRC_EDJE, _hide_done, NULL); @@ -123,18 +196,6 @@ static Evas_Object *_create(Evas_Object *win, void *data) return base; } -static void _focused(int id, void *data, Evas_Object *obj, - Elm_Object_Item *item) -{ - elm_object_signal_emit(obj, SIG_FOCUS, SRC_PROG); -} - -static void _unfocused(int id, void *data, Evas_Object *obj, - Elm_Object_Item *item) -{ - 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) { @@ -156,8 +217,22 @@ static void _eo_key_down(int id, void *data, Evas *e, Evas_Object *obj, } } +static void _eo_focused(int id, void *data, Evas_Object *obj, + Elm_Object_Item *item) +{ + struct _bar_item *bi; + + if (!data) + return; + + elm_object_signal_emit(obj, SIG_FOCUS, SRC_PROG); + + bi = data; + bi->priv->cur = bi; +} + static input_handler eo_handler = { - .focused = _focused, + .focused = _eo_focused, .unfocused = _unfocused, .key_down = _eo_key_down }; @@ -165,7 +240,7 @@ static input_handler eo_handler = { static struct _bar_item *_pack_item(struct _priv *priv, Evas_Object *box, struct datamgr_item *di) { - Evas_Object *eo, *lbl, *sub_lbl, *ic; + Evas_Object *eo, *lbl, *sub_lbl, *thumb, *ic; struct _bar_item *bi; const char *group; @@ -194,14 +269,18 @@ static struct _bar_item *_pack_item(struct _priv *priv, Evas_Object *box, } evas_object_show(eo); - ic = utils_add_icon(eo, di->icon, PART_RECENT_THUMBNAIL); - if (!ic) { - _ERR("failed to add icon"); + thumb = utils_add_icon(eo, di->icon, PART_RECENT_THUMBNAIL); + if (!thumb) { + _ERR("failed to add thumb"); evas_object_del(eo); free(bi); return NULL; } - elm_image_fill_outside_set(ic, EINA_TRUE); + elm_image_fill_outside_set(thumb, EINA_TRUE); + + ic = utils_add_icon(eo, di->focus_icon, PART_RECENT_ICON); + if (!ic) + _ERR("failed to add icon"); lbl = utils_add_label(eo, di->title, STYLE_LABEL_RECENT_TITLE, PART_RECENT_TITLE); @@ -220,6 +299,7 @@ static struct _bar_item *_pack_item(struct _priv *priv, Evas_Object *box, _ERR("failed to add sub title"); } + elm_object_focus_next_object_set(eo, priv->del_btn, ELM_FOCUS_UP); inputmgr_add_callback(eo, 0, &eo_handler, bi); elm_box_pack_end(box, eo); @@ -240,6 +320,8 @@ static void _load_recent(struct _priv *priv) if (!list) { elm_object_part_text_set(priv->base, PART_RECENT_NO_CONTENTS, MESSAGE_NO_CONTENTS); + _add_delete_btn(priv, IMAGE_RECENT_DELETE_DIS, + IMAGE_RECENT_DELETE_DIS, &dis_btn_handler); return; } @@ -260,6 +342,9 @@ static void _load_recent(struct _priv *priv) elm_object_part_text_set(priv->base, PART_RECENT_NO_CONTENTS, ""); elm_box_padding_set(box, PADDING_BOX * elm_config_scale_get(), 0); + _add_delete_btn(priv, IMAGE_RECENT_DELETE_NOR, IMAGE_RECENT_DELETE_FOC, + &btn_handler); + EINA_LIST_FOREACH(list, l, di) { bi = _pack_item(priv, box, di); if (!bi) @@ -289,11 +374,12 @@ static void _show(void *data) _load_recent(priv); - if (!priv->list) - return; - - bi = eina_list_data_get(priv->list); - elm_object_focus_set(bi->eo, EINA_TRUE); + if (!priv->list) { + elm_object_focus_set(priv->del_btn, EINA_TRUE); + } else { + bi = eina_list_data_get(priv->list); + elm_object_focus_set(bi->eo, EINA_TRUE); + } } static void _unload_recent(struct _priv *priv) @@ -308,6 +394,10 @@ static void _unload_recent(struct _priv *priv) elm_box_clear(priv->box); evas_object_del(priv->scr); + inputmgr_remove_callback(priv->del_btn, &btn_handler); + evas_object_del(priv->del_btn); + + priv->del_btn = NULL; priv->box = NULL; priv->scr = NULL; priv->list = NULL; -- 2.7.4 From 4f5e2f335584396b4b135898191431291066312f Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Wed, 1 Jul 2015 17:18:20 +0900 Subject: [PATCH 11/16] change user photo when icon is selected in icon list Change-Id: If611b801f7590843f1b83f1f85aaf51178cb9c39 Signed-off-by: Soohye Shin --- images/ic_user_profile_current_02_foc.png | Bin 0 -> 4852 bytes images/ic_user_profile_current_02_nor.png | Bin 0 -> 5037 bytes images/ic_user_profile_current_03_foc.png | Bin 0 -> 4779 bytes images/ic_user_profile_current_03_nor.png | Bin 0 -> 5028 bytes images/ic_user_profile_current_04_foc.png | Bin 0 -> 5379 bytes images/ic_user_profile_current_04_nor.png | Bin 0 -> 5591 bytes images/ic_user_profile_current_05_foc.png | Bin 0 -> 5944 bytes images/ic_user_profile_current_05_nor.png | Bin 0 -> 6242 bytes images/ic_user_profile_current_06_foc.png | Bin 0 -> 5052 bytes images/ic_user_profile_current_06_nor.png | Bin 0 -> 5379 bytes images/ic_user_profile_current_07_foc.png | Bin 0 -> 5062 bytes images/ic_user_profile_current_07_nor.png | Bin 0 -> 5427 bytes images/ic_user_profile_current_08_foc.png | Bin 0 -> 5282 bytes images/ic_user_profile_current_08_nor.png | Bin 0 -> 5425 bytes images/ic_user_profile_current_09_foc.png | Bin 0 -> 5551 bytes images/ic_user_profile_current_09_nor.png | Bin 0 -> 5886 bytes include/defs.h | 12 +++ src/view/view_user_edit.c | 151 +++++++++++++++++++++--------- 18 files changed, 119 insertions(+), 44 deletions(-) create mode 100644 images/ic_user_profile_current_02_foc.png create mode 100644 images/ic_user_profile_current_02_nor.png create mode 100644 images/ic_user_profile_current_03_foc.png create mode 100644 images/ic_user_profile_current_03_nor.png create mode 100644 images/ic_user_profile_current_04_foc.png create mode 100644 images/ic_user_profile_current_04_nor.png create mode 100644 images/ic_user_profile_current_05_foc.png create mode 100644 images/ic_user_profile_current_05_nor.png create mode 100644 images/ic_user_profile_current_06_foc.png create mode 100644 images/ic_user_profile_current_06_nor.png create mode 100644 images/ic_user_profile_current_07_foc.png create mode 100644 images/ic_user_profile_current_07_nor.png create mode 100644 images/ic_user_profile_current_08_foc.png create mode 100644 images/ic_user_profile_current_08_nor.png create mode 100644 images/ic_user_profile_current_09_foc.png create mode 100644 images/ic_user_profile_current_09_nor.png diff --git a/images/ic_user_profile_current_02_foc.png b/images/ic_user_profile_current_02_foc.png new file mode 100644 index 0000000000000000000000000000000000000000..d03ea9fc6b162e9e1cf800df95c41a08c095923a GIT binary patch literal 4852 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 literal 0 HcmV?d00001 diff --git a/images/ic_user_profile_current_03_nor.png b/images/ic_user_profile_current_03_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..8386344ba9afbd9b76d3e0148ad00c09a7247a64 GIT binary patch literal 5028 zcmbU_c|25Y+hYvIPT7euREn7~W1X>$v1d(UT4V;3Mwl_izRNPUqnnwoH=x`w7EQU!uiMWPU@tXmU?RL5v&Vo+L;e=aD? z8qNJ8#@^WUA6qO;4|<7Cr(zI@z`#Iwpc&+^U4iL4bEu&?flLd< zVs(N|b@@Ow+^n(eZH&ihGjvoXETA+nxQ$dX@KcfIcc;E$!1v}NoY^?_Y5fmymfY7s z$#*q@MN9*F_6(|fPAwCGrU%d$7i)y;Cj`R0MGyF34>Ixd>zwr;=mPH^G=;GxHy<1Uz~}qVaMA?0w9ja((hl^Sah1-B0Uf1CQsv z?~`9f8%rn^$3Q2!2> z35Rbto)_M&W<(tW#rFgGW9!jJn}MO3_FJva;1mZ0@w z?kgjHB6VTkg4*g*oPKI}qaas$j1jfijuG2oep?SyNoZWKAK6F4_a3Dzpy$h553r50 z?TqKqUSD6xqzY&sC2d#t%@KIdYqz1{T!~TrrcR!zsUJ_YQ$t&dnU$PZKovQHK@m4N zl+~dG;ESt1$>l-%F`Q--$VuS+%>zH%dfdJBvqXUxyrK>G8&kwcj!~zxPkODAqIE1l zRzlw%2P{L;P%*dP9Eu-s+X2DahfKE5TcoRsPLP~n5;(bt9j#-!PiW1OKTxVma zbYPNu<>;8t=ZTNCE`Gc5%Wt6s|LQ|&2*t)U@PpnFNg#2Xd}Y|I=9I+Y+H5f1IaXP2 zl{F{cSTg+ZcBSmB~7$NdAKU_%K0sl^di8>-1r0E{?Ku0t0qS8 z5GxX)!FSeYtz_yp>b=~^Rc*v|TuVG*L_s;|NhOTk{JqSVQ?jj@RS~xjE{^s)s%V1j zTZS|<_?u6E3@ISi{&K6M>Daj=CAQ{bN%8U4m+qF@)IsdTHtH>v>4O!za4R*oQM~lU zcn*tsyf9i<-ml%QG~KRZIpxUP-lrUec)KugbS+ge^1{5v_KdIqIrie4n>|FdHE79d z8JV>J?r%~ih8w3B2xe}`t~=T}QTe45{{W8lyt_P=mJ^T>Kl9Yh+B4lnv2mFC==|8T zy%Ir2;Z5(;QXq5};*4GTX{oB1sOi-R<@xW0<3h*HtQ*`9L+ZN_iM#U9GZ@E@In>p% zxftA}kqY&M0@f|mGJrqVL0IT4g0HnHZlgrqqXl-)VMLkAms*=l7IN-bxF_Feg*}zq zyR|2FS7E-XBv1|8F>=bQ^Lgn(wt-%G8CQT}E<$KHBbig6`(0l^3>dG^xu$((16vSm zRX_V}BN|HBJ-Aerq}SJA_1#nW=QD*unx+VwB^MB;Q~jeV=#^_qTHPKas@N^LZ)%>j z_GdR1(6wYbYzIOzUhjilI3^$)Rx$~r%od2m;yOtwoOfBTTRL0!Jh zOfXtO=1*^ax}=Ap#kB%O`Ka$Rp(8W}azAfNQuvcTU@L+C;5exKXGZKZ_Gb6z z(oYiJsGq8jG|xHV2U!R>YEzLOcF6hS#9_0E$_CLNVdfmS2TLs?dDpL=5=G}d9FZyE z332!!b5?Lg^5&;T#8D7mQEvLg>o*R$N{&`Ze4W9D`-}vF#RTQZGDxOZ0XG~v7Zt`x z=ezM$ts3n%!M$VdKBT6^1&W<(MokJPMy;{$u`_GK=>lL0csx%K$LLr)RMc|oz8(vC5h(v;!dYK~h2ZT&iTV}2OX zQJ+j!$%f8t_JJ6K=xK4jG=rq5em1CnPnF*I3B*&i7fEcn%;xX;!0^kq{7;03hm~H? z;?{hjlabXT#+Ze~s5T9;o$eW?iiRiWnjhD>nVFvTF_33BO?}!(CL;B0)k_}1qiY-2 z?nai9z-Qzkv;+!KdNW50zUHS|yMZb{8tfd`_d~n5oXzN?)x&D#wmT|C zC4(Qs3-Z2-JQRM`1Dol~9?>h9zS5I@Qj{A0o$(8vd9Zn#*Pc=uaMR&Mp9F0j37g?{Gtv z*Nk+Ivuzu60h#>gO{tCwvvWKH!k&KgN=9DK0cl5-nW^pr;xgU7H(BkBI9AnEBB&^k;L*x?&SiWJ34LN84?Ee5+`qVf||n^zC<;#y^^WC}GCwsl8~96KgTfV$TVIsc?^X8ReH{QL^h71lSESK^mG1o0`6N$JP1=@hZq0vw4yQJ>W%D@=h;uI)baYe!N2ilav{nG+fp< zF>iU3WaSya^wIE<3dzyN12J4z!ws)_#VXCpT3fBWb8U}+;?sT{DV`oo7P+)^2QSpe zv&@*aEYZ@wj=HfO+R9OJX!+oXDRyK?RqB8qYrl~9S80t+l%drErv{$f^pUwo#Pa9A zh}oSzcGDKdXlj4#o5b4H?ee+$U-!Nsog8J*1-~Rm-#eGXo-A9;SS_UIf97;I4wEk| z6BY`UaLGdsC{)9FzkvryF=W) zU_6yFFBC3Ze;+&^^AiH6V4M$LUfayn=IRJr9hbRLfp!|Yk&CD>OJ#VxY?IsARd2f{ zTa^TE{EmLB=-DVMoGfJNQDT*(-eWR5!Nb-Y(ir?sOudJ|C~%x5eMeH1ff3SX)S(*X z;rq1lWlFb6Xu&3ysxo4b&L_&*8gp~_O!fD3E8Icw$YP1(Vx#qdR42qw2foou8g3zK zX`Fmd$3$7jIoStt)%OYt(A&~e!i>Y~zC+iQPB<{SQ+QrC;bKMy{ypPqM|nry%(J2AMx+f7l+ z5kKF29lXNXmBCf@xT=3O~ zupL9xH~z!wyciP|&au|fdSyRcJXmptkd!Zv7n(IJTZ@W;@GCK*V!%pZXg&nU!va_s k3t(aYk&Fvjb7A8I+?YIo3$Y$E{Po|=!o!OiwG0*wn+L;c365rgq8Z2$miNW`Piffxeh62{jbt1riF?UaM~d+W=&YTIhq z;!QDr{#MbU80Tm^7j$$WTF+a~&;WuYB3J~$7y=4H3=YDEA&B~NfAS(&{ok+Evr5>i{vug<>GuYA{u_hNdP24p-CE(uTt|RUl9eO{lsC>x8RnY9X}Y2&fL^ z??aAdE!5iw;bdmF3QIr{ zRk306|1g+g!qB1qc!EC;3;E56x`YcS=*zJ@{c8xpcw5_liLqgS2Z|Lkbs`F{uBoP> z9vu98Tz{g&2u_&)b>lyx!(5{97w{gX&pWKutAa8mvs1YwMZ8%=C0Mv^312I&dvB*gv|~*f0VLi^lw8*PmtgZ(WoB zs*5lU#h?hdP!}97=${I3@WT;sVSYF~#MBuMQFQgkdgCI)lzyk@uhE)eLj5B!-WH*_ zV91~GMfm>*`_U9cxX67|WDL9uyOOB; zSV^d)G^KyG=CF22MKSuqs~J#MiiP=wSy7}~pQ8Q--}j*SePT$1|N%`U{1RJSr={{oLN~+}PVTf9NuxC_*v00dlwp zbg2MJO?nKdyc#Z3BiLcJ!gj`5cjaI- zlP9x)vM+k%=E{!FdrlW}Y7;G)T%5?dX3h}&B?v6 z(((eq<=E_}8YDkyGI8^RNKb>CuB)zdGnv`9xI~sFZ-X}EZSt8H)MBsC=BYE(r0811 z&SSu1!sRq(RkU1aQr`1S$LGz)_QQ9fV+&a~L z%so3@#F_esswItP z*=>AzlknK!BOKt^`*7;(j=s1Zp~5q4zcQ-HZ@ET9;h}~5r#5ry4O#@qm22xUN6N>p zxIGo#D+8_zi%0zw<|n93DbqF3yCG=3=KkXYUm}bf;ER9OsZ`vFQZUxPDsbKiUGVmc=mkid zC5L$Y%Ev)RHI1H$Wml2Ax@Kpl;N!t-pjOTTvbu9lvl5<1pV1DKHL{P2Q_hGatIDmm zp5rlGU`E?dyostlt$U@m`q0ny&AqDfTG2Y0Y8ed=H`HtQW0V6>FAo@ebRCUyb=GGJ zFca1!`B!f}d5>-jzK;}{*<(!LPEAW3ViUEPi46Zd13awB^+Gy0zz(t0e@tT6)Xe3l z(95%I7Ba(r?la8u3Mx9I{go$Oi4X9?bbKZuu%SOkaus0+yAAYMDgf#)IwKkD+tFq- z8(L!gpPBCRQV^9#T?^`AFBhOo>=u%Bf;jy8wxHz=iW!Gx{g**m-{sSE=kOhVGN0ui z5_0giwEFsh;6(X@lNHvz^Gn0`Y)T!nqt6{){A5rNpTwlZqxRMB9DCAU@4t;dYv}*l zQJ4kpb}qR8?Fn!<$(FK9;n_NQ_Wrne`LZ$HI6Nrnd4e6xdYg=3@6flLU$0YCG>K^x5$~zBCQXh(`0|-+IeN9=jNHDy67s) zVlXX+%mXFsS`t(197X$D$LkYMJ_M9@EfCQ@+>)Q@L}^MS#;r+-Hs$U%okYu~;C#7O zc5cX} zGY&UmAydm{>DyLoB-leus;@bSbaY+k`$hXcz25r!I&W5|KnszCHDgkUy_Np$52=!e zS4e4SdpeF>kWp~t-9S_vxZ&(|{axg4^bd*<@38cXI(iZ*XIX$I+G~fGk&aY9ozIct zh7F}kJ)h-i{+z9HL}J^cV6yZ4%pD;C@prk_z=R-X9< zNGs@_xW&!Y*n`%&`Du%<6Ngmg%kKe&iu1!faAKOMePlna}NQgCNWsq5{!FWr|Q!j z$LsD90HV0u_oQ)VWhL2u;yq>R|;T1)b90DEs{ zATZ12$|N$4pUgfPf40t{$1Q3Hu78G3eyxqDD(?h6Im;%>Up{$ueAOU5 zlsUU+B)nAi@E@!g|N!6HGUtbWQino27sq>*$kmW=}Y4N^H_INC4aX(Xc8ZS4*v5 z1{JMu+mhZojtG2ZZsalo*35lXgzS)$9bDL~?qjGIhC5`YFsMY)nIbPJ&emMuJJ_%AzZi zlzofu19`ch13p=fo!35auX&h7CF^#uG4)%ughWqccuF?lO4{}bmN2Lk$SdR79bP5| z6}&x}yWPM-qCih$4(Aab)sbS9`}vEifV=`seA=!46E2aRGvZjy((lz1xlHk%L`T)j zM=tX9i+;cN{(PX(D=0w&ZsTXzNTSny(Y{wX_J6gz#0Lg;6J{=}%*}<^^ab?ABdcU* zpQi|@+f;07sQ)sJ=D5z85;bD;2AIS{&aYW8fL_u3P|YWE9JMs(wM>DAmY#lpG~8dR zN6eCk3nG^oC77%?@*H%j`l3n{V$693H9rkO`?5dt0Gys<$Sl|eO_HqNSy9_Ql!@i{ z_KVlgsvSAs37V=kina0I`qj5pHj7XfKRaVW=cmC=Bedgru5pOpq?2j|gvT9?7ss26 zTtbH84X>^vFEIklj83qmLkWA-i55+sINgVr?6EJUu!BfZFZbRS39uJIkQW)T>Jp3Z z*uT5&>_Qp^L+&g6`jYwe6T_bMITR=gO}pwI6Qf9lbTB2QVQeDYkR(96h9_Tl zk8cO;j!PKY+w2K0jpjj5Pnkw&YcuCU?CQE4GaZ_uvqZ0~Tg3aR-;aa@g_&VK@`!5h>$5Qo=ffZkysGk6h`(x=bKbb5u5fulv2j6 z;g`7|z&MpRVVS~n0_%aJ2}Gi_E~i;1b7~Hl_YUH-9TXf%Y=R5sRk{_rBucU4{Op)u zCS`Q>9j%k+>13cIDpSJ&HpIL2 zVK`W}qgcqBbf4(k^=q)iJ-P8O)PQ-n>O&!Dv-8ljiqh)}a!2E~#BbbGZvUigB&IID zcst=$jqp$U+yz&eUw5bV-b|$Xs65$K@C?Mg9<)=C;9Ebmlei>BPgfAS({rdIW$?Ry z6|*Lz{s-5^V&o(*zv8h58NJlqb^tcE`7}obkl<)iDUxo-4!NL{L`dkEJvQlyeQYCv z4}4Zk{pHurP^JQ~ol9LRQ$>S`scx5mhxIB#&(z$REOAqReopGek_5a6CA*2$S~QP- zcZQT?@}+0Dp2i`2WD)Z~pt;i{8eB}b(s2WX`1SWiPx*I@jM>y;bCRSQOCBpj%Rk&* zZn%B}J9ce2PS0{snM$5LMK}6hq!z0s&^MVRKkEeF%IUx9#CA-;YB>H@A)pMslxHam z5%vXa+$hFZgEZVp6CSXpO`Tuf+c`Vq9$2$QSG!U91G;7$IlNLwcdpf^y@xypteJW! zQki%$$!=zI_rzF{3#qU~XgfwMWc}LR*ZqAbyrGIJka=>@i$3GK<4)jWPhAsYt99%7 z>#2#~*d4i&!!LPixuqQJNx7~KvtTW~y;f+IL(jM$e2KZ|-OJ$GwJQtLANp=gx})ci zTMSGWoB3cWr+D?`Gn)z5m82<5iTgKEp~IV;nmXmVYsgb=A5lS<7$eHmltNC+rU$Q{ zHR3%?n+DiLrgy~idAcJTmq&JB9Gk|Q&C8nSdTxU1mZ^`dtR7fC_RULwi|-N)rxN-G z#0w?oD=$Eh$L9n%yly#EftJ(p`Kci*tE|6v3n9lfZL2LeP5Ayq-<2Loi$$@>1GiR3 zpzwgKTyy6a^HI8-YA0AfJhx}UN^KE~LLawj56JeCd83RIO_+Vrw`@umb6+TYS?I7b zmMe|P1!+W5b;gs`QtcL_cG*Gvv^-1}r`D*VHvyOv;g#wD`C6l6ucVJ%Y@K(e zk8XYUT{usQd)HRNZG?D3>Aeq80$n*9bh&kPCFoqQy8%d0X}RCT0t_U-aL^CP4=A2d zL~Sep4J=Y`yky8k%Nr4w4NF=)yW=Mn+Ba?hALDCg45Z##p=`F~sC^R)R->yKuePQ2 ziqDfPUZ=*UU*2jr;1VpYNku+?E=5)>;TEy&LxQ_M&<}MXzdC$GZB?Ydx-)xaZB4no z@5aII2&E07G{Z4Y9=8`A(>y_!!K1jV5B>m^e15Om9d<-{|Gl3JU8$_(&Ao!D@QkPHTw@}pF~dl zMX)QIvWT+LZvqE4Wfv0YFDgY=4_s`*`uhCdo?yvYU6%ZBB$v#-m=_?}V~LS#SIGT) PThiLx&aB47EAf8-Ra1`4 literal 0 HcmV?d00001 diff --git a/images/ic_user_profile_current_04_nor.png b/images/ic_user_profile_current_04_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..48f15e6dc4bc76f4d1621d340f35b168039bffe6 GIT binary patch literal 5591 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 RI_dDJ)x^lcunOTC^FN-V+8Y1> literal 0 HcmV?d00001 diff --git a/images/ic_user_profile_current_05_foc.png b/images/ic_user_profile_current_05_foc.png new file mode 100644 index 0000000000000000000000000000000000000000..a92c1a8c06a1c90c2e0899a58a777098a6eb2d67 GIT binary patch literal 5944 zcmbVQXH-*NvnC-z=!kR#0z^avQXrJj0|7#jDn$Wlp@<|9LKPuMS84z$uQWwbu^=ka zgh-3@rqYYj6{IK#f_UTmy?*zub-#6g+_TQvd-j|u&z_n6V^50J8DlPXQFbOKCN7+b zp$%g${r!Pi7~}PRA4SF_LdH6hZHeCGFn1E3N#Bd;frsD%+>^vj=JvF?fb#)+G;b?||06f_p5*~1g5R4Ajmj2r=nnC|&!=xd9 zi;(@brT+!W(ZUL1KqTQIC?#b@PdEYrQB_q!sGw9;5eg6_9D#(v8Lz4$LIsUdMI+T9 z|2)zRZzL~ow2h(BKfV|%ZE0UJIS>tlg@uJFg()i$Nj@-yhK9y(8%U%gLqah)f{IOt&5B4Pa1(N-U1juiT?jFPtvbHn>>A$uR5NKiXZ^MM(e*(n_87$mA5Qb2K z!vX?+@9S^rV6qMVzhV4G>0rBvKs?L_A507(c{1|hE%Qg25xf7}(QiQp8nh+JkC7Dj zONK7k1mc7Om-)D;{W*dWBC0?*YN+; zMH`Ut?qnj#j!3-prvj{eiDY81FEJ2eV50>dfDCvK6z5YKjgE7Fseiz68 zD3(7gMg{&R|6Tfw#lH^^p1?RUB*xLuqm~^oF&*>88S2}GkFUD0?VcSLocVQl$IeR* zgUx0!*rb*j$2s|8Qj#ki_P!zGk?~QHSW`0&; z7rkh1XdwJ*=ojzP-k;vyZ`v*jUe{ilR6gh%_kZ+iXZ%Q(i6I+k41=gU0+cG%1IzJ( z0Y@-;vA-!GJ4nB@cJk^KIjBa_yb84*`p)D*X3j~C_<5^of?B6HRT6h2v*+Yqj+auW zYhBu*btXM_`4coR`=;g4D8vc58#`}7^)YGUKgR~(iLZu^WKWutjBd^ZDZkHD@QJON zFs;t^V#Tq&zc!G*jXNW&A?N+86RMq%jL|y==`Di3q~<6$&GcFHRBi)C)M(%qX+!OfLz4Cn>k|SuJWA^hN4okaXwmRV^=e<19{@x}l|L&E10^*$RBX z`bXO=S>%rG&9DLTtFd6N`6lW&e84@x1W8~byE!|@JIyieRUlXRaDVpX+VF8+U?LMe zyRlD7pq=M<=!~Wly5!7cPqbn60@Fl}chcfHDtBU9J*8aWLLBb^K;?u8otqVYqx^Iy zjN65|aQ)<%E$jQQA&LUPL@`C2EB*<;>yiu9QZq_hEl4@Fs{b5Swu^&<4PXFPak-r{ zQu(YP?N>(d?AR>YbuRCd*h0JF%SBOu%Q^?a5?R>EdcM*rJ(DNDypf`z0>Y@va8;Os zg@Keyuxi#6?*~ELi7+?14k2IUrP;CL+vVZtME3lXuI?@)-7VrRfHF^bop|`qIxShr4PIDA=aFM=M}RGJVm;jv*g|n+n00Z<|3UTv#2gHh4TC;-6f_?UQMe{4CS$9~U()JCp(phYCt0R+X zE%$cH33nYoabK+cMmP8L1QpsZ|AfxciW>9}5}NR@Ok0Bs`$3*u@K$$L6>jbB>M}bg z0KChV9JFGMZ_Ujk&+@@XeG|75K}@G}^LmjROohh{r&?-COL8ht$)g{BLrb~+2-Fr^ z3wLZi-cT`M_%%)Ty9<>CS|aqcUp0D=5_$j}XM!#IH%2Fn$B>J7;YXe?o!FXn77?(g zS*+SEY@eT7h=`vf|D~`a+2X2Wv!S`SJEIovq#xlz#?bgpS% zwyM}CHIqI<6Ibg+1c7&x7lWo(tAH92%iRHQO6bALyDn6ED+;!_eLiYctsoB^IKmIS zd)IKG|X263gAatXM#6eSq_cAAJ{3cb{pomo4xJOum&$n z3fQTb&1dsYS4JxgC{;QQ_jC@#ypEgh_#AMBkJlFp`o{CsqC~8E{~O3(*R5bH5$sjX zqS6tuobSfbeI;|CltZ{kh9R`}Q~KN1**9-SS|O6D2are~S<&8&`#LXXoiKX82Gk;A z*)2bvEfL;&ZR8?05Yt?7OJ@4gi&7Nfqbx58*k=?kdWx<5%VTV;K8p8 zTt2IOB_M@wWvB#7SLNr2;+Zf^pw2zmRNhEl@Uwjb!9GuU7{ayuX8X?d)c3cWcn2iT zo>j?}o5mn<+&+>snGw;Up zk&Q^(?ki*t8)NWt38f)TOhV;iX5*bkL<9V=)n>=ya!pNLH2SKQ8Q3?&Ga_YEa!fdq zZJ*r$db)}$VV3CF)wF_yZtpIb#6O8}8XO|<1GjpC(LF6Ox9i0H!$0H?$eI_ZKZ{5) z97)sxFUJdViUFRvuj)R$rI9?xxvr+*Sbl4hHmq24A)0C89M}<*KD%&(@=ItA^<^mp zM9VtluQ_+(GAI2b|MfM5tD|M4BNpt-s_jJ16d5pqw)69#CxBJB5aI==|fE$v8+e8DaV zQvK{X7|hY$ZlnlW2cvkeHL24TPF=HKkRWrt-jYw^6$E}doH0KeW!!#hs$k}1$6b;I z^Np8LA1KMZ1Kbl41u1>Oqj~iYv}B_tR_|5owLiMx#PTr-CXqIRj?5 zIL#I~Z5}-zb@e|$Ve~W~W<+!kzw-)N3h_eshvrij!D@f$pRYHZAW4;qlb0gUUq=oJ z!gE)0CkB4Lueu;~UZwd5_R#cqdU)A_XzYIKu0aO-y;iPAad|-i7$Vo<){i*v_ur%$ zPJxBJ#`3;|QGHAF8J)(QwA8#)M@2XIUYVK2Q$lI#EJgfQFfRJ=*+uKt1#voCvZ2$I zgU(n|jbUtsHUrwK-Qa7L``q^)mp8tiXIc~<`>YO_5Dg{Wdf>jX8U$UE0-2Vhcd{m7MiO4ftEAMw-}tx!iVsVm9F~e7>B$ZCWv35@M!oj9tnD&lI+q{_Jckh*O_1LMUYEO2W}N;gjcSb7jowBDv0MUZUQ-REsxtZzRiblnnX@v&L6f8+?Y}ST9|N&WzD{0^~1@Nh}IuQ z(_xA*hpe2Ppwx5F%7~dhzuIEf)Xy6I^yo0*{gA5BLnF_9L8ab&iJD{b2GvDGub7hk z_bL)CaUGFFNxB?#FZKHbmZZ-`3}K8wX!s zBP!Prm-zNtOlh(>)sxJr-a;jn)YaMbyFcD?rkSXUEp6&_jtRCIC~LNk618#KlD|08 z8uGqhnef=(N*qJOcYbeN=dLjhc(LGGqI#DX9!o|_%sbuK?^#?+5}OfFyHqc3 zF0Z=;*#ATz7zF@Wm+d(w6zw~N>9tcH`-_P+$G=GLwV2c5aPK#Ji#+Q3J*J~gdcMEl zqA!|J4X9crHBgucOHA8<&V^@d?Ac{reDs(%>cwfTq~}2~(NGNxI6r#DTPw#~2fS-{ za|SI+FMKmikYBRDHZLrT>EzEqwW+I#CEdvkIA?Ll;c`N<+%ef8$KWj4^xyO-y$ZA?l*-dyNUpcaidn!>)xa8!$wmJ2{FX#pKY%j}@`c}j|(Zt_C zb28g)Vx@7aR(iFLCv{G{aKXRQ9rQ{ju_)5?=>9jAnj$KTg_1>8LSwgD)JdE;hfK8n z(TN=yr_oM!uYh=f2?c))7#RV(357JW zLpf5Dbgz~hQbvM}QXRCDo15>0HMjNSqE1J#)Fe>+c%S8Yz6I2*_zEwkXidpz1d1U( zrU@|Dru*Zf5r<)Jsr3D;n-gCrQGPqAQLV6YJ|GLsAdPiUxo@2-ZKl6QT|(ju)KfBE zS*g!W@;i90`4F<=?p{&oRfHqiDP{GefYOtj_sbRz1;1*p-kmzQ946VxdL^G%^tMJD z_3>9i>r|Zg_sKihOBZfd>K;r38}HQ3Cz#4(*{F0qK+T?+Uio)_*AdGS%H3d@5tE9fh7$L(@iZQJd?w>-qgIR>se?Cl>b>N?jqr$@FXT{1T( zTAQ%AnPzXQ4G-C5THXKgZ>gLwVtVzqa=L%~}Geo%mh%i9uCA*J3@ zkU6JK6fdpBK)!LrdizBby4s(DUKpatb%g5bTPl< z*Xf##_&6$;Kb>qmh21Kmw9kuA8pnq=>e!Cu(kuk)t!(hrXAAE+00NgQUT_i7+4;WV z{VogdPy4jOS1>s4hEiFn2mKDVDI9ut*+(mi>gtHI%63puI6bi9nqb?i2-6`qteHsKr=Iym3KX~777r1RVdq=nL^Ac4{+9L1}5RxiW#w#{%C4x4%8Qqi@;MY*Oq{@E5|aa8?1xxKr|$wkqmoKezs{%-sqa&u^|p#&o0t z}W?^huD)_3utGSp|*3UVRH>ne+2il zxjt6Qbubo9?_S5ydVK3E^TSaeGr3br=W^5vx-aH7(5&L^qa;P!pMG%HJ>!jO*&LSw znM>q1{$Sz8y-oSL?_;jcOT5#iTbe?+-xz2!r+%g@R8|@pbvN-v0k;@nu<>SpuSK`8 zj8;p>_wbr4TUlh*mJh3_xnilh8uR0S9o>N^!X6$2cAS(TNFcFiuI+KHnBI1pcy#pf z2~cE|k_Vl$_l47A?wt=N)M)4o8$jDF@;=>;e8YHFXaQeQ>VGjMP~I;GFD>0P3Q0`v z-{fdUTwqHs7##dH*0;<3^VZLT@QHX`zaxoE-)vlI=PwTl%Y`&-eY_rlrO948E=e!R z;!9{6kCh)k26@8?2L>|fGIN1mHr!hdjJ+ufAqL(36OZ0nq!3#&f4G;F%y+ISFU6dZH0T>8 z_OXLOwx{=Eg43^^Df;Ue$Pg5xQ@Q`>phGd!M^gU47F&^wofUO56gg>Zwc_}*AgZ>M z8`EUyKwegu`V)?~dJ4{l-Ocg6%9|MpS_niw=B!j*KS44{eF<2`7+ zP#km*P`y37EmQY`2qs(opH=Xc2>gkr(4A1KAO3e+zJxVo3lH#xx0kS<+9lU}}f&ikHw?-*x%KkgoT?^X7k&okFtbFQ(+d}3^*!@|hRNI^ltg4WeG zCAYbM9(r2xJ9^Mbn%wXZkQM|p+&zLH29KrCbi~dB|Y?$jJD6c#*X!C{(Zedtn^humrF@*2%?FO_}pHIy^- zLSUU;bOZ5Nvp^$rhd?(66-VLg>R?rWI2phLOTd8rJ={IL;r?pE|H6fn`+ufog~9(4 zA-Jgt|Jx`FLt`)khsT1UG78cTau5g@29tp(LSZn76j)vkA}=dPzG2c3MK}}&msbM+ zeF>A<@Q(N3rrM~#xyU0mVP^ut3oa|`=jSKmryzsFJIO*+R8;<8$jeKUC8WIrJP8-VS&dFM-?bQV{~t)Rb4&(o#kupvo|Wk}~Qa zjQ^%9r>zauf+}i36txr}5F}JZ8-hg0D?^oF2pAFuQ}{<0?deUxcsgMJ;dLSN{;jL| zzv{vfcr1p1!<*x9?*Bx9u``Z<^LEC0fe~gfu=s5kPe+`e_tih!^Y7JaWAQG&SVt5d z=K=ngf8j3wg&zsiQju3eqU0eE1tgTbZUq=rO9`eVudJyh4^z<+{#)1a|Ho&tWMgFi z1jqjsEdNZABk)i6KcP<^{3m&^p5%C5*d5^z>uj-?|3kRk4^%x01eMb<})0Gsn+E6_Y zI3FYhP1fy)kd8}9J5xL7rvs!1B)^uQHfN-O0hK|OrPnuYZDkmd?~JWvA8IkYGNzKa zpr`Q|WSl21y2^P>p{J)ehra|j@l~v7N-T|4gj769G(2q1i7k=aE=mkQO~JP76D?68 zzY{5nii)5aM5MN)h*~Vab73^1V%2!CXEE6(hIwX9KStGl;hxC3NmDVPgprR=WuONv z5@fy|3P5u4T`ka0$b?~;s!%0b)McUZ zOd)dUIm&kCY@B|YY1>BuAD-CE|MuLzFf!3C#=39Xc*K~>(|LhkWXa^%ve9+Hmo-DO z;@~VNM%A#5#9XxJ=Dt8Ba=hi^{OKF&&SpAHzT!iVsYniYKzC2ZNQGW&xLv3SM@*GZ z#BJb)yomSqW)SyZW%Br!iBC|0Jm1sqK$$g~bq+6)T)98sO8uB3Z|bW9%L)=ZcC^*G zhFqIstu1GL#!}0;0|t5s0@J}FYlr8wsH4x70#1c_t{Ug%v577y-=EVtpEojWXXeG1 zfQ`iP;LkmuB&H^atcKSEzs4^2t$P%*4QfJj>6BZ0+#`d{VhG|?ht>uQ<@NIYLrfWj z+C&)Y@{UiZ=(OAyBL?o!-C~iUaNDI7=9=K8?*URpocx_T8jbfO01$mKJA;RLZW0J# z$yW@x-IL6j9)7fJ1I>GX5iz@yq3NC?CsAT3sXUI>dPoY zlkOfaRQ+YSV9INIuHAjgW(?eHRmC;Y7_Kd)KGooKV+EJOg0Jiy?ymt-GQev8C>XoD zXy@Ld*qDiSrdKXt=W`T`k?t4cbrDK-$Botp;WB5^AL)wMP}hpPXZ2d=D4v~ldxwJF zYZ|usBz-DxBmAJ%Yi-Zxd7tx@zN6?K<^49MI<{+GuR!JH8i8hJZVNCsgJ{->j2cbsXAM)@WM zg|e?CA851|h^42~0XeKvDCUHc3C{qpErWRKgy)t#{u-@DvEHOwWb?0=oj;>PZRk-P zCftLL_P8WHU78h|5NY?bd$D1*ky8xlE8BDHKW*VT?3#D8N!y#yA4qW1r*cJ(go#r& zr5wLnb$bKoi~pt6{yBs#$e=k@bV^KAc$+%0Yq(ozN|QgXg9<8reG8uT3ecxkub+To zvlh$d4AGa1g+(IDe1yGh_f>39mEuy_qOqWGEb(k^r7AlKa98hMue~;PF*+lZ&BTg z7pX<=bw3iY?pWM)Ki4;@ z@htRu4`y?ixrJ@qU1tAA+@{JK6?U9^DWK0NW9;f{9fy!#?le=d6TU7)dYxt3&;6-3 z=|E0T!EJ>>IN~%XnfU#Od62=44+r&^kfdsMLmFk4p26O(e932GN6d7L<4Y=|#ti8~ ztTVovoE;X;kaSkM%<%VB4W7NT`yCGhCZEuTOKTi))f`9bAocHy&Fny$Y=`i=RId>E zVD_2kswZ(-#S>HSWQW`C=@qD<`NZr9iYex)y8I1%*64@6mfD6psO%6Xqpq4s5?>-w z!-*_Vd*i4i-R7m+t5agUm^gcn6Wg*N|CROfgd9yR1ke8YD?kkE+UeZKbMU=|Yu!SE zF(+Dm1FEac9oKY5!h$3z3p#8U>OeUoZ$4k_q2v1}$O*`q@YQQw26R?^%NM>xeI(~Vn@<^gUR(8`GTUR! z`ufC`ccmaX)#?S#--2D@P2mq7gFY5l&>!O4Kf)A!rlCWSxy4AKL3wU{I*AC+J;9vu+pPe0I*^dtmo-JZepw? zDc`h_YHe=KOe32<=x!AFa;@C>32D%2QI11K0!iJ_s%QbvQUEhugT?MAsw`@wkz!4aPWR4`If{0z-3#0ap2AweM&C%f%iwpC|j>EeX=-Myjvsc@_{TCa} zk(wey1&_#b|8{U6=^4vF!Gu;ckaX8ts6H3K{6tGssP$PR@mM^VS9+_vJu0qio3Z*m zNRGvw#l4w}t21*)G(vIH>WZ#w)0DDD?Yji_!uBb7W3k|ET8gLu zxrthrR6%Oqq!4ElZWQngM6mRv>JIgF>$n>nN^}O5X4RT9aQ8R6q|TEbqtw!lb;|-x zPr4Q_M$E0+@mb5N?pHk=l$3(vb>GW%9+!T&TS7LoOj7k{9dE_JjJkZ* z-JNuz=i`ZEp(&hIRmxS$jy9w0CHYW~D2JGM_7==iDW+wB1#&V@cZd+PQx0yIo+BE1 zZ$9w3^h?Ps>~fNN!L=Hk-qG13&u_a8dacd?LS(%A(D1uQZ+9|-{l%|cV>5%V4@loj zTO>nM`Y^+;<~p!85BfgWVM|-d<^Vpa@O^vognk^vk{x0~7104lUmSL{GCrkac>0mD z1hV~R39!C4_Hm^?qHVs$Fgtr^c401=&H4Dn`ir0Y{9QX#TW2dOhcm`w&2knAmw$}# z3aDlfHt8B>Jt82J2C+rH8kuBEq5NYr2ap zoS&Q9Z^b>BRXNm9Z7`>nuNj7RYP+myPUfulqCY$#*0%cUZOkyY6ckm)Uyl8)dU*zn z?hlD!+B)M9rN5qX>=@Yjg!nV=2i`eidiHJNJ19=i+`TnViYsezi()eQp-r@da?Y{1 z?h8&WtLzQu-b20CzRjqDkK;NgQuGd^J>|bft)LIjQB&sWlQ@`KS(t~# zB_OlT-mb*d*cH(eSLEBv9~5V(39sx%1!QL{pOq2vDV!pQLWV|s(Ph1zkEE8BIfhu2 zz`6X`-#UD)s8&vNh7%e%TJYUDIr*Y<#~i*^r}$> zReBpbt!1q9b82PmBq`(NMIEYop-A!G(HeY&G==^Ho7Ks&JoaWLwL@cs{goZf{M#!) zJB*9L@87d>*OF~luc+?Hob+Yvc6M9_xT7jY=N@_AiW;=muPn$Mub5P#`W8D2Niln5 zkdP}Y?`fazp4xwj#rdH&`K(<3a4NT@s3cW&CDP3CrilK__k}l7iPQv|`0JmnrJ|ZH z?#m`m?;XBjR=ecEFxR~7Q1aT>Al|KFp4l3-tx#P!{7aUaieIOjmgC4`(C-<2_rsf# zWqCS*%$LGwQdH%JVwS7EX6%jCMlCd0m{xLgw|7VQk9oeV4zGh~sUoczYUAzz4l1>+ z!m8$C&lB>1xtBiLTzNEKmlJ2ApA?`USi%PhruGQ`8k^6l_G3ZS5yPJfSB>mHRBsG@ z43gV#1>Q^RAKlWO><%DK=G%yj}&4UMJQJIQ~9zsft(++ zg#<(f04JXzofDCApFEn}=OxbK{c}B3)nkOB?ej0H*^G*Ei+}agRLkjR&28$@-Qs`m z5E7go7Wm?L)7j6!;UwDp2M6g&U@7b+Yo(~eQ{84K9#<;h?pa*N;pt81EzH1{@Gwt6 z*jftlkdCVK)uxWy`=G*AqdVV@OWy`vXr_ZS`yK4lC@wNRuPUcQz^f_NXamQclzms5 zF0PxGSUTOtY5A`Jw{q7sP3faDn_KXLD@QfAw$vw(RY=|&`+VcZm52La*MdbF<+Kn* zYWLZjuO048UVR;B)3l6MDm;b1SU@B+M*AC+GDNAy%lou9*b>Z(qnP-n--xYn@EFri z-wX@H%%1TFP9AC?T<p~bENHiJCFvuUCpRj7ClOn{L~ve$ z)kEluXXn`*VGNbIOp95^Lp+BmyuiK7a{*Qho3-&X9gwI{*&-e5UVjlRa*a-$R8<-y!h(u3 zZN)2`IrV@U9a6gK1BKVToU?lKs@}|lfBbBewXyFkQ&a(p1RH^3>IDRL>|N8IgZlJh zF#d~-8vuAVzuBh@_}-f3LN znK>EAerwB^0gnqK=($S%5|A8|MgzY-BJ@I}O|nB=S$l5@qwZ)0$z5j2*o0%w!;h-Ryl3w?6ch6(YD#$(=Rs0h{wxC zx2YJLhA-9Tkm9J~;Zr+uO}l!nEc{mN!?tGICqdKjmd`l@QJ`{KYVUW|AEKhpBuNG@U;aosTv!`2@ zXbvAkf|{7ZK|>DU=Nx9f=~^ATymL{HH!jB?h{@ki#nYn%X1v7gDjvqHu8H+fYPU;N z=*Okb{WfhQ2)hQc@3k2)f7wo)9VY(`tBwWCg0gocT-#lc>TkbSQF|m^H7!pt^(BJj zcv}0BNmq|p$1McI`jLPv=Vs9rH@m-3tD3SL zk;&;=PdB+6BejA_(i?_{FA>$DJw2~q0%BxcO{{X;nK{n(;p5b_*Pqt0lO$6PQsvv3 zbU-wCrm|<|w2DXAg0B;|RpXn)G~Xen8KS<`+(r+T(Tr0S#lpOKen}*hJe4=BDzjPq zsG>=o9~ELH(BjeXa7W7rTz?*F^s*>g8>f&D=mTZ>I~Yei8F|g#Xn8BzZVYM7^7FY! z*R)o4ng5Bntxo$d19X?f*0@)5b@-HmLF`d;R-x>Q#SlT~3#aSNk3-PtjuCUT#rJ%` z@FO#Eu&tnN$qBr^%N>bPe5Z;w zeZuzJMbdsFNb2Jq>wYs^+sumaq@<)`W-Py{Mb)Bdi8MT8jDYyub#v4E+86Y) zEbrV2yb&v$D|GiZZ@2Wp7hc!8H6&B@4vRU3FjM239o~qwyoe|_&AEB zO(J2N&buP(*w$k0M31iBZ8sRc;63On7D3!~-!jKE3fdX@$4woLQSJ<|;RW;FnSnGl zc0}9OR=cm0U<*OkBp)fLP%^cB1U7gD?@fXkhSBmHG?1>KTkAO)t_azeIqlr&>tfTT zqGVgzThVGbcp9@=TR=k>XsA)pUh~X6b48`8W{SD1`ty?Kq5y2$lDggv7hF;^%Gda7 zvmka5K)C&OQkV2b$*Y$Ow)vd6G2X|(cDs0Pv`4`41%c@fI>xP-w4XMMC0 z_;H@b`-VhNKw2TttF$uo;fb%M^yBV0G^a=q{Wsr->^fXPJ0KQ%xy6}d+iOoX0Ewo(KQ>2Nd2?>+ca^+zL(wBKsk Gh5Zk2CQknV literal 0 HcmV?d00001 diff --git a/images/ic_user_profile_current_06_foc.png b/images/ic_user_profile_current_06_foc.png new file mode 100644 index 0000000000000000000000000000000000000000..88aa794dff465d6e4e963b45fc92df1b51466bac GIT binary patch literal 5052 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 literal 0 HcmV?d00001 diff --git a/images/ic_user_profile_current_06_nor.png b/images/ic_user_profile_current_06_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..ad0da2db935b91c7103e6548bf47190631637ce9 GIT binary patch literal 5379 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 literal 0 HcmV?d00001 diff --git a/images/ic_user_profile_current_07_foc.png b/images/ic_user_profile_current_07_foc.png new file mode 100644 index 0000000000000000000000000000000000000000..b892435ca8224db448e7e01a3acfb96d024112d0 GIT binary patch literal 5062 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 z zfitzVW!ZlU?U`HR>9k}c%uVi9HZpzX_X^0l4mx9eG2JKi_&?%mZ+RI5@ok~mxqdvqvm{n63zX%(5RSmIP;4! zUN@VNSwEwPSiB1caLn*N$@VTr*$+$ix*obK_cr)Dnk>yfzhNb~AfV%aXA1OncF~_S zHoqQxNr_ugYylJ?85ek?kYCh8v~x+=vSc@AZ)w^q5e&Fq-!nXEWI2^Pc`k)HEjpwBq#s5$z<=Zw!fk7wJzH~*mbIZPTItUfes+WWIh2Oh-%Mx=rXq=m-}_= zQapcptvQ4L3I46N-V`V~PheeZD+jpC`Oy-MJc${v+!a+A%I=c9eP8W0KM!6N=Q9q& z1zCat!~K#JO>()R%qz zo(K_G-x;oDSweXkzq**TZMfPzNYvJULlmvgPBqgJH+(T;EBN7QJblr@(#}pR1tEhD zBTKM$igYdx6|xv>ULJfDw1L%o13~`b2nH;2B7LwXknhqjs=DLgah-e8lCCLnV=U*1 zDxnR)1K@U9=16jx^2l~ z-qsZa_TO@zNJYff-YOA+abH<|p^oY77(*0VExKpWe*dbYH$3E8$2Dr%;z#S35w=rK zo?&cPC#}4(W&NyUg7wPGUPC1ik^4N=Q6dKOYNkVtrEF7Dr_#KiF;7|&isEf*Xjyn3 zF=4xl*uNq~doRDs^j`YVzR{*ABjaOsv3+=Y!tAT#OS>0i4Rtor?>{oLi%t(@Bx2~l zo0^#&-IZmQ-Ti5+5inSPo08LHS>>)dgJu=4ZQBc9@pz%*lGLEJ2DJZi@1Sc2%6l0T zauQ=*BCLjCHD%_~xcYjWSV~RIB71nUS1f48jmniX#TIbgYv^yVR%*+oWZ*BSw;6w{ zgr4s2k>kvy8ArF~FX)HSOYT-=*8CP_c7lFYZB?cHww0}}6(?XbcJ@SrRZIhcwRiiE zsiSuN75&_kUJ~_MU^D- z33xIYkwddvay1HqcFr=D+`CeSPn~WOFaZOs?oDqilpyq}CZL%`;})#^4I&RH3|OC$ z;6E?&J(fN#tuFr-ICh?<*}IcpKGB@kZ~vFT#y9%*Z-gQvbYyT}V@L$3L-zZ0*U4_iD#l$K^>8z80Un?b){cu-leaqw4`(W!8& ztKm&oY(Y-nmfX;AFs3l(;)J9sUl0&`G3GENAD5=FyT2C0FDZ1|i&f-r`IpDp3IGQ~ z(@PLhi9s2nZyr<3!lxM&Bbo8P(i-2>j!r2th3;glE>C$^9VanO3@owL826a}0+n)S AYybcN literal 0 HcmV?d00001 diff --git a/images/ic_user_profile_current_09_foc.png b/images/ic_user_profile_current_09_foc.png new file mode 100644 index 0000000000000000000000000000000000000000..290b766e9392b93e5bb70ccd775dd7b53da7a95e GIT binary patch literal 5551 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 literal 0 HcmV?d00001 diff --git a/images/ic_user_profile_current_09_nor.png b/images/ic_user_profile_current_09_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..fac5315a9599a3dc14ac8311904d890ec3069104 GIT binary patch literal 5886 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 C;7$?% literal 0 HcmV?d00001 diff --git a/include/defs.h b/include/defs.h index b817842..8c15615 100644 --- a/include/defs.h +++ b/include/defs.h @@ -134,6 +134,18 @@ #define IMAGE_USER_DEFAULT_07_FOCUS IMAGEDIR"/ic_user_07_foc.png" #define IMAGE_USER_CURRENT_DEFAULT IMAGEDIR"/ic_user_profile_current_01_nor.png" #define IMAGE_USER_CURRENT_DEFAULT_FOCUS IMAGEDIR"/ic_user_profile_current_01_foc.png" +#define IMAGE_USER_CURRENT_DEFAULT_02 IMAGEDIR"/ic_user_profile_current_02_nor.png" +#define IMAGE_USER_CURRENT_DEFAULT_02_FOCUS IMAGEDIR"/ic_user_profile_current_02_foc.png" +#define IMAGE_USER_CURRENT_DEFAULT_03 IMAGEDIR"/ic_user_profile_current_03_nor.png" +#define IMAGE_USER_CURRENT_DEFAULT_03_FOCUS IMAGEDIR"/ic_user_profile_current_03_foc.png" +#define IMAGE_USER_CURRENT_DEFAULT_04 IMAGEDIR"/ic_user_profile_current_04_nor.png" +#define IMAGE_USER_CURRENT_DEFAULT_04_FOCUS IMAGEDIR"/ic_user_profile_current_04_foc.png" +#define IMAGE_USER_CURRENT_DEFAULT_05 IMAGEDIR"/ic_user_profile_current_05_nor.png" +#define IMAGE_USER_CURRENT_DEFAULT_05_FOCUS IMAGEDIR"/ic_user_profile_current_05_foc.png" +#define IMAGE_USER_CURRENT_DEFAULT_06 IMAGEDIR"/ic_user_profile_current_06_nor.png" +#define IMAGE_USER_CURRENT_DEFAULT_06_FOCUS IMAGEDIR"/ic_user_profile_current_06_foc.png" +#define IMAGE_USER_CURRENT_DEFAULT_07 IMAGEDIR"/ic_user_profile_current_07_nor.png" +#define IMAGE_USER_CURRENT_DEFAULT_07_FOCUS IMAGEDIR"/ic_user_profile_current_07_foc.png" #define IMAGE_RECENT_DELETE_NOR IMAGEDIR"/btn_bar_clearall_nor.png" #define IMAGE_RECENT_DELETE_FOC IMAGEDIR"/btn_bar_clearall_foc.png" #define IMAGE_RECENT_DELETE_DIS IMAGEDIR"/btn_bar_clearall_dis.png" diff --git a/src/view/view_user_edit.c b/src/view/view_user_edit.c index 89bdc30..124d5b5 100644 --- a/src/view/view_user_edit.c +++ b/src/view/view_user_edit.c @@ -33,19 +33,18 @@ #define MESSAGE_ENTRY_NAME "User Name" #define MESSAGE_ENTRY_ACCOUNT "sample@tizen.com" #define MESSAGE_ENTRY_PIN "Pin code" +#define ICON_ADD "add" +#define KEY_ICON "icon" +#define KEY_FOCUS_ICON "focusicon" #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 _icon_info { + const char *file; + const char *focus_file; + const char *message; + const char *focus_message; }; struct _priv { @@ -130,17 +129,51 @@ static void _unfocused(int id, void *data, Evas_Object *obj, elm_object_signal_emit(obj, SIG_UNFOCUS, SRC_PROG); } +static void _load_user_icon(struct _priv *priv, const char *file, + const char *focus_file) +{ + Evas_Object *icon, *focus_icon; + + icon = utils_add_icon(priv->photo, file, PART_USER_EDIT_PHOTO); + if (!icon) + _ERR("failed to add icon"); + + focus_icon = utils_add_icon(priv->photo, focus_file, + PART_USER_EDIT_PHOTO_FOCUS); + if (!focus_icon) + _ERR("failed to add focus icon"); + + priv->icon = icon; + priv->focus_icon = focus_icon; +} + static void _eo_key_down(int id, void *data, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev) { + struct _priv *priv; + const char *file, *focus_file; + + if (!data) + return; + + priv = data; + if (!strcmp(ev->keyname, KEY_BACK) || !strcmp(ev->keyname, KEY_BACK_REMOTE)) { - evas_object_del(data); + evas_object_del(priv->ctxpopup); + priv->ctxpopup = NULL; } else if (!strcmp(ev->keyname, KEY_ENTER) || !strcmp(ev->keyname, KEY_ENTER_REMOTE)) { - /* It should be implemented later */ - evas_object_del(data); - viewmgr_push_view(VIEW_PHOTO); + evas_object_del(priv->ctxpopup); + priv->ctxpopup = NULL; + + file = evas_object_data_get(obj, KEY_ICON); + focus_file = evas_object_data_get(obj, KEY_FOCUS_ICON); + + if (!strcmp(file, ICON_ADD) || !strcmp(focus_file, ICON_ADD)) + viewmgr_push_view(VIEW_PHOTO); + else + _load_user_icon(priv, file, focus_file); } } @@ -150,8 +183,7 @@ static input_handler icon_handler = { .key_down = _eo_key_down }; -static Evas_Object *_pack_icon(Evas_Object *table, const char *icon_file, - const char *focus_icon_file, int i) +static Evas_Object *_pack_icon(Evas_Object *table, struct _icon_info *icon_info, int i) { Evas_Object *eo, *ic, *focus_ic; @@ -163,20 +195,22 @@ static Evas_Object *_pack_icon(Evas_Object *table, const char *icon_file, 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); + ic = utils_add_icon(eo, icon_info->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, + focus_ic = utils_add_icon(eo, icon_info->focus_file, PART_USER_EDIT_ICON_LIST_ITEM_FOCUS); if (!focus_ic) { _ERR("failed to add focus icon"); evas_object_del(eo); return NULL; } + evas_object_data_set(eo, KEY_ICON, icon_info->message); + evas_object_data_set(eo, KEY_FOCUS_ICON, icon_info->focus_message); return eo; } @@ -186,6 +220,56 @@ static void _add_icon_list(struct _priv *priv) Evas_Coord x, y, w, h; Evas_Object *ctxpopup, *ly, *table, *eo; int i; + struct _icon_info icon_info[] = { + { + IMAGE_USER_DEFAULT, + IMAGE_USER_DEFAULT_FOCUS, + IMAGE_USER_CURRENT_DEFAULT, + IMAGE_USER_CURRENT_DEFAULT_FOCUS + }, + { + IMAGE_USER_DEFAULT_02, + IMAGE_USER_DEFAULT_02_FOCUS, + IMAGE_USER_CURRENT_DEFAULT_02, + IMAGE_USER_CURRENT_DEFAULT_02_FOCUS + }, + { + IMAGE_USER_DEFAULT_03, + IMAGE_USER_DEFAULT_03_FOCUS, + IMAGE_USER_CURRENT_DEFAULT_03, + IMAGE_USER_CURRENT_DEFAULT_03_FOCUS + }, + { + IMAGE_USER_DEFAULT_04, + IMAGE_USER_DEFAULT_04_FOCUS, + IMAGE_USER_CURRENT_DEFAULT_04, + IMAGE_USER_CURRENT_DEFAULT_04_FOCUS + }, + { + IMAGE_USER_DEFAULT_05, + IMAGE_USER_DEFAULT_05_FOCUS, + IMAGE_USER_CURRENT_DEFAULT_05, + IMAGE_USER_CURRENT_DEFAULT_05_FOCUS + }, + { + IMAGE_USER_DEFAULT_06, + IMAGE_USER_DEFAULT_06_FOCUS, + IMAGE_USER_CURRENT_DEFAULT_06, + IMAGE_USER_CURRENT_DEFAULT_06_FOCUS + }, + { + IMAGE_USER_DEFAULT_07, + IMAGE_USER_DEFAULT_07_FOCUS, + IMAGE_USER_CURRENT_DEFAULT_07, + IMAGE_USER_CURRENT_DEFAULT_07_FOCUS + }, + { + IMAGE_USER_ADD, + IMAGE_USER_ADD_FOCUS, + ICON_ADD, + ICON_ADD + } + }; ctxpopup = elm_ctxpopup_add(priv->base); if (!ctxpopup) { @@ -222,11 +306,11 @@ static void _add_icon_list(struct _priv *priv) 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); + eo = _pack_icon(table, &icon_info[i], i); if (!eo) continue; - inputmgr_add_callback(eo, 0, &icon_handler, ctxpopup); + inputmgr_add_callback(eo, 0, &icon_handler, priv); if (i == 0) elm_object_focus_set(eo, EINA_TRUE); } @@ -365,29 +449,6 @@ static Evas_Object *_create(Evas_Object *win, void *data) return base; } -static void _load_user_edit(struct _priv *priv) -{ - Evas_Object *icon, *focus_icon; - - /* check state of user edit */ - - elm_object_part_text_set(priv->base, PART_USER_EDIT_TITLE, - MESSAGE_ADD_USER); - icon = utils_add_icon(priv->photo, IMAGE_USER_CURRENT_DEFAULT, - PART_USER_EDIT_PHOTO); - if (!icon) - _ERR("failed to add icon"); - - focus_icon = utils_add_icon(priv->photo, - IMAGE_USER_CURRENT_DEFAULT_FOCUS, - PART_USER_EDIT_PHOTO_FOCUS); - if (!focus_icon) - _ERR("failed to add focus icon"); - - priv->icon = icon; - priv->focus_icon = focus_icon; -} - static void _show(void *data) { struct _priv *priv; @@ -400,8 +461,10 @@ static void _show(void *data) priv = data; evas_object_show(priv->base); - - _load_user_edit(priv); + elm_object_part_text_set(priv->base, PART_USER_EDIT_TITLE, + MESSAGE_ADD_USER); + _load_user_icon(priv, IMAGE_USER_CURRENT_DEFAULT, + IMAGE_USER_CURRENT_DEFAULT_FOCUS); } static void _hide(void *data) -- 2.7.4 From 0d33e00d99ebfa3bce28361ba5e942c458d14385 Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Thu, 2 Jul 2015 15:04:50 +0900 Subject: [PATCH 12/16] add photo and photo viewer edc Change-Id: Ib9a34e475d4639bd0c760cfe55ef762967ba3706 Signed-off-by: Soohye Shin --- edje/view/photo.edc | 237 ++++++++++++++++++++++++++++++++++++++++++++++++++++ include/defs.h | 5 ++ 2 files changed, 242 insertions(+) diff --git a/edje/view/photo.edc b/edje/view/photo.edc index 28ab518..d6e8f97 100644 --- a/edje/view/photo.edc +++ b/edje/view/photo.edc @@ -18,5 +18,242 @@ group { name, GRP_PHOTO; parts { + part { + name, "up"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + rel2.relative, 1.0 0.0; + min, 0 104; + fixed, 0 1; + align, 0.5 0.0; + } + } + part { + name, "title"; + type, TEXT; + scale, 1; + description { + state, "default" 0.0; + rel1.to, "title"; + rel2.to, "title"; + fixed, 1 1; + text { + text, "Select photo"; + size, 46; + font, "TizenSans"; + } + color, 51 51 51 255; + } + } + part { + name, "bottom"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + rel1.relative, 0.0 1.0; + min, 0 148; + fixed, 0 1; + align, 0.5 1.0; + } + } + part { + name, PART_PHOTO_LIST; + type, SWALLOW; + scale, 1; + description { + state, "default" 0.0; + rel1 { + to, "title"; + relative, 0.0 1.0; + } + rel2 { + to, "bottom"; + relative, 1.0 0.0; + } + fixed, 1 1; + } + } + } +} + +group { + name, GRP_PHOTO_VIEWER; + parts { + part { + name, "bg"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + min, 740 650; + } + } + part { + name, "pad.title"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + rel1.relative, 0.5 0.0; + rel2.relative, 0.5 0.0; + min, 0 46; + fixed, 1 1; + align, 0.5 0.0; + visible, 0; + } + } + part { + name, "title"; + type, TEXT; + scale, 1; + description { + state, "default" 0.0; + rel1 { + to, "pad.title"; + relative, 1.0 1.0; + } + rel2.to, "pad.title"; + min, 488 42; + fixed, 1 1; + align, 0.5 0.0; + text { + font, "TizenSans"; + size, 42; + text, "Preview image"; + } + color, 51 51 51 255; + } + } + part { + name, "pad.viewer"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + rel1 { + to, "title"; + relative, 0.5 1.0; + } + rel2 { + to, "title"; + relative, 0.5 1.0; + } + min, 0 40; + fixed, 1 1; + align, 0.5 0.0; + visible, 0; + } + } + part { + name, PART_PHOTO_VIEWER; + type, SWALLOW; + scale, 1; + description { + state, "default" 0.0; + rel1 { + to, "pad.viewer"; + relative, 1.0 1.0; + } + rel2.to, "pad.viewer"; + min, 488 368; + fixed, 1 1; + align, 0.5 0.0; + } + } + part { + name, "crop.left"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + rel1.to, PART_PHOTO_VIEWER; + rel2 { + to, PART_PHOTO_VIEWER; + relative, 0.0 1.0; + } + min, 58 0; + fixed, 1 0; + align, 0.0 0.5; + color, 0 0 0 102; + } + } + part { + name, "crop.left.line"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + rel1 { + to, "crop.left"; + relative, 1.0 0.0; + } + rel2.to, "crop.left"; + min, 2 0; + fixed, 1 0; + align, 0.0 0.5; + } + } + part { + name, "crop.right"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + rel1 { + to, PART_PHOTO_VIEWER; + relative, 1.0 0.0; + } + rel2.to, PART_PHOTO_VIEWER; + min, 58 0; + fixed, 1 1; + align, 1.0 0.5; + color, 0 0 0 102; + } + } + part { + name, "crop.right.line"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + rel1.to, "crop.right"; + rel2 { + to, "crop.right"; + relative, 0.0 1.0; + } + min, 2 0; + fixed, 1 1; + align, 1.0 0.5; + } + } + part { + name, PART_PHOTO_VIEWER_CANCEL; + type, SWALLOW; + scale, 1; + description { + state, "default" 0.0; + rel1.relative, 0.5 1.0; + rel2.relative, 0.5 1.0; + min, 370 90; + align, 1.0 1.0; + fixed, 1 1; + } + } + part { + name, PART_PHOTO_VIEWER_DONE; + type, SWALLOW; + scale, 1; + description { + state, "default" 0.0; + rel1.relative, 0.5 1.0; + rel2.relative, 0.5 1.0; + min, 370 90; + align, 0.0 1.0; + fixed, 1 1; + } + } } } diff --git a/include/defs.h b/include/defs.h index 8c15615..adcd83f 100644 --- a/include/defs.h +++ b/include/defs.h @@ -46,6 +46,7 @@ #define GRP_USER_EDIT_ICON_LIST_ITEM "group.user.edit.icon.list.item" #define GRP_BAR_ITEM "group.bar.item" #define GRP_PHOTO "group.photo" +#define GRP_PHOTO_VIEWER "group.photo.viewer" #define PART_HOME_MENU_BAR "part.home.menu.bar" #define PART_HOME_UP_ARROW "part.home.up.arrow" @@ -86,6 +87,10 @@ #define PART_BAR_ITEM_LOCK "part.bar.item.lock" #define PART_BAR_ITEM_LOCK_FOCUS "part.bar.item.lock.focus" #define PART_USER_BAR "part.user.bar" +#define PART_PHOTO_LIST "part.photo.list" +#define PART_PHOTO_VIEWER "part.photo.viewer" +#define PART_PHOTO_VIEWER_CANCEL "part.photo.viewer.cancel" +#define PART_PHOTO_VIEWER_DONE "part.photo.viewer.done" #define SIG_SHOW_NAVIGATION "sig.show.navigation" #define SIG_HIDE_NAVIGATION "sig.hide.navigation" -- 2.7.4 From 13391aa33c671a3af10f865d48ff1cba3fe13542 Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Thu, 2 Jul 2015 16:24:29 +0900 Subject: [PATCH 13/16] enable to switch lock button in view_user_edit Change-Id: Ib790886a1d95b7dc388daaf7e51680cc9cd76bb1 Signed-off-by: Soohye Shin --- edje/view/useredit.edc | 33 ++++++++++++--------- {edje/images => images}/btn_switch_off_nor.png | Bin {edje/images => images}/btn_switch_on_nor.png | Bin include/defs.h | 3 ++ src/view/view_user_edit.c | 39 ++++++++++++++++++++++++- 5 files changed, 61 insertions(+), 14 deletions(-) rename {edje/images => images}/btn_switch_off_nor.png (100%) rename {edje/images => images}/btn_switch_on_nor.png (100%) diff --git a/edje/view/useredit.edc b/edje/view/useredit.edc index 4fee726..6732ece 100644 --- a/edje/view/useredit.edc +++ b/edje/view/useredit.edc @@ -853,10 +853,6 @@ group { group { name, GRP_USER_EDIT_SWITCH; - images { - image, "btn_switch_on_nor.png" COMP; - image, "btn_switch_off_nor.png" COMP; - } parts { part { name, "bg"; @@ -865,21 +861,32 @@ group { description { state, "default" 0.0; min, 104 54; - visible, 0; + color, 0 119 246 255; } } part { - name, "icon"; - type, IMAGE; + name, "clip"; + type, RECT; scale, 1; description { state, "default" 0.0; - image.normal, "btn_switch_on_nor.png"; fixed, 1 1; } description { state, "focus" 0.0; - image.normal, "btn_switch_off_nor.png"; + rel1.relative, 0.5 0.5; + rel2.relative, 0.5 0.5; + min, 98 48; + fixed, 1 1; + } + } + part { + name, PART_USER_EDIT_SWITCH; + type, SWALLOW; + scale, 1; + clip_to, "clip"; + description { + state, "default" 0.0; fixed, 1 1; } } @@ -890,16 +897,16 @@ group { signal, SIG_FOCUS; source, SRC_PROG; action, STATE_SET "focus" 0.0; - transition, ACCEL 0.2; - target, "icon"; + transition, LINEAR 0.1; + target, "clip"; } program { name, "sig,unfocus"; signal, SIG_UNFOCUS; source, SRC_PROG; action, STATE_SET "default" 0.0; - transition, ACCEL 0.2; - target, "icon"; + transition, LINEAR 0.1; + target, "clip"; } } } diff --git a/edje/images/btn_switch_off_nor.png b/images/btn_switch_off_nor.png similarity index 100% rename from edje/images/btn_switch_off_nor.png rename to images/btn_switch_off_nor.png diff --git a/edje/images/btn_switch_on_nor.png b/images/btn_switch_on_nor.png similarity index 100% rename from edje/images/btn_switch_on_nor.png rename to images/btn_switch_on_nor.png diff --git a/include/defs.h b/include/defs.h index adcd83f..bea2b0e 100644 --- a/include/defs.h +++ b/include/defs.h @@ -77,6 +77,7 @@ #define PART_USER_EDIT_ICON_LIST "part.user.edit.icon.list" #define PART_USER_EDIT_ICON_LIST_ITEM "part.user.edit.icon.list.item" #define PART_USER_EDIT_ICON_LIST_ITEM_FOCUS "part.user.edit.icon.list.item.focus" +#define PART_USER_EDIT_SWITCH "part.user.edit.switch" #define PART_BAR_ITEM_BG "part.bar.item.bg" #define PART_BAR_ITEM_ICON "part.bar.item.icon" #define PART_BAR_ITEM_ICON_FOCUS "part.bar.item.icon.focus" @@ -120,6 +121,8 @@ #define COLOR_DEFAULT_B 246 #define COLOR_DEFAULT_A 255 +#define IMAGE_SWITCH_ON IMAGEDIR"/btn_switch_on_nor.png" +#define IMAGE_SWITCH_OFF IMAGEDIR"/btn_switch_off_nor.png" #define IMAGE_BADGE IMAGEDIR"/badge_bg.png" #define IMAGE_USER_ADD IMAGEDIR"/btn_user_add_nor.png" #define IMAGE_USER_ADD_FOCUS IMAGEDIR"/btn_user_add_foc.png" diff --git a/src/view/view_user_edit.c b/src/view/view_user_edit.c index 124d5b5..c72a3d9 100644 --- a/src/view/view_user_edit.c +++ b/src/view/view_user_edit.c @@ -332,6 +332,40 @@ static input_handler photo_handler = { .key_down = _photo_key_down }; +static void _load_lock_icon(struct _priv *priv, Evas_Object *ly) +{ + Evas_Object *lock; + const char *file = NULL; + + if (priv->lock) { + elm_image_file_get(priv->lock, &file, NULL); + elm_object_part_content_unset(priv->lock, + PART_USER_EDIT_SWITCH); + evas_object_del(priv->lock); + } + + if (!file || !strcmp(file, IMAGE_SWITCH_OFF)) + file = IMAGE_SWITCH_ON; + else + file = IMAGE_SWITCH_OFF; + lock = utils_add_icon(ly, file, PART_USER_EDIT_SWITCH); + + priv->lock = lock; +} + +static void _lock_key_down(int id, void *data, Evas *e, Evas_Object *obj, + Evas_Event_Key_Down *ev) +{ + if (!strcmp(ev->keyname, KEY_ENTER)) + _load_lock_icon(data, obj); +} + +static input_handler lock_handler = { + .focused = _focused, + .unfocused = _unfocused, + .key_down = _lock_key_down +}; + static Evas_Object *_add_layout(struct _priv *priv) { Evas_Object *ly, *photo, *name, *pin, *account, *lock; @@ -368,13 +402,15 @@ static Evas_Object *_add_layout(struct _priv *priv) if (!lock) goto err; + _load_lock_icon(priv, lock); + + inputmgr_add_callback(lock, 0, &lock_handler, priv); inputmgr_add_callback(photo, 0, &photo_handler, priv); priv->photo = photo; priv->name = name; priv->account = account; priv->pin = pin; - priv->lock = lock; return ly; err: @@ -493,6 +529,7 @@ static void _destroy(void *data) priv = data; inputmgr_remove_callback(priv->photo, &photo_handler); + inputmgr_remove_callback(priv->photo, &lock_handler); inputmgr_remove_callback(priv->done, &done_handler); inputmgr_remove_callback(priv->cancel, &cancel_handler); viewmgr_remove_view(VIEW_PHOTO); -- 2.7.4 From 6fbfb92e5e52bb0886ad9f3c4b51f9faa64cb14b Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Fri, 3 Jul 2015 14:33:16 +0900 Subject: [PATCH 14/16] enable to create/update/delete user in data_user Change-Id: Ib241f6bfe99c931432c10d58dd5f6de1ad157b04 Signed-off-by: Soohye Shin --- include/datamgr.h | 6 ++++ src/data/data_user.c | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++- src/data/datamgr.c | 14 +++++++++ 3 files changed, 99 insertions(+), 1 deletion(-) diff --git a/include/datamgr.h b/include/datamgr.h index 853f14c..b0e39ad 100644 --- a/include/datamgr.h +++ b/include/datamgr.h @@ -25,6 +25,8 @@ enum datamgr_item_select_action { ITEM_SELECT_ACTION_PUSH, ITEM_SELECT_ACTION_POP, ITEM_SELECT_ACTION_SWITCH, + ITEM_SELECT_ACTION_UPDATE, + ITEM_SELECT_ACTION_DELETE, ITEM_SELECT_ACTION_MAX }; @@ -58,6 +60,8 @@ struct data_class { void (*select)(struct datamgr_item *di); Eina_List *(*get_items)(struct datamgr *dm); void (*clear)(struct datamgr *dm); + void (*add)(struct datamgr *dm, const char *title, const char *icon, + const char *parameter); /* It should be added later */ }; @@ -66,5 +70,7 @@ void datamgr_fini(struct datamgr *dm); Eina_List *datamgr_get_items(struct datamgr *dm); void datamgr_select_item(struct datamgr *dm, struct datamgr_item *di); void datamgr_clear_item(struct datamgr *dm); +void datamgr_add_item(struct datamgr *dm, const char *title, const char *icon, + const char *parameter); #endif /* __AIR_HOME_DATAMGR_H__ */ diff --git a/src/data/data_user.c b/src/data/data_user.c index e2ab5c4..1f34e5f 100644 --- a/src/data/data_user.c +++ b/src/data/data_user.c @@ -34,6 +34,7 @@ #define GUM_ATTR_USERTYPE "usertype" #define GUM_ATTR_UID "uid" #define GUM_ATTR_ICON "icon" +#define GUM_ATTR_PASSWORD "secret" #define GUM_LIST_USERTYPE "normal" #define ADDRESS_BUF_MAX 128 @@ -127,6 +128,47 @@ err: return; } +static void _update(struct datamgr_item *di) +{ + GumUser *user; + gboolean r; + + user = gum_user_get_by_name_sync(di->title, FALSE); + if (!user) { + _ERR("failed to get user"); + return; + } + + g_object_set(G_OBJECT(user), GUM_ATTR_PASSWORD, di->parameter, + GUM_ATTR_ICON, di->icon, NULL); + + r = gum_user_update_sync(user); + if (!r) { + _ERR("failed to update user"); + return; + } + + g_object_unref(user); +} + +static void _delete(struct datamgr_item *di) +{ + GumUser *user; + gboolean r; + + user = gum_user_get_by_name_sync(di->title, FALSE); + if (!user) { + _ERR("failed to get user"); + return; + } + + r = gum_user_delete_sync(user, FALSE); + if (!r) + _ERR("failed to delete user"); + + g_object_unref(user); +} + static void _select(struct datamgr_item *di) { if (!di) @@ -143,6 +185,12 @@ static void _select(struct datamgr_item *di) case ITEM_SELECT_ACTION_POP: viewmgr_pop_view(); break; + case ITEM_SELECT_ACTION_UPDATE: + _update(di); + break; + case ITEM_SELECT_ACTION_DELETE: + _delete(di); + break; default: _ERR("Invalid state"); return; @@ -368,11 +416,41 @@ static bool _init(struct datamgr *dm) return _load_user(dm); } +static void _add(struct datamgr *dm, const char *title, const char *icon, + const char *parameter) +{ + GumUser *user; + gboolean r; + + if (!dm || !title || !icon) { + _ERR("Invalid argument"); + return; + } + + user = gum_user_create_sync(FALSE); + if (!user) { + _ERR("failed to get user"); + return; + } + + g_object_set(G_OBJECT(user), GUM_ATTR_NAME, title, + GUM_ATTR_ICON, icon, + GUM_ATTR_PASSWORD, parameter, + GUM_ATTR_USERTYPE, GUM_USERTYPE_NORMAL, NULL); + + r = gum_user_add_sync(user); + if (!r) + _ERR("failed to add user"); + + g_object_unref(user); +} + static struct data_class dclass = { .init = _init, .fini = _fini, .get_items = _get_items, - .select = _select + .select = _select, + .add = _add }; struct data_class *datamgr_user_get_dclass(void) diff --git a/src/data/datamgr.c b/src/data/datamgr.c index ac19f2d..6448db9 100644 --- a/src/data/datamgr.c +++ b/src/data/datamgr.c @@ -98,3 +98,17 @@ void datamgr_clear_item(struct datamgr *dm) dm->dclass->clear(dm); } + +void datamgr_add_item(struct datamgr *dm, const char *title, const char *icon, + const char *parameter) +{ + if (!dm || !dm->dclass) { + _ERR("Invalid argument"); + return; + } + + if (!dm->dclass->add) + return; + + dm->dclass->add(dm, title, icon, parameter); +} -- 2.7.4 From 2b80cae0f78a8ebb4aec466a0cd0e9ffc4d5fa3c Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Tue, 7 Jul 2015 19:33:25 +0900 Subject: [PATCH 15/16] add photo contents layouts - gengrid item edc - no content edc Change-Id: Ifd881bc850e2cb327f4bd586660ca4c22b093e9f Signed-off-by: Soohye Shin --- edje/home-theme.edc | 1 + edje/view/photo.edc | 53 +++++++++++++++++++--- edje/widget/gengrid.edc | 116 ++++++++++++++++++++++++++++++++++++++++++++++++ include/defs.h | 2 + 4 files changed, 167 insertions(+), 5 deletions(-) create mode 100644 edje/widget/gengrid.edc diff --git a/edje/home-theme.edc b/edje/home-theme.edc index bc4bc11..e7ee92e 100644 --- a/edje/home-theme.edc +++ b/edje/home-theme.edc @@ -18,4 +18,5 @@ collections { #include "widget/label.edc" + #include "widget/gengrid.edc" } diff --git a/edje/view/photo.edc b/edje/view/photo.edc index d6e8f97..b52550c 100644 --- a/edje/view/photo.edc +++ b/edje/view/photo.edc @@ -36,8 +36,8 @@ group { scale, 1; description { state, "default" 0.0; - rel1.to, "title"; - rel2.to, "title"; + rel1.to, "up"; + rel2.to, "up"; fixed, 1 1; text { text, "Select photo"; @@ -54,14 +54,14 @@ group { description { state, "default" 0.0; rel1.relative, 0.0 1.0; - min, 0 148; + min, 0 157; fixed, 0 1; align, 0.5 1.0; } } part { - name, PART_PHOTO_LIST; - type, SWALLOW; + name, "bg"; + type, RECT; scale, 1; description { state, "default" 0.0; @@ -74,6 +74,49 @@ group { relative, 1.0 0.0; } fixed, 1 1; + color, 244 244 244 255; + } + } + part { + name, PART_PHOTO_LIST; + type, SWALLOW; + scale, 1; + description { + state, "default" 0.0; + rel1.to, "bg"; + rel2.to, "bg"; + fixed, 1 1; + } + } + } +} + +group { + name, GRP_PHOTO_NO_CONTENT; + parts { + part { + name, "bg"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + fixed, 1 1; + visible, 0; + } + } + part { + name, "text"; + type, TEXT; + scale, 1; + description { + state, "default" 0.0; + fixed, 1 1; + text { + font, "TizenSans"; + size, 38; + text, "No content"; + } + color, 0 0 0 178; } } } diff --git a/edje/widget/gengrid.edc b/edje/widget/gengrid.edc new file mode 100644 index 0000000..df207f5 --- /dev/null +++ b/edje/widget/gengrid.edc @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +group { + name, "elm/gengrid/item/gengrid_item/default"; + data.item, "contents" "elm.swallow.icon"; + parts { + part { + name, "top.pad"; + type, SPACER; + scale, 1; + description { + state, "default" 0.0; + rel2.relative, 0.0 0.0; + align, 0.0 0.0; + min, 3 3; + fixed, 1 1; + } + } + part { + name, "bottom.pad"; + type, SPACER; + scale, 1; + description { + state, "default" 0.0; + rel1.relative, 1.0 1.0; + align, 1.0 1.0; + min, 3 3; + fixed, 1 1; + } + } + part { + name, "base"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + rel1 { + to, "top.pad"; + relative, 1.0 1.0; + } + rel2 { + to, "bottom.pad"; + relative, 0.0 0.0; + } + color, 0 119 246 255; + fixed, 1 1; + } + } + part { + name, "clip"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + rel1.to, "base"; + rel2.to, "base"; + fixed, 1 1; + } + description { + state, "focus" 0.0; + rel1 { + to, "base"; + relative, 0.5 0.5; + } + rel2 { + to, "base"; + relative, 0.5 0.5; + } + min, 188 188; + fixed, 1 1; + } + } + part { + name, "elm.swallow.icon"; + type, SWALLOW; + scale, 1; + clip_to, "clip"; + description { + state, "default" 0.0; + fixed, 1 1; + } + } + } + programs { + program { + name, "sig,focus"; + signal, SIG_FOCUS; + source, SRC_PROG; + action, STATE_SET "focus" 0.0; + transition, LINEAR 0.1; + target, "clip"; + } + program { + name, "sig,unfocus"; + signal, SIG_UNFOCUS; + source, SRC_PROG; + action, STATE_SET "default" 0.0; + transition, LINEAR 0.1; + target, "clip"; + } + } +} diff --git a/include/defs.h b/include/defs.h index bea2b0e..c1fc975 100644 --- a/include/defs.h +++ b/include/defs.h @@ -47,6 +47,7 @@ #define GRP_BAR_ITEM "group.bar.item" #define GRP_PHOTO "group.photo" #define GRP_PHOTO_VIEWER "group.photo.viewer" +#define GRP_PHOTO_NO_CONTENT "group.photo.no.content" #define PART_HOME_MENU_BAR "part.home.menu.bar" #define PART_HOME_UP_ARROW "part.home.up.arrow" @@ -115,6 +116,7 @@ #define STYLE_LABEL_RECENT_TITLE "slide_recent_title" #define STYLE_LABEL_RECENT_SUBTITLE "slide_recent_subtitle" #define STYLE_INPUT "input.field" +#define STYLE_GENGRID_ITEM "gengrid_item" #define COLOR_DEFAULT_R 0 #define COLOR_DEFAULT_G 119 -- 2.7.4 From 97227b7e8f2d478eb2c8f9ad56a9fcf8b8e1bb5f Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Wed, 8 Jul 2015 12:53:41 +0900 Subject: [PATCH 16/16] draw photo contents for no contents layout or gengrid Change-Id: Ifb1e4459ae96e8dfc8722ee7311436f7cf6c4c7e Signed-off-by: Soohye Shin --- CMakeLists.txt | 1 + include/data_photo.h | 24 ++++++++ src/data/data_photo.c | 68 ++++++++++++++++++++ src/view/view_photo.c | 167 +++++++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 259 insertions(+), 1 deletion(-) create mode 100644 include/data_photo.h create mode 100644 src/data/data_photo.c diff --git a/CMakeLists.txt b/CMakeLists.txt index f58ef70..e7a5be0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,6 +47,7 @@ SET(SRCS src/data/data_home.c src/data/data_recent.c src/data/data_user.c + src/data/data_photo.c src/view/view_photo.c src/view/view_user_edit.c src/view/view_user.c diff --git a/include/data_photo.h b/include/data_photo.h new file mode 100644 index 0000000..4fcf256 --- /dev/null +++ b/include/data_photo.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __AIR_HOME_DATA_PHOTO_H__ +#define __AIR_HOME_DATA_PHOTO_H__ + +#include + +struct data_class *datamgr_photo_get_dclass(void); + +#endif /* __AIR_HOME_DATA_PHOTO_H__ */ diff --git a/src/data/data_photo.c b/src/data/data_photo.c new file mode 100644 index 0000000..6d704db --- /dev/null +++ b/src/data/data_photo.c @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +#include "data_photo.h" +#include "datamgr.h" + +static Eina_List *_get_items(struct datamgr *dm) +{ + if (!dm) { + _ERR("Invalid argument"); + return NULL; + } + + return dm->list; +} + +static bool _init(struct datamgr *dm) +{ + if (!dm) { + _ERR("Invalid argument"); + return false; + } + + return true; +} + +static void _fini(struct datamgr *dm) +{ + struct datamgr_item *di; + + if (!dm) { + _ERR("Invalid argument"); + return; + } + + EINA_LIST_FREE(dm->list, di) { + free(di->icon); + + free(di); + } +} + +static struct data_class dclass = { + .init = _init, + .fini = _fini, + .get_items = _get_items +}; + +struct data_class *datamgr_photo_get_dclass(void) +{ + return &dclass; +} diff --git a/src/view/view_photo.c b/src/view/view_photo.c index e3a0319..fa4c64d 100644 --- a/src/view/view_photo.c +++ b/src/view/view_photo.c @@ -22,16 +22,25 @@ #include "defs.h" #include "view_photo.h" +#include "data_photo.h" #include "utils.h" +#define GENGRID_ITEM_SIZE 200 + struct _priv { Evas_Object *win; Evas_Object *base; + Evas_Object *grid; + Evas_Object *ly; + Elm_Gengrid_Item_Class *grid_ic; + + struct datamgr *dm; }; static Evas_Object *_create(Evas_Object *win, void *data) { struct _priv *priv; + struct datamgr *dm; Evas_Object *base; if (!win) { @@ -45,9 +54,17 @@ static Evas_Object *_create(Evas_Object *win, void *data) return NULL; } + dm = datamgr_init(datamgr_photo_get_dclass(), VIEW_PHOTO); + if (!dm) { + _ERR("failed to initialize datamgr"); + free(priv); + return NULL; + } + base = utils_add_layout(win, GRP_PHOTO, false, NULL); if (!base) { _ERR("failed to create base"); + datamgr_fini(dm); free(priv); return NULL; } @@ -57,12 +74,146 @@ static Evas_Object *_create(Evas_Object *win, void *data) priv->win = win; priv->base = base; + priv->dm = dm; viewmgr_set_view_data(VIEW_PHOTO, priv); return base; } +static void _ly_key_down(int id, void *data, Evas *e, Evas_Object *obj, + Evas_Event_Key_Down *ev) +{ + if (!strcmp(ev->keyname, KEY_BACK)) { + viewmgr_pop_view(); + } +} + +static input_handler ly_handler = { + .key_down = _ly_key_down +}; + +static void _load_no_content(struct _priv *priv) +{ + Evas_Object *ly; + + ly = utils_add_layout(priv->base, GRP_PHOTO_NO_CONTENT, true, + PART_PHOTO_LIST); + if (!ly) { + _ERR("failed to create layout"); + return; + } + evas_object_show(ly); + inputmgr_add_callback(ly, 0, &ly_handler, NULL); + + priv->ly = ly; +} +static void _grid_key_down(int id, void *data, Evas *e, Evas_Object *obj, + Evas_Event_Key_Down *ev) +{ + if (!strcmp(ev->keyname, KEY_BACK)) { + viewmgr_pop_view(); + } + /* It should be implemented later */ +} + +static input_handler grid_handler = { + .key_down = _grid_key_down +}; + +static Evas_Object *_add_photo_grid(struct _priv *priv) +{ + Evas_Object *grid; + + grid = elm_gengrid_add(priv->base); + if (!grid) { + _ERR("failed to add gend grid"); + return NULL; + } + evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + elm_object_part_content_set(priv->base, PART_PHOTO_LIST, grid); + elm_gengrid_select_mode_set(grid, ELM_OBJECT_SELECT_MODE_ALWAYS); + elm_gengrid_multi_select_set(grid, EINA_FALSE); + elm_gengrid_item_size_set(grid, + GENGRID_ITEM_SIZE * elm_config_scale_get(), + GENGRID_ITEM_SIZE * elm_config_scale_get()); + elm_gengrid_horizontal_set(grid, EINA_TRUE); + elm_scroller_policy_set(grid, ELM_SCROLLER_POLICY_OFF, + ELM_SCROLLER_POLICY_OFF); + elm_gengrid_align_set(grid, 0.0, 0.5); + evas_object_show(grid); + + inputmgr_add_callback(grid, 0, &grid_handler, priv); + + return grid; +} + +static Evas_Object *_get_grid_content(void *data, Evas_Object *obj, + const char *part) +{ + /* It should be implemented later */ + + return NULL; +} + +static void _del_content(void *data, Evas_Object *obj) +{ + /* It should be implemented later */ +} + +static bool _add_photo_item(struct _priv *priv, Evas_Object *grid) +{ + Elm_Gengrid_Item_Class *ic; + + elm_gengrid_clear(grid); + + ic = elm_gengrid_item_class_new(); + if (!ic) { + _ERR("failed to add gengrid item class"); + return false; + } + + ic->item_style = STYLE_GENGRID_ITEM; + ic->func.text_get = NULL; + ic->func.content_get = _get_grid_content; + ic->func.state_get = NULL; + ic->func.del = _del_content; + + /* It should be implemented later */ + + priv->grid_ic = ic; + + return true; +} + +static void _load_photo(struct _priv *priv) +{ + Eina_List *list; + Evas_Object *grid; + + list = datamgr_get_items(priv->dm); + if (!list) { + _load_no_content(priv); + return; + } + + grid = _add_photo_grid(priv); + if (!grid) { + _ERR("failed to add grid"); + return; + } + + if (!_add_photo_item(priv, grid)) { + _ERR("failed to add photo item"); + evas_object_del(grid); + _load_no_content(priv); + return; + } + + priv->grid = grid; +} + static void _show(void *data) { struct _priv *priv; @@ -75,6 +226,11 @@ static void _show(void *data) priv = data; evas_object_show(priv->base); + + _load_photo(priv); + + if (priv->ly) + elm_object_focus_set(priv->ly, EINA_TRUE); } static void _hide(void *data) @@ -87,6 +243,16 @@ static void _hide(void *data) } priv = data; + if (priv->ly) { + inputmgr_remove_callback(priv->ly, &ly_handler); + evas_object_del(priv->ly); + priv->ly = NULL; + } else { + elm_gengrid_item_class_free(priv->grid_ic); + inputmgr_remove_callback(priv->grid, &grid_handler); + evas_object_del(priv->grid); + priv->grid = NULL; + } evas_object_hide(priv->base); } @@ -118,4 +284,3 @@ view_class *view_photo_get_vclass(void) { return &vclass; } - -- 2.7.4