From 19358994760c9e241dc4399b77cc735b2945e9ab Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Sat, 8 Aug 2015 13:18:18 +0900 Subject: [PATCH 01/16] remove show done signal Change-Id: Ia83c8b5db3eaf3ebc7dedb05eb521732561f379d Signed-off-by: Soohye Shin --- edje/view/home.edc | 5 ----- edje/view/user.edc | 5 ----- src/view/view_home.c | 32 +++++++++++++++++--------------- src/view/view_user.c | 39 +++++++++++++++++++++------------------ 4 files changed, 38 insertions(+), 43 deletions(-) diff --git a/edje/view/home.edc b/edje/view/home.edc index 00691df..31e80f9 100644 --- a/edje/view/home.edc +++ b/edje/view/home.edc @@ -168,11 +168,6 @@ group { transition, TRANSITION_DECEL; target, "clip"; target, PART_HOME_MENU_BAR; - after, "sig,show,done"; - } - program { - name, "sig,show,done"; - action, SIGNAL_EMIT SIG_SHOW_DONE SRC_EDJE; } program { name, "sig,hide"; diff --git a/edje/view/user.edc b/edje/view/user.edc index 5e6f7d6..d109b5e 100644 --- a/edje/view/user.edc +++ b/edje/view/user.edc @@ -139,11 +139,6 @@ group { target, "clip"; target, PART_USER_BAR; target, "text"; - after, "sig,show,done"; - } - program { - name, "sig,show,done"; - action, SIGNAL_EMIT SIG_SHOW_DONE SRC_EDJE; } program { name, "sig,hide"; diff --git a/src/view/view_home.c b/src/view/view_home.c index e65161d..6052220 100644 --- a/src/view/view_home.c +++ b/src/view/view_home.c @@ -298,7 +298,6 @@ static bool _add_home_menu(struct _priv *priv, Evas_Object *base) } elm_object_content_set(scr, box); elm_object_part_content_set(base, PART_HOME_MENU_BAR, scr); - priv->scr = scr; list = datamgr_get_items(priv->dm); if (!list) { @@ -315,6 +314,13 @@ static bool _add_home_menu(struct _priv *priv, Evas_Object *base) priv->list = eina_list_append(priv->list, bi); } + if (!priv->list) { + _ERR("failed to pack item"); + return false; + } + + priv->scr = scr; + return true; } @@ -326,17 +332,6 @@ static void _hide_done(void *data, Evas_Object *obj, const char *emission, datamgr_select_item(priv->dm, priv->foc->di); } -static void _show_done(void *data, Evas_Object *obj, const char *emission, - const char *source) -{ - struct _priv *priv = data; - - if (!priv->foc) - priv->foc = eina_list_data_get(priv->list); - - elm_object_focus_set(priv->foc->eo, EINA_TRUE); -} - static Evas_Object *_create(Evas_Object *win, void *data) { struct _priv *priv; @@ -382,8 +377,6 @@ static Evas_Object *_create(Evas_Object *win, void *data) viewmgr_set_view_data(VIEW_HOME, priv); elm_object_signal_callback_add(base, SIG_HIDE_DONE, SRC_EDJE, _hide_done, priv); - elm_object_signal_callback_add(base, SIG_SHOW_DONE, SRC_EDJE, - _show_done, priv); return base; } @@ -399,11 +392,19 @@ static void _show(void *data) priv = data; - _add_home_menu(priv, priv->base); + if (!_add_home_menu(priv, priv->base)) { + _ERR("failed to add home"); + return; + } evas_object_show(priv->base); elm_object_signal_emit(priv->base, SIG_SHOW_NAVIGATION, SRC_PROG); elm_object_signal_emit(priv->base, SIG_SHOW, SRC_PROG); + + if (!priv->foc) + priv->foc = eina_list_data_get(priv->list); + + elm_object_focus_set(priv->foc->eo, EINA_TRUE); } static void _unload_home(struct _priv *priv) @@ -417,6 +418,7 @@ static void _unload_home(struct _priv *priv) } evas_object_del(priv->scr); + priv->scr = NULL; priv->foc = NULL; priv->list = NULL; } diff --git a/src/view/view_user.c b/src/view/view_user.c index 4ff15ff..7ccbff8 100644 --- a/src/view/view_user.c +++ b/src/view/view_user.c @@ -235,17 +235,6 @@ static void _hide_done(void *data, Evas_Object *obj, const char *emission, viewmgr_pop_view(); } -static void _show_done(void *data, Evas_Object *obj, const char *emission, - const char *source) -{ - struct _priv *priv = data; - - if (!priv->foc) - priv->foc = eina_list_data_get(priv->list); - - elm_object_focus_set(priv->foc->eo, EINA_TRUE); -} - static Evas_Object *_create(Evas_Object *win, void *data) { struct _priv *priv; @@ -290,8 +279,7 @@ static Evas_Object *_create(Evas_Object *win, void *data) inputmgr_add_callback(base, INPUT_HANDLER_TYPE_BASE, &handler, priv); elm_object_signal_callback_add(base, SIG_HIDE_DONE, SRC_EDJE, _hide_done, NULL); - elm_object_signal_callback_add(base, SIG_SHOW_DONE, SRC_EDJE, - _show_done, priv); + return base; } @@ -407,7 +395,7 @@ err: return NULL; } -static void _add_user(struct _priv *priv) +static bool _add_user(struct _priv *priv) { Eina_List *list, *l; Evas_Object *scr, *box; @@ -418,14 +406,14 @@ static void _add_user(struct _priv *priv) scr = utils_add_scroller(priv->base); if (!scr) { _ERR("failed to add scroller"); - return; + return false; } box = utils_add_box(scr, true); if (!box) { _ERR("failed to add box"); evas_object_del(scr); - return; + return false; } elm_object_content_set(scr, box); elm_object_part_content_set(priv->base, PART_USER_BAR, scr); @@ -436,7 +424,7 @@ static void _add_user(struct _priv *priv) if (!list) { _ERR("failed to load list"); evas_object_del(scr); - return; + return false; } i = 0; @@ -452,8 +440,15 @@ static void _add_user(struct _priv *priv) priv->list = eina_list_append(priv->list, bi); } + if (!priv->list) { + _ERR("failed to pack item"); + return false; + } + priv->scr = scr; priv->box = box; + + return true; } static void _show(void *data) @@ -470,7 +465,15 @@ static void _show(void *data) evas_object_show(priv->base); elm_object_signal_emit(priv->base, SIG_SHOW, SRC_PROG); - _add_user(priv); + if (!_add_user(priv)) { + _ERR("failed to add user"); + return; + } + + if (!priv->foc) + priv->foc = eina_list_data_get(priv->list); + + elm_object_focus_set(priv->foc->eo, EINA_TRUE); } static void _unload_user(struct _priv *priv) -- 2.7.4 From 081c6625c290db1e65fa8015bad57e08f1985044 Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Sat, 8 Aug 2015 15:03:41 +0900 Subject: [PATCH 02/16] set title of recent gallery item to media content time Change-Id: I07b477c253b6c71884a9be4a29628d9dd320779e Signed-off-by: Soohye Shin --- src/data/data_recent.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/data/data_recent.c b/src/data/data_recent.c index 5cce6cb..a540a0f 100644 --- a/src/data/data_recent.c +++ b/src/data/data_recent.c @@ -25,6 +25,7 @@ #include #include #include +#include #include "data_recent.h" #include "datamgr.h" @@ -188,6 +189,14 @@ static void _channel_list_foreach(gpointer data, gpointer user_data) dm->list = eina_list_append(dm->list, di); } +static void _set_up_string(char *str) +{ + while (*str) { + *str = toupper(*str); + str++; + } +} + static void _gallery_list_foreach(gpointer data, gpointer user_data) { struct recent_data *rdata; @@ -197,6 +206,7 @@ static void _gallery_list_foreach(gpointer data, gpointer user_data) app_media_info *aminfo; media_info_h media; int r; + char buf[BUF_TITLE_MAX], day[BUF_TITLE_MAX], date[BUF_TITLE_MAX]; if (!data || !user_data) { _ERR("Invalid arguement"); @@ -227,7 +237,12 @@ static void _gallery_list_foreach(gpointer data, gpointer user_data) return; } - di = _new_datamgr_item(aminfo->title, aminfo->thumbnail_path, NULL, + strftime(date, sizeof(date), "%d %b, %Y", aminfo->content_time); + strftime(day, sizeof(day), "%a", aminfo->content_time); + _set_up_string(day); + snprintf(buf, sizeof(buf), "%s, %s", day, date); + + di = _new_datamgr_item(buf, aminfo->thumbnail_path, NULL, PACKAGE_MEDIAHUB, KEY_MEDIA, rdata->id, IMAGE_RECENT_ICON_GALLERY, 1, rdata->time); if (di) -- 2.7.4 From 88226d8b80f0be8498556903ea91cc8100351fbb Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Sat, 8 Aug 2015 16:48:57 +0900 Subject: [PATCH 03/16] add divider between home and user items Change-Id: I2069322ab264a40ad36716098a4aa7479fbf3bf2 Signed-off-by: Soohye Shin --- edje/view/baritem.edc | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/edje/view/baritem.edc b/edje/view/baritem.edc index 32e8f0d..5ab27ea 100644 --- a/edje/view/baritem.edc +++ b/edje/view/baritem.edc @@ -47,6 +47,46 @@ group { } } part { + name, "pad.divider"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + min, 0 22; + rel1 { + to, "pad"; + relative, 1.0 0.0; + } + rel2 { + to, "pad"; + relative, 1.0 0.0; + } + fixed, 1 1; + align, 1.0 0.0; + visible, 0; + } + } + part { + name, "divider"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + min, 1 114; + rel1 { + to, "pad.divider"; + relative, 1.0 1.0; + } + rel2 { + to, "pad.divider"; + relative, 1.0 1.0; + } + align, 1.0 0.0; + fixed, 1 1; + color, 225 224 224 255; + } + } + part { name, "clip"; type, RECT; description { -- 2.7.4 From 5161ebf9b923cf994bbb58e72ff85d5686cb54ce Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Sat, 8 Aug 2015 17:26:16 +0900 Subject: [PATCH 04/16] add user by pressing enter key when focus be in the name entry Change-Id: I9b2ec2e61bf8c8758978d4552585764e438cf588 Signed-off-by: Soohye Shin --- src/view/view_user_edit.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/view/view_user_edit.c b/src/view/view_user_edit.c index 6c4ca4e..4d47e10 100644 --- a/src/view/view_user_edit.c +++ b/src/view/view_user_edit.c @@ -554,6 +554,7 @@ static void _select(struct _priv *priv, int id, Evas_Object *obj) case INPUT_HANDLER_TYPE_EO: _select_eo(priv, obj); break; + case INPUT_HANDLER_TYPE_ENTRY: case INPUT_HANDLER_TYPE_BTN_DONE: _select_btn_done(priv); break; -- 2.7.4 From 7121838587d266f86b3f12346221855a60bcea3d Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Mon, 10 Aug 2015 14:00:21 +0900 Subject: [PATCH 05/16] do not resize recent image when size is less then 100px Change-Id: I5f56b8785ddc950913789568c210f5ed027a21d4 Signed-off-by: Soohye Shin --- src/view/view_recent.c | 43 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/src/view/view_recent.c b/src/view/view_recent.c index 5319f3a..01c55dc 100644 --- a/src/view/view_recent.c +++ b/src/view/view_recent.c @@ -29,6 +29,7 @@ #define MESSAGE_NO_CONTENTS "No Contents" #define PADDING_BOX 26 +#define IMAGE_MAX_SIZE 100 enum input_handler_type { INPUT_HANDLER_TYPE_EO, @@ -307,6 +308,36 @@ static void _set_item_bg(struct color_data bg, Evas_Object *eo, elm_object_part_content_set(eo, part, rect); } +static Evas_Object *_set_thumb(Evas_Object *eo, const char *file, + const char *part) +{ + Evas_Object *image; + int w, h; + + image = elm_image_add(eo); + if (!image) { + _ERR("failed to add image"); + return NULL; + } + + if (!elm_image_file_set(image, file, NULL)) { + if (!elm_image_file_set(image, IMAGE_RECENT_THUMB_APP, NULL)) { + _ERR("failed to set image file"); + evas_object_del(image); + return NULL; + } + } + elm_image_object_size_get(image, &w, &h); + if (w < IMAGE_MAX_SIZE && h < IMAGE_MAX_SIZE) + elm_image_resizable_set(image, EINA_FALSE, EINA_FALSE); + else + elm_image_fill_outside_set(image, EINA_TRUE); + + elm_object_part_content_set(eo, part, image); + + return image; +} + static struct _bar_item *_pack_item(struct _priv *priv, Evas_Object *box, struct datamgr_item *di) { @@ -354,16 +385,12 @@ static struct _bar_item *_pack_item(struct _priv *priv, Evas_Object *box, } if (di->icon) { - thumb = utils_add_icon(eo, di->icon, PART_RECENT_THUMBNAIL); + thumb = _set_thumb(eo, di->icon, PART_RECENT_THUMBNAIL); if (!thumb) { _ERR("failed to add thumb"); - thumb = utils_add_icon(eo, IMAGE_RECENT_THUMB_APP, - PART_RECENT_THUMBNAIL); - if (!thumb) { - evas_object_del(eo); - free(bi); - return NULL; - } + evas_object_del(eo); + free(bi); + return NULL; } } -- 2.7.4 From 1362eaa6fd3e0ec3652a51ab0a068cb8169e9f69 Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Mon, 10 Aug 2015 14:37:14 +0900 Subject: [PATCH 06/16] change API to pkgmgrinfo_appinfo_get_usr_appinfo Change-Id: I262ce1093383fa17488b3600cc87e14ec919c18a Signed-off-by: Soohye Shin --- src/data/data_recent.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/data_recent.c b/src/data/data_recent.c index a540a0f..38489a7 100644 --- a/src/data/data_recent.c +++ b/src/data/data_recent.c @@ -87,7 +87,7 @@ static void _app_list_foreach(gpointer data, gpointer user_data) if (!strcmp(rdata->id, PACKAGE_BROWSER)) return; - r = pkgmgrinfo_appinfo_get_appinfo(rdata->id, &handle); + r = pkgmgrinfo_appinfo_get_usr_appinfo(rdata->id, getuid(), &handle); if (r != PMINFO_R_OK) { _ERR("failed to get app info"); return; -- 2.7.4 From 835130e1f89bc1e331de7cd09d23e08df58eef30 Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Mon, 10 Aug 2015 18:45:06 +0900 Subject: [PATCH 07/16] change recent animation speed to DECEL 0.5 Change-Id: Ie2d47523c7ff11d9cc33fd331573ecf738ecdebe Signed-off-by: Soohye Shin --- edje/view/recent.edc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/edje/view/recent.edc b/edje/view/recent.edc index 5437578..d4a7ca5 100644 --- a/edje/view/recent.edc +++ b/edje/view/recent.edc @@ -230,7 +230,7 @@ group { signal, SIG_SHOW; source, SRC_PROG; action, STATE_SET "show" 0.0; - transition, TRANSITION_DECEL; + transition, DECEL 0.5; target, "clip"; target, "guide"; after, "sig,show,done"; @@ -244,7 +244,7 @@ group { signal, SIG_HIDE; source, SRC_PROG; action, STATE_SET "default" 0.0; - transition, TRANSITION_DECEL; + transition, DECEL 0.5; target, "clip"; target, "guide"; after, "sig,hide,done"; -- 2.7.4 From fccbc8029cfc9a1587269f1ae16b911819376d74 Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Mon, 10 Aug 2015 19:13:14 +0900 Subject: [PATCH 08/16] bug fix - assigning address of local auto-variable to a function parameter Change-Id: I29dc07ca45250611b9d77ef86c0a6aa484414ae3 Signed-off-by: Soohye Shin --- src/data/data_recent.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/data/data_recent.c b/src/data/data_recent.c index 38489a7..dc7b922 100644 --- a/src/data/data_recent.c +++ b/src/data/data_recent.c @@ -252,9 +252,8 @@ static void _gallery_list_foreach(gpointer data, gpointer user_data) media_info_destroy(media); } -static void _get_duration(int duration, char **str) +static void _get_duration(int duration, char *str, size_t length) { - char buf[BUF_TITLE_MAX]; int h, m, s, sec; sec = duration / 1000; @@ -263,11 +262,9 @@ static void _get_duration(int duration, char **str) s = sec % 60; if (h) - snprintf(buf, sizeof(buf), "%d:%02d:%02d", h, m, s); + snprintf(str, length, "%d:%02d:%02d", h, m, s); else - snprintf(buf, sizeof(buf), "%d:%02d", m, s); - - *str = buf; + snprintf(str, length, "%d:%02d", m, s); } static void _movie_list_foreach(gpointer data, gpointer user_data) @@ -279,7 +276,7 @@ static void _movie_list_foreach(gpointer data, gpointer user_data) app_media_info *aminfo; media_info_h media; int r; - char *dur = NULL; + char dur[BUF_TITLE_MAX]; if (!data || !user_data) { _ERR("Invalid arguement"); @@ -311,10 +308,10 @@ static void _movie_list_foreach(gpointer data, gpointer user_data) } if (aminfo->video && aminfo->video->duration) - _get_duration(aminfo->video->duration, &dur); + _get_duration(aminfo->video->duration, dur, sizeof(dur)); di = _new_datamgr_item(aminfo->title, aminfo->thumbnail_path, - dur ? dur : NULL, PACKAGE_MEDIAHUB, KEY_MEDIA, + dur, PACKAGE_MEDIAHUB, KEY_MEDIA, rdata->id, IMAGE_RECENT_ICON_MOVIE, 1, rdata->time); if (di) dm->list = eina_list_append(dm->list, di); -- 2.7.4 From 6b1963a3b080aa5314b7dfa01c60131f6d5627a0 Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Mon, 10 Aug 2015 19:52:28 +0900 Subject: [PATCH 09/16] bug fix - checkpatch error Change-Id: I5c1eb1dd0e0e1c61af3bf18471be7f9711f19339 Signed-off-by: Soohye Shin --- src/data/data_recent.c | 2 +- src/data/data_user.c | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/data/data_recent.c b/src/data/data_recent.c index dc7b922..15b351c 100644 --- a/src/data/data_recent.c +++ b/src/data/data_recent.c @@ -60,7 +60,7 @@ static struct datamgr_item *_new_datamgr_item(char *title, char *thumb, di->subtitle = strdup(subtitle); if (key && value) { di->key = strdup(key); - di->value= strdup(value); + di->value = strdup(value); } return di; diff --git a/src/data/data_user.c b/src/data/data_user.c index c4310b2..6ecbd10 100644 --- a/src/data/data_user.c +++ b/src/data/data_user.c @@ -119,7 +119,6 @@ static void _switch(char *name, char *password) err: g_object_unref(conn); g_error_free(error); - return; } static void _update(struct datamgr_item *di) -- 2.7.4 From 83bfc1c56795101e099bf4e90618dd185f9a9670 Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Mon, 10 Aug 2015 21:16:56 +0900 Subject: [PATCH 10/16] set focus to done button by pressing enter key when focus be in the name entry Change-Id: I64b242803a0cad15bf5d465bca71113be32ad0f4 Signed-off-by: Soohye Shin --- src/view/view_user_edit.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/view/view_user_edit.c b/src/view/view_user_edit.c index 4d47e10..d3c067c 100644 --- a/src/view/view_user_edit.c +++ b/src/view/view_user_edit.c @@ -555,6 +555,8 @@ static void _select(struct _priv *priv, int id, Evas_Object *obj) _select_eo(priv, obj); break; case INPUT_HANDLER_TYPE_ENTRY: + elm_object_focus_set(priv->done, EINA_TRUE); + break; case INPUT_HANDLER_TYPE_BTN_DONE: _select_btn_done(priv); break; @@ -756,6 +758,7 @@ static void _destroy(void *data) inputmgr_remove_callback(priv->photo, &handler); inputmgr_remove_callback(priv->done, &handler); inputmgr_remove_callback(priv->cancel, &handler); + inputmgr_remove_callback(priv->name, &handler); viewmgr_remove_view(VIEW_PHOTO); evas_object_del(priv->base); free(priv); -- 2.7.4 From b986190fd975bcdf0a692622426a02549be5ef9e Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Tue, 11 Aug 2015 15:31:17 +0900 Subject: [PATCH 11/16] change speed of recent show/hide animation to DECEL 0.3 Change-Id: I09660e7adc90ee391047a49f564c28e946a3f21a Signed-off-by: Soohye Shin --- edje/view/recent.edc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/edje/view/recent.edc b/edje/view/recent.edc index d4a7ca5..bff28d6 100644 --- a/edje/view/recent.edc +++ b/edje/view/recent.edc @@ -230,7 +230,7 @@ group { signal, SIG_SHOW; source, SRC_PROG; action, STATE_SET "show" 0.0; - transition, DECEL 0.5; + transition, DECEL 0.3; target, "clip"; target, "guide"; after, "sig,show,done"; @@ -244,7 +244,7 @@ group { signal, SIG_HIDE; source, SRC_PROG; action, STATE_SET "default" 0.0; - transition, DECEL 0.5; + transition, DECEL 0.3; target, "clip"; target, "guide"; after, "sig,hide,done"; -- 2.7.4 From a335c66d5dc2a30671384676e172124c4885aff9 Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Wed, 12 Aug 2015 14:54:04 +0900 Subject: [PATCH 12/16] set different color to focused object bg Change-Id: I154feeb00eac7f3ef0505fa8f3eeacd30dd75f78 Signed-off-by: Soohye Shin --- src/view/view_home.c | 12 ++++++++++-- src/view/view_user.c | 11 +++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/view/view_home.c b/src/view/view_home.c index 6052220..676ea45 100644 --- a/src/view/view_home.c +++ b/src/view/view_home.c @@ -19,6 +19,7 @@ #include #include #include +#include #include "defs.h" #include "view.h" @@ -26,6 +27,8 @@ #include "datamgr.h" #include "utils.h" +#define BUF_MAX_UID 32 + enum input_handler_type { INPUT_HANDLER_TYPE_EO, INPUT_HANDLER_TYPE_DOWN @@ -211,7 +214,9 @@ static struct bar_item *_pack_bar_item(struct _priv *priv, Evas_Object *box, struct datamgr_item *di) { struct bar_item *bi; + struct color_data bright_bg; Evas_Object *eo, *ic, *focus_ic, *lbl, *focus_lbl, *bg; + char buf[BUF_MAX_UID] = {0}; if (!priv || !box || !di) { _ERR("Invalid argument"); @@ -252,8 +257,11 @@ static struct bar_item *_pack_bar_item(struct _priv *priv, Evas_Object *box, if (!focus_lbl) goto err; - bg = utils_add_bg(eo, COLOR_DEFAULT_R, COLOR_DEFAULT_G, COLOR_DEFAULT_B, - COLOR_DEFAULT_A, PART_BAR_ITEM_BG); + /* FIXMD: After multi user demo, it should be changed to default color */ + snprintf(buf, sizeof(buf), "%d", getuid()); + app_contents_get_color(buf, &bright_bg, NULL); + bg = utils_add_bg(eo, bright_bg.r, bright_bg.g, bright_bg.b, + bright_bg.a, PART_BAR_ITEM_BG); if (!bg) goto err; diff --git a/src/view/view_user.c b/src/view/view_user.c index 7ccbff8..70b84cc 100644 --- a/src/view/view_user.c +++ b/src/view/view_user.c @@ -18,6 +18,7 @@ #include #include #include +#include #include "defs.h" #include "view.h" @@ -25,6 +26,7 @@ #include "datamgr.h" #include "utils.h" +#define BUF_MAX_UID 32 #define MESSAGE_POPUP_CONTENT "Can not add users more than 8.
If you want to add another user, delete one of users" enum input_handler_type { @@ -321,7 +323,9 @@ static struct _bar_item *_pack_bar_item(struct _priv *priv, Evas_Object *box, struct datamgr_item *di) { struct _bar_item *bi; + struct color_data bright_bg; Evas_Object *eo, *ic, *focus_ic, *lbl, *focus_lbl, *bg; + char buf[BUF_MAX_UID] = {0}; bi = calloc(1, sizeof(*bi)); if (!bi) { @@ -370,8 +374,11 @@ static struct _bar_item *_pack_bar_item(struct _priv *priv, Evas_Object *box, if (!strcmp(di->icon, di->focus_icon)) elm_object_signal_emit(eo, SIG_SHOW_MASK, SRC_PROG); - bg = utils_add_bg(eo, COLOR_DEFAULT_R, COLOR_DEFAULT_G, COLOR_DEFAULT_B, - COLOR_DEFAULT_A, PART_BAR_ITEM_BG); + /* FIXME: After multi user demo, it should be changed to default color */ + snprintf(buf, sizeof(buf), "%d", getuid()); + app_contents_get_color(buf, &bright_bg, NULL); + bg = utils_add_bg(eo, bright_bg.r, bright_bg.g, bright_bg.b, + bright_bg.a, PART_BAR_ITEM_BG); if (!bg) goto err; -- 2.7.4 From 651fc515e335dc62d18e3d3040611c865cd0d692 Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Thu, 13 Aug 2015 10:56:57 +0900 Subject: [PATCH 13/16] set different color to mask Change-Id: I22b72e674f689ea7ddb4864d4eac4154b5e4e947 Signed-off-by: Soohye Shin --- edje/images/mask_user_foc.png | Bin 0 -> 662 bytes edje/view/baritem.edc | 43 ++++++------------------------ {edje/images => images}/mask_user_nor.png | Bin include/defs.h | 2 ++ src/view/view_home.c | 12 ++++++--- src/view/view_user.c | 9 ++++++- 6 files changed, 26 insertions(+), 40 deletions(-) create mode 100644 edje/images/mask_user_foc.png rename {edje/images => images}/mask_user_nor.png (100%) diff --git a/edje/images/mask_user_foc.png b/edje/images/mask_user_foc.png new file mode 100644 index 0000000000000000000000000000000000000000..5d165fb26614be635c872d7ab9aba20b3b94a37e GIT binary patch literal 662 zcmV;H0%`q;P)Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2j2({0VXki zWPWb|00J6GL_t(&-p$%SY63wN2JlZ=8@II*0|uMe+NIfE3&{<(Q&D&@?B~x3-vI3WFJzSYd-t zIB=0e9wn4f!85W^9-9gonKz6u#_QG3d8pzAPa!oDy!FKsgzBF3Lp)!CVmeX?3DI7V zPMny&6eB{k7lTFU8pcTNMu_&BnA{D9RL6T07*qoM6N<$g7M`T5&!@I literal 0 HcmV?d00001 diff --git a/edje/view/baritem.edc b/edje/view/baritem.edc index 5ab27ea..1ef471a 100644 --- a/edje/view/baritem.edc +++ b/edje/view/baritem.edc @@ -18,10 +18,7 @@ group { name, GRP_BAR_ITEM; images { - image, "mask_user_nor.png" COMP; - } - script { - public mask_on; + image, "mask_user_foc.png" COMP; } parts { part { @@ -170,7 +167,7 @@ group { state, "default" 0.0; rel1.to, PART_BAR_ITEM_ICON; rel2.to, PART_BAR_ITEM_ICON; - image.normal, "mask_user_nor.png"; + image.normal, "mask_user_foc.png"; visible, 0; } description { @@ -180,22 +177,15 @@ group { } } part { - name, "mask_focus"; - type, IMAGE; - scale, 1; + name, PART_BAR_ITEM_MASK; + type, SWALLOW; clip_to, "clip"; + scale, 1; description { state, "default" 0.0; - image.normal, "mask_user_nor.png"; - color, 0 119 245 255; - rel1.to, PART_BAR_ITEM_ICON; - rel2.to, PART_BAR_ITEM_ICON; - visible, 0; - } - description { - state, "show" 0.0; - inherit, "default" 0.0; - visible, 1; + rel1.to, "mask"; + rel2.to, "mask"; + fixed, 1 1; } } part { @@ -288,27 +278,10 @@ group { name, "sig,show,mask"; signal, SIG_SHOW_MASK; source, SRC_PROG; - script { - set_int(mask_on, 1); - } - after, "sig,show,mask,after"; - } - program { - name, "sig,show,mask,after"; - source, SRC_PROG; action, STATE_SET "show" 0.0; target, "mask"; } program { - name, "sig,focus,mask"; - signal, SIG_FOCUS; - source, SRC_PROG; - script { - if (get_int(mask_on) == 1) - set_state(PART:"mask_focus", "show", 0.0); - } - } - program { name, "item,clicked"; source, "click_item"; signal, "mouse,clicked,1"; diff --git a/edje/images/mask_user_nor.png b/images/mask_user_nor.png similarity index 100% rename from edje/images/mask_user_nor.png rename to images/mask_user_nor.png diff --git a/include/defs.h b/include/defs.h index 57f84d8..3d76b6c 100644 --- a/include/defs.h +++ b/include/defs.h @@ -91,6 +91,7 @@ #define PART_BAR_ITEM_BADGE_COUNT "part.bar.item.badge.count" #define PART_BAR_ITEM_LOCK "part.bar.item.lock" #define PART_BAR_ITEM_LOCK_FOCUS "part.bar.item.lock.focus" +#define PART_BAR_ITEM_MASK "part.bar.item.mask" #define PART_USER_BAR "part.user.bar" #define PART_PHOTO_LIST "part.photo.list" #define PART_PHOTO_VIEWER "part.photo.viewer" @@ -143,6 +144,7 @@ #define IMAGE_SWITCH_ON IMAGEDIR"/btn_switch_on_nor.png" #define IMAGE_SWITCH_OFF IMAGEDIR"/btn_switch_off_nor.png" +#define IMAGE_MASK IMAGEDIR"/mask_user_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_home.c b/src/view/view_home.c index 676ea45..1851199 100644 --- a/src/view/view_home.c +++ b/src/view/view_home.c @@ -215,7 +215,7 @@ static struct bar_item *_pack_bar_item(struct _priv *priv, Evas_Object *box, { struct bar_item *bi; struct color_data bright_bg; - Evas_Object *eo, *ic, *focus_ic, *lbl, *focus_lbl, *bg; + Evas_Object *eo, *ic, *focus_ic, *lbl, *focus_lbl, *bg, *mask; char buf[BUF_MAX_UID] = {0}; if (!priv || !box || !di) { @@ -244,9 +244,6 @@ static struct bar_item *_pack_bar_item(struct _priv *priv, Evas_Object *box, if (!focus_ic) goto err; - if (!strcmp(di->icon, di->focus_icon)) - elm_object_signal_emit(eo, SIG_SHOW_MASK, SRC_PROG); - lbl = utils_add_label(eo, di->title, STYLE_LABEL_TITLE, PART_BAR_ITEM_TITLE); if (!lbl) @@ -265,6 +262,13 @@ static struct bar_item *_pack_bar_item(struct _priv *priv, Evas_Object *box, if (!bg) goto err; + if (!strcmp(di->icon, di->focus_icon)) { + elm_object_signal_emit(eo, SIG_SHOW_MASK, SRC_PROG); + mask = utils_add_icon(eo, IMAGE_MASK, PART_BAR_ITEM_MASK); + evas_object_color_set(mask, bright_bg.r, bright_bg.g, + bright_bg.b, bright_bg.a); + } + if (di->noti) bi->badge = _add_notification_badge(eo, di->subtitle); diff --git a/src/view/view_user.c b/src/view/view_user.c index 70b84cc..108c124 100644 --- a/src/view/view_user.c +++ b/src/view/view_user.c @@ -324,7 +324,7 @@ static struct _bar_item *_pack_bar_item(struct _priv *priv, Evas_Object *box, { struct _bar_item *bi; struct color_data bright_bg; - Evas_Object *eo, *ic, *focus_ic, *lbl, *focus_lbl, *bg; + Evas_Object *eo, *ic, *focus_ic, *lbl, *focus_lbl, *bg, *mask; char buf[BUF_MAX_UID] = {0}; bi = calloc(1, sizeof(*bi)); @@ -382,6 +382,13 @@ static struct _bar_item *_pack_bar_item(struct _priv *priv, Evas_Object *box, if (!bg) goto err; + if (!strcmp(di->icon, di->focus_icon)) { + elm_object_signal_emit(eo, SIG_SHOW_MASK, SRC_PROG); + mask = utils_add_icon(eo, IMAGE_MASK, PART_BAR_ITEM_MASK); + evas_object_color_set(mask, bright_bg.r, bright_bg.g, + bright_bg.b, bright_bg.a); + } + evas_object_size_hint_align_set(eo, 0.5, 0.0); inputmgr_add_callback(eo, INPUT_HANDLER_TYPE_EO, &handler, bi); elm_object_signal_callback_add(eo, SIG_CLICK_ITEM, SRC_EDJE, -- 2.7.4 From 291b2c78af15d1c58171150f33b9c0b6e4e684a1 Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Thu, 13 Aug 2015 20:04:02 +0900 Subject: [PATCH 14/16] add action menu view Change-Id: I95bb9bdf12d83c2346267c3c14735fb45ed9f9e3 Signed-off-by: Soohye Shin --- CMakeLists.txt | 3 +- edje/home.edc | 1 + edje/view/actionmenu.edc | 385 ++++++++++++++++++++++++++++++++++++++++++ edje/widget/label.edc | 106 ++++++++++++ images/btn_menu_reset_foc.png | Bin 0 -> 1849 bytes images/btn_menu_reset_nor.png | Bin 0 -> 1989 bytes include/defs.h | 15 ++ include/view.h | 1 + src/view/view_action_menu.c | 274 ++++++++++++++++++++++++++++++ src/view/view_user_edit.c | 4 + 10 files changed, 788 insertions(+), 1 deletion(-) create mode 100644 edje/view/actionmenu.edc create mode 100644 images/btn_menu_reset_foc.png create mode 100644 images/btn_menu_reset_nor.png create mode 100644 src/view/view_action_menu.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 54bddcc..3e97035 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,7 +52,8 @@ SET(SRCS src/view/view_user_edit.c src/view/view_user.c src/view/view_recent.c - src/view/view_home.c) + src/view/view_home.c + src/view/view_action_menu.c) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include) ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE_NAME}\"") ADD_DEFINITIONS("-DEDJEDIR=\"${EDJEDIR}\"") diff --git a/edje/home.edc b/edje/home.edc index 1d06e76..456c1a4 100644 --- a/edje/home.edc +++ b/edje/home.edc @@ -23,4 +23,5 @@ collections { #include "view/user.edc" #include "view/useredit.edc" #include "view/photo.edc" + #include "view/actionmenu.edc" } diff --git a/edje/view/actionmenu.edc b/edje/view/actionmenu.edc new file mode 100644 index 0000000..c3f33ec --- /dev/null +++ b/edje/view/actionmenu.edc @@ -0,0 +1,385 @@ +/* + * 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_ACTION_MENU; + parts { + part { + name, "bg"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + color, 0 0 0 150; + } + } + part { + name, "bar"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + rel1.relative, 1.0 0.0; + min, 500 0; + fixed, 1 0; + align, 1.0 0.5; + } + } + part { + name, "divider.left"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + rel1.to, "bar"; + rel2 { + to, "bar"; + relative, 0.0 1.0; + } + min, 1 0; + align, 1.0 0.5; + fixed, 1 0; + color, 224 224 224 255; + } + } + part { + name, "livetv"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + rel1.to, "bar"; + rel2 { + to, "bar"; + relative, 1.0 0.0; + } + min, 0 118; + align, 0.5 0.0; + fixed, 0 1; + } + } + part { + name, PART_ACTION_MENU_LIVETV; + type, SWALLOW; + scale, 1; + description { + state, "default" 0.0; + rel1 { + to, "livetv"; + relative, 0.5 0.5; + } + rel2 { + to, "livetv"; + relative, 0.5 0.5; + } + min, 372 64; + fixed, 1 1; + } + } + part { + name, "divider.up"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + rel1 { + to, "livetv"; + relative, 0.0 1.0; + } + rel2.to, "livetv"; + color, 224 224 224 255; + min, 0 1; + align, 0.5 0.0; + fixed, 0 1; + } + } + part { + name, PART_ACTION_MENU_TABLE; + type, SWALLOW; + scale, 1; + description { + state, "default" 0.0; + rel1 { + to, "divider.up"; + relative, 0.0 1.0; + } + rel2.to, "divider.up"; + min, 0 124; + align, 0.5 0.0; + fixed, 0 1; + } + } + part { + name, "divider.down"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + rel1 { + to, PART_ACTION_MENU_TABLE; + relative, 0.0 1.0; + } + rel2.to, PART_ACTION_MENU_TABLE; + color, 224 224 224 255; + min, 0 1; + align, 0.5 0.0; + fixed, 0 1; + } + } + } +} +group { + name, GRP_ACTION_MENU_LIVETV; + parts { + part { + name, "bg"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + min, 372 64; + color, 194 194 194 255; + } + description { + state, "focus" 0.0; + inherit, "default" 0.0; + color, 0 119 246 255; + } + } + part { + name, "area"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + min, 370 62; + 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, "text"; + type, TEXT; + scale, 1; + description { + state, "default" 0.0; + text { + font, "TizenSans"; + size, 28; + text, "Live TV"; + } + color, 87 87 87 255; + fixed, 1 1; + } + description { + state, "focus" 0.0; + inherit, "default" 0.0; + color, 255 255 255 255; + } + } + } + programs { + program { + name, "sig,focus"; + signal, SIG_FOCUS; + source, SRC_PROG; + action, STATE_SET "focus" 0.0; + target, "text"; + target, "area"; + target, "bg"; + } + program { + name, "sig,unfocus"; + signal, SIG_UNFOCUS; + source, SRC_PROG; + action, STATE_SET "default" 0.0; + target, "text"; + target, "area"; + target, "bg"; + } + } +} +group { + name, GRP_ACTION_MENU_TABLE_ITEM; + parts { + part { + name, "bg"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + min, 125 124; + } + } + part { + name, "divider"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + rel1.relative, 1.0 0.0; + min, 1 0; + fixed, 1 0; + color, 224 224 224 255; + align, 1.0 0.5; + } + } + part { + name, "pad.icon"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + min, 0 14; + rel1.relative, 0.5 0.0; + rel2.relative, 0.5 0.0; + fixed, 1 1; + align, 0.0 0.0; + } + } + 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_ACTION_MENU_TABLE_ITEM_BG; + type, SWALLOW; + scale, 1; + clip_to, "clip"; + description { + state, "default" 0.0; + fixed, 1 1; + } + } + part { + name, PART_ACTION_MENU_TABLE_ITEM_ICON; + type, SWALLOW; + scale, 1; + description { + state, "default" 0.0; + rel1 { + to, "pad.icon"; + relative, 1.0 1.0; + } + rel2 { + to, "pad.icon"; + relative, 1.0 1.0; + } + min, 60 60; + align, 0.5 0.0; + fixed, 1 1; + } + } + part { + name, PART_ACTION_MENU_TABLE_ITEM_ICON_FOCUS; + type, SWALLOW; + scale, 1; + clip_to, "clip"; + description { + state, "default" 0.0; + rel1.to, PART_ACTION_MENU_TABLE_ITEM_ICON; + rel2.to, PART_ACTION_MENU_TABLE_ITEM_ICON; + fixed, 1 1; + } + } + part { + name, "pad.text"; + type, RECT; + scale, 1; + description { + state, "default" 0.0; + rel1 { + to, PART_ACTION_MENU_TABLE_ITEM_ICON; + relative, 0.5 1.0; + } + rel2 { + to, PART_ACTION_MENU_TABLE_ITEM_ICON; + relative, 0.5 1.0; + } + min, 0 6; + fixed, 1 1; + align, 0.5 0.0; + } + } + part { + name, PART_ACTION_MENU_TABLE_ITEM_TEXT; + type, SWALLOW; + scale, 1; + description { + state, "default" 0.0; + rel1 { + to, "pad.text"; + relative, 1.0 1.0; + } + rel2 { + to, "pad.text"; + relative, 1.0 1.0; + } + min, 80 20; + align, 0.5 0.0; + fixed, 1 1; + } + } + part { + name, PART_ACTION_MENU_TABLE_ITEM_TEXT_FOCUS; + type, SWALLOW; + scale, 1; + clip_to, "clip"; + description { + state, "default" 0.0; + rel1.to, PART_ACTION_MENU_TABLE_ITEM_TEXT; + rel2.to, PART_ACTION_MENU_TABLE_ITEM_TEXT; + fixed, 1 1; + } + } + } + programs { + program { + name, "sig,focus"; + signal, SIG_FOCUS; + source, SRC_PROG; + action, STATE_SET "focus" 0.0; + transition, TRANSITION_DECEL; + target, "clip"; + } + program { + name, "sig,unfocus"; + signal, SIG_UNFOCUS; + source, SRC_PROG; + action, STATE_SET "default" 0.0; + transition, TRANSITION_DECEL; + target, "clip"; + } + } +} diff --git a/edje/widget/label.edc b/edje/widget/label.edc index f29473d..9d1d8d8 100644 --- a/edje/widget/label.edc +++ b/edje/widget/label.edc @@ -31,6 +31,14 @@ styles { name, "recent_label_subtitle"; base, "font=TizenSans font_size=20 color=#cdcdcd align=left"; } + style { + name, "action_menu_title"; + base, "font=TizenSans font_size=20 color=#686868 align=center"; + } + style { + name, "action_menu_title_focus"; + base, "font=TizenSans font_size=20 color=#ffffff align=center"; + } } group { @@ -311,3 +319,101 @@ group { } } } +group { + name, "elm/label/base/slide_action_menu_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, "action_menu_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, "action_menu_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, "action_menu_title"; + align, 0.0 0.0; + min, 1 1; + ellipsis, -1.0; + } + } + } + } +} +group { + name, "elm/label/base/slide_action_menu_title_focus"; + inherit, "elm/label/base/slide_home_title"; + parts { + part { + name, "elm.text"; + type, TEXTBLOCK; + scale, 1; + clip_to, "label.text.clip"; + description { + state, "default" 0.0; + rel1.relative, 0.0 0.0; + rel2.relative, 1.0 1.0; + align, 0.0 0.5; + text { + style, "action_menu_title_focus"; + align, 0.0 1.0; + min, 0 1; + } + } + description { + state, "slide_end" 0.0; + inherit, "default" 0.0; + rel1.relative, 1.0 0.0; + rel2.relative, 1.0 1.0; + align, 1.0 0.5; + text { + style, "action_menu_title_focus"; + align, 0.0 0.0; + min, 1 1; + ellipsis, -1.0; + } + } + description { + state, "slide_begin" 0.0; + inherit, "default" 0.0; + rel1.relative, 0.0 0.0; + rel2.relative, 0.0 1.0; + align, 0.0 0.5; + text { + style, "action_menu_title_focus"; + align, 0.0 0.0; + min, 1 1; + ellipsis, -1.0; + } + } + } + } +} diff --git a/images/btn_menu_reset_foc.png b/images/btn_menu_reset_foc.png new file mode 100644 index 0000000000000000000000000000000000000000..f53e996df4bd6f06b2ed10b06dd645834af00731 GIT binary patch literal 1849 zcmb7FX;2eq7={+9fPewyP?2rGGvwHuBoH-Z14a&!%M^=4js+ql8#W6G)>e?xfYyVG zsH38CsmLwVt3`yVf}${@hGmldo9Iv(8!SbsRqbZ2+JZ@+n;=e?eHHajHP-`aAf zrHP4&wRjm6imyJ#XR0~==Dog&;)@F=l3-y-ET)s9u!%r{$Y4OMlE%TIuvC$n)B@v( zFC&%V5=;^l$de-~iqvRB(W^8#8Yf$#*GT0FFb2rrIHj6T{PWCNBA`_8iK|#av>=TT zj#n;Qhr(g&g2UzO669P3amix9N6*6vR4^t5^r}R)mZ#?v-}CbDz44ez1m2rq34G#s zP?De!K!~6)z@jk7avBH%Y&HdCve<0U6QI*TI+cdsY%<8?vDiF12bj2sxHnW0%L|44 zCVb&vd}2I?X?RqsPN$>j7!(AJqk>#6*T_MqlW_~OHdT#D^<=fyeUbr!wQ^Lc!IX#^ zFfvMINHWGJ;*pN0pwa{deIQnACklm^jH;Jvs33(#RjG`5y|>n4q40lUe9~GQo~nVV zp|BQ7M&)=vV%;afcK#ij14SUrBo{ropzzI zE#p~2Fse*}6@Dn90^Zk^r~HI}F9yW+V=(9}4joSw1O*V?3t}@w0w#;@3wikwC$NhD zQ!6SS1l1^pkHj%~ge%Ut{UCMxp@1QtzC}!lzKCQhevpb zl8`HNmgKF>Eh&=5o_=F^leaX>C$4QzbhpcB^*|Fhu6{pPI~MzU`qBpbfVo%f<$stZ ze!(`~n-2Wk7bwOX1s-2fbG_p{LKCi&Gcw= zTjV3}Z~W(HkcCUklN_?8w@Ee;&JDWJLUNCMH{^}Fz9t+m+8J?lYhK#1V&5A%k6w@p zJbE_yJUsb4ZO7sD_ZE_G{it`^XuUF{KO!{}_8O_7FTa<2sy48m+8BT}84gfZBxUQf ziY3`|POOSrn}7SK*<))+FV_}tiE*1s67dUtOO8jm23#@^l%4fla4~5n!mQ}L`(XC3 zh0uk@hk0hlP7hl?TE5w>A<`lEc%87k|M<$Md-RzjDHSJ9rylWlWIvqq{GgSg=+a?j z{A0J1Kg&FI-Z3+Jvie+JxX+qj<$PvH6m~&jUNG{vj6LJY8Qv=Ex5;Bce8j|1sil~bhEmZw>}OcO#zmM1{NQQD+i zj}tF=im7l*$%gj7_s?#2*(IB%a%{^fA=!^SesyyO*`HiYUprFJbuQ-nXH5$(77o(N zO)A0k0EzRHJ)s%3rMyhfP3JqB+E=zt>3vWd(O2Es`07}QfpF@As5PZ#tJ*c|Y4iG1 ztDdxO%kMd)H+Xay6b}o`e;bpyJ2uDYo9qLJM|ja-<)sa7!8>!-ZywlQ^R8y!KwiFZXJQ+I`5j0{hdW;r#PE*ElsK8 SZmQuLe`aD)FjV0iv+-X5anXhV literal 0 HcmV?d00001 diff --git a/images/btn_menu_reset_nor.png b/images/btn_menu_reset_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..dd5804fa23ec474450222eb7203f5b73aa3aa87f GIT binary patch literal 1989 zcmb7Fdr%X19uJ7f@eq%zRPeP1Fd*i!8}gLYhHL^Dqr6h0a%U2D6Sk0S+^i%ZLP<`6 zlOm_5c=#yS!rgIJ1ckdn)FV|d;^Qc2OR!UsgY$Gm!0ME?qTWWq_K!|yy0g2#-~Q(F z`F!8ARcRZNLjofMX*60$Y6_e|t%=?zz@K`Hrw0jYi6G?~G7~qDHXVV|qzJA@fmD;u zh-RQVq-a|YN-^fVgJo$*jcUC(7dNqVUJT1_vQTVFY^~j*%gskgK#v+RvxGj;^-ns0 zArg8vPsLGLWN03iQcR$k#T&A6i}Q0u2z~8aK%!kt37Ak)2iQ#oW~Q+w|* zn-08$kogk&E2lK7G(d(ED8OTJnYkPg1o(Uwn84%n!PNl70U^hvop=ss96OV zwdN9-g~V_(;8oP=@$IC9PI>w&1d~OjdM#|W&LoOT8QZS2ut64wZ8CY|dWp7@8R++J z{3zO*Rb)Zg8K@QCPUKScFhtFgsoedvAuo{fM!b>0sG{f!U_5ub2{n_cu!IgOL@+-= z%Hx1CflLMqAeo4(kO@GJoG0Y)c+y$!4>^_ zaGN#GTb5T*!YF|iqKJaPO~A{%im@NDFXX~}1(yr)1P~P}2ufi{2=lpeX#x*Qf`tnD z3>W!1xnfgJu)WRjgXWk$qB_pIeckHR$LnE1&D4Yt)F@~e@2Y7uzqzTfG|PT#tbRw{ z``Z?|hdx^I@#n#v?kmiCB1CrOMA~$DM6>Gf>446dKR_2pPhH%-`_%QAFao=wKv>r6 z`pb%h_d5~2r)Fa0S^gdoz=N{>E^wj4` z4K>>2)+o;}#{vrd);OLSS16u~;^N}8yBeFCHnBa89lq%e%u1Td#h46F^j+?2-nFw; z3iwyg-MRSNv-H{^$aVCEYVwWN@L->{(zk>mW~ZRRH_Mr}py$Bykh{*9JK-mLLrB-J zrT*FNeyithYM5R=@P;!;8x-(Sa^<}xmWXJFv3yYzqr8h8K^p{~zDmz`Uq_5JJ?$O2 zGBoe>9Mxo?<=}BKtzh2T_0`#P=D$};;)4TM4|KMF@z6Ypv+9&9_xaYmC*14K+%>eR z13= zJ*=*CR-fH=yOO6P>cZY$;c;I!cWFfohQmB9IdBdj9pK^^d-NUERvo-&|^oHX`$? zj%WrG0l^(mlTsI&34GIaGZ3hEA3WiZYh!+U=1_2op(B#?;kwqyTaNaeOT1uqovN@o zeK|f)M$^+l>kvt3C7j1Xa<3}CxTlf3Rk&Z9^ zs%i~rc~}ek?YR?KHgMr@%p)haI^-7H`SX*;J?<@wG1sE>)#|Oy3&!+4hUugSHO#nW zE#Szh&zh3kYB@*T>mI!jl(a6(8D6qbdc4xO^~f(KDpA(>1H#Q+XKY@O;~G!?uut|u z_|+=ISLf3A_vSR*-#HGc-TnTm3H-!kS@-^&^9%Ed3wQHBU1j(z+P3-3fq{^m!(Vpq zzzc+$;Q3f_Xb$$Dw%y5}fU2^$?`|LaP-%>)elmPk+K)ZzOg1SjO@E&1*zC04CfBUb z%4WJE3b!=gdvPz+r4Q{UKizs`c}d4>ZObS(bMcbTh7Jym+&_3aGKKMhLkaAC+TP#t@ul&v(pHup%DYzESh4g9 zSJQuUsxa`0O)|YO@sV+$`@bbow`V4Asq57su6)YurePW%VHskY^8Q#; +#include +#include +#include + +#include "defs.h" +#include "view.h" +#include "utils.h" + +#define ACTION_MENU_TITLE_RESET "Reset" + +enum input_handler_type { + INPUT_HANDLER_BTN, + INPUT_HANDLER_ITEM +}; + +struct _priv { + Evas_Object *win; + Evas_Object *base; + Evas_Object *btn; + Evas_Object *item; +}; + +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 _select(int id, void *data, Evas_Object *obj) +{ + /* It should be implemented later */ + + switch (id) { + case INPUT_HANDLER_BTN: + break; + case INPUT_HANDLER_ITEM: + break; + default: + return; + } +} + +static void _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)) { + viewmgr_hide_view(VIEW_ACTION_MENU); + } else if (!strcmp(ev->keyname, KEY_ENTER) || + !strcmp(ev->keyname, KEY_ENTER_REMOTE)) { + _select(id, data, obj); + } +} + +static void _mouse_down(int id, void *data, Evas *e, Evas_Object *obj, + Evas_Event_Mouse_Down *ev) +{ + _select(id, data, obj); +} + +static void _mouse_move(int id, void *data, Evas *e, Evas_Object *obj, + Evas_Event_Mouse_Move *ev) +{ + if (!elm_object_focus_get(obj)) + elm_object_focus_set(obj, EINA_TRUE); +} + +static input_handler handler = { + .focused = _focused, + .unfocused = _unfocused, + .key_down = _key_down, + .mouse_down = _mouse_down, + .mouse_move = _mouse_move +}; + +static Evas_Object *_add_item(Evas_Object *box, struct _priv *priv) +{ + Evas_Object *item, *ic, *focus_ic, *lbl, *focus_lbl, *bg; + + item = utils_add_layout(box, GRP_ACTION_MENU_TABLE_ITEM, true, NULL); + if (!item) { + _ERR("failed to add item"); + evas_object_del(box); + return false; + } + + ic = utils_add_icon(item, IMAGE_ACTION_MENU_ICON_RESET, + PART_ACTION_MENU_TABLE_ITEM_ICON); + if (!ic) + goto err; + + focus_ic = utils_add_icon(item, IMAGE_ACTION_MENU_ICON_RESET_FOCUS, + PART_ACTION_MENU_TABLE_ITEM_ICON_FOCUS); + if (!focus_ic) + goto err; + + lbl = utils_add_label(item, ACTION_MENU_TITLE_RESET, + STYLE_LABEL_ACTION_MENU_TITLE, + PART_ACTION_MENU_TABLE_ITEM_TEXT); + if (!lbl) + goto err; + + focus_lbl = utils_add_label(item, ACTION_MENU_TITLE_RESET, + STYLE_LABEL_ACTION_MENU_TITLE_FOCUS, + PART_ACTION_MENU_TABLE_ITEM_TEXT_FOCUS); + if (!focus_lbl) + goto err; + + bg = utils_add_bg(item, COLOR_DEFAULT_R, COLOR_DEFAULT_G, + COLOR_DEFAULT_B, COLOR_DEFAULT_A, + PART_ACTION_MENU_TABLE_ITEM_BG); + if (!bg) + goto err; + + evas_object_show(item); + inputmgr_add_callback(item, INPUT_HANDLER_ITEM, &handler, priv); + + return item; +err: + evas_object_del(item); + return NULL; +} + +static bool _add_menu(struct _priv *priv) +{ + Evas_Object *btn, *box, *item; + + btn = utils_add_layout(priv->base, GRP_ACTION_MENU_LIVETV, true, + PART_ACTION_MENU_LIVETV); + if (!btn) { + _ERR("failed to add btn"); + return false; + } + inputmgr_add_callback(btn, INPUT_HANDLER_BTN, &handler, priv); + priv->btn = btn; + + box = utils_add_box(priv->base, true); + if (!box) { + _ERR("failed to add box"); + return false; + } + elm_object_part_content_set(priv->base, PART_ACTION_MENU_TABLE, box); + elm_box_align_set(box, 0.0, 0.5); + + item = _add_item(box, priv); + if (!item) { + _ERR("failed to add item"); + evas_object_del(box); + return false; + } + + elm_box_pack_start(box, item); + priv->item = item; + + return true; +} + +static Evas_Object *_create(Evas_Object *win, void *data) +{ + struct _priv *priv; + Evas_Object *base; + + priv = calloc(1, sizeof(*priv)); + if (!priv) { + _ERR("failed to calloc priv"); + return NULL; + } + + base = utils_add_layout(win, GRP_ACTION_MENU, 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; + + if (!_add_menu(priv)) { + _ERR("failed to add menu"); + free(priv); + evas_object_del(base); + return NULL; + } + + viewmgr_set_view_data(VIEW_ACTION_MENU, priv); + + return base; +} + +static void _show(void *data) +{ + struct _priv *priv; + + if (!data) { + _ERR("Invalid argument"); + return; + } + + priv = data; + + evas_object_show(priv->base); + + if (priv->btn) + elm_object_focus_set(priv->btn, EINA_TRUE); +} + +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_ACTION_MENU, + .create = _create, + .show = _show, + .hide = _hide, + .destroy = _destroy, +}; + +view_class *view_action_menu_get_vclass(void) +{ + return &vclass; +} diff --git a/src/view/view_user_edit.c b/src/view/view_user_edit.c index d3c067c..a0f2d22 100644 --- a/src/view/view_user_edit.c +++ b/src/view/view_user_edit.c @@ -456,6 +456,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); + viewmgr_add_view(view_action_menu_get_vclass(), NULL); return base; } @@ -639,6 +640,9 @@ static void _key_down(int id, void *data, Evas *e, Evas_Object *obj, } else if (!strcmp(ev->keyname, KEY_RIGHT)) { if (id == INPUT_HANDLER_TYPE_PHOTO && priv->del) elm_object_focus_set(priv->del, EINA_TRUE); + } else if (!strcmp(ev->keyname, KEY_MENU) || + !strcmp(ev->keyname, KEY_MENU_REMOTE)) { + viewmgr_show_view(VIEW_ACTION_MENU); } } -- 2.7.4 From 1e2357bf7c73660b13981f7be1c9db8ce3b9486f Mon Sep 17 00:00:00 2001 From: Minkyu Kang Date: Thu, 13 Aug 2015 20:34:42 +0900 Subject: [PATCH 15/16] add dependency with live-tv Change-Id: If55704bd29962999656af776beb325f45dfc93c7 Signed-off-by: Minkyu Kang --- packaging/org.tizen.home.service | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packaging/org.tizen.home.service b/packaging/org.tizen.home.service index a8dcbbd..1678830 100644 --- a/packaging/org.tizen.home.service +++ b/packaging/org.tizen.home.service @@ -1,5 +1,7 @@ [Unit] Description=Home-tv +Requires=org.tizen.live-tv.service +After=org.tizen.live-tv.service [Service] -ExecStart=/bin/sh -c -l '/usr/bin/aul_test launch org.tizen.home' +ExecStart=/bin/sh -c -l 'sleep 1;/usr/bin/aul_test launch org.tizen.home' -- 2.7.4 From 1b2ed347473e2167ec16f0b19feecffe980cfdde Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Sun, 16 Aug 2015 14:47:19 +0900 Subject: [PATCH 16/16] reset user edit view when pressed reset button from action menu - add reset popup - add discard popup Change-Id: I442ba4f842b0ca50a8b2e62944bf94cd205d5a56 Signed-off-by: Soohye Shin --- include/defs.h | 2 + include/view.h | 3 +- src/view/view_action_menu.c | 176 ++++++++++++++++++++++++++++++++++++++------ src/view/view_user_edit.c | 60 ++++++++++----- 4 files changed, 199 insertions(+), 42 deletions(-) diff --git a/include/defs.h b/include/defs.h index 5132e63..59c62e3 100644 --- a/include/defs.h +++ b/include/defs.h @@ -215,8 +215,10 @@ #define MESSAGE_OK "OK" #define MESSAGE_DONE "Done" #define MESSAGE_DISCARD "Discard" +#define MESSAGE_RESET "Reset" #define MESSAGE_DELETE_CONTENTS "If you delete this user, their data will also be deleted." #define MESSAGE_DISCARD_CONTENTS "Discard all entered data?
If you are out of this screen, data won't be saved" +#define MESSAGE_RESET_CONTENTS "Reset all entered data?
If you choose the Reset, all data will be deleted" #define KEY_MEDIA "media_id" #define KEY_CHANNEL "service_id" diff --git a/include/view.h b/include/view.h index de827f5..2b34f75 100644 --- a/include/view.h +++ b/include/view.h @@ -21,7 +21,8 @@ enum update_type { UPDATE_TYPE_EDIT, UPDATE_TYPE_PHOTO, UPDATE_TYPE_NOTI, - UPDATE_TYPE_USER + UPDATE_TYPE_USER, + UPDATE_TYPE_RESET }; view_class *view_home_get_vclass(void); diff --git a/src/view/view_action_menu.c b/src/view/view_action_menu.c index b392b13..37f34c9 100644 --- a/src/view/view_action_menu.c +++ b/src/view/view_action_menu.c @@ -26,8 +26,11 @@ #define ACTION_MENU_TITLE_RESET "Reset" enum input_handler_type { - INPUT_HANDLER_BTN, - INPUT_HANDLER_ITEM + INPUT_HANDLER_TYPE_BTN, + INPUT_HANDLER_TYPE_ITEM, + INPUT_HANDLER_TYPE_RESET, + INPUT_HANDLER_TYPE_DISCARD, + INPUT_HANDLER_TYPE_CANCEL }; struct _priv { @@ -35,6 +38,9 @@ struct _priv { Evas_Object *base; Evas_Object *btn; Evas_Object *item; + Evas_Object *popup; + + bool edited; }; static void _focused(int id, void *data, Evas_Object *obj, @@ -49,14 +55,101 @@ static void _unfocused(int id, void *data, Evas_Object *obj, elm_object_signal_emit(obj, SIG_UNFOCUS, SRC_PROG); } +static void _key_down(int id, void *data, Evas *e, Evas_Object *obj, + Evas_Event_Key_Down *ev); + +static void _mouse_down(int id, void *data, Evas *e, Evas_Object *obj, + Evas_Event_Mouse_Down *ev); + +static void _mouse_move(int id, void *data, Evas *e, Evas_Object *obj, + Evas_Event_Mouse_Move *ev) +{ + if (!elm_object_focus_get(obj)) + elm_object_focus_set(obj, EINA_TRUE); +} + +static input_handler handler = { + .focused = _focused, + .unfocused = _unfocused, + .key_down = _key_down, + .mouse_down = _mouse_down, + .mouse_move = _mouse_move +}; + +static void _add_popup(struct _priv *priv, char *title, char *message, + char *first_btn_message, int first_btn_id, + char *second_btn_message, int second_btn_id) +{ + Evas_Object *popup, *first_btn, *second_btn; + + popup = utils_add_popup(priv->base, title, message); + if (!popup) { + _ERR("failed to add popup"); + return; + } + + first_btn = utils_add_button(popup, first_btn_message, + PART_POPUP_BUTTON_1); + if (!first_btn) { + _ERR("failed to add delete btn"); + evas_object_del(popup); + return; + } + inputmgr_add_callback(first_btn, first_btn_id, &handler, priv); + + second_btn = utils_add_button(popup, second_btn_message, + PART_POPUP_BUTTON_2); + if (!second_btn) { + _ERR("failed to add cancel btn"); + evas_object_del(popup); + return; + } + inputmgr_add_callback(second_btn, second_btn_id, &handler, priv); + elm_object_focus_set(second_btn, EINA_TRUE); + + priv->popup = popup; +} + +static void _delete_popup(struct _priv *priv, Evas_Object *obj) +{ + inputmgr_remove_callback(obj, &handler); + evas_object_del(priv->popup); + priv->popup = NULL; +} + static void _select(int id, void *data, Evas_Object *obj) { - /* It should be implemented later */ + struct _priv *priv; + + priv = data; switch (id) { - case INPUT_HANDLER_BTN: + case INPUT_HANDLER_TYPE_BTN: + if (priv->edited) { + _add_popup(priv, MESSAGE_DISCARD, + MESSAGE_DISCARD_CONTENTS, + MESSAGE_DISCARD, + INPUT_HANDLER_TYPE_DISCARD, + MESSAGE_CANCEL, + INPUT_HANDLER_TYPE_CANCEL); + return; + } + viewmgr_update_view(VIEW_USER_EDIT, UPDATE_TYPE_RESET, NULL); + viewmgr_hide_view(VIEW_ACTION_MENU); + break; + case INPUT_HANDLER_TYPE_ITEM: + _add_popup(priv, MESSAGE_RESET, MESSAGE_RESET_CONTENTS, + MESSAGE_RESET, INPUT_HANDLER_TYPE_RESET, + MESSAGE_CANCEL, INPUT_HANDLER_TYPE_CANCEL); + break; + case INPUT_HANDLER_TYPE_RESET: + case INPUT_HANDLER_TYPE_DISCARD: + viewmgr_update_view(VIEW_USER_EDIT, UPDATE_TYPE_RESET, NULL); + viewmgr_hide_view(VIEW_ACTION_MENU); + _delete_popup(priv, obj); break; - case INPUT_HANDLER_ITEM: + case INPUT_HANDLER_TYPE_CANCEL: + _delete_popup(priv, obj); break; default: return; @@ -66,9 +159,30 @@ static void _select(int id, void *data, Evas_Object *obj) 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)) { - viewmgr_hide_view(VIEW_ACTION_MENU); + switch (id) { + case INPUT_HANDLER_TYPE_BTN: + case INPUT_HANDLER_TYPE_ITEM: + viewmgr_hide_view(VIEW_ACTION_MENU); + break; + case INPUT_HANDLER_TYPE_RESET: + case INPUT_HANDLER_TYPE_DISCARD: + case INPUT_HANDLER_TYPE_CANCEL: + if (priv->popup) + _delete_popup(priv, obj); + break; + default: + return; + } } else if (!strcmp(ev->keyname, KEY_ENTER) || !strcmp(ev->keyname, KEY_ENTER_REMOTE)) { _select(id, data, obj); @@ -78,24 +192,14 @@ static void _key_down(int id, void *data, Evas *e, Evas_Object *obj, static void _mouse_down(int id, void *data, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Down *ev) { - _select(id, data, obj); -} + if (!data || !obj) { + _ERR("Invalid argument"); + return; + } -static void _mouse_move(int id, void *data, Evas *e, Evas_Object *obj, - Evas_Event_Mouse_Move *ev) -{ - if (!elm_object_focus_get(obj)) - elm_object_focus_set(obj, EINA_TRUE); + _select(id, data, obj); } -static input_handler handler = { - .focused = _focused, - .unfocused = _unfocused, - .key_down = _key_down, - .mouse_down = _mouse_down, - .mouse_move = _mouse_move -}; - static Evas_Object *_add_item(Evas_Object *box, struct _priv *priv) { Evas_Object *item, *ic, *focus_ic, *lbl, *focus_lbl, *bg; @@ -136,7 +240,7 @@ static Evas_Object *_add_item(Evas_Object *box, struct _priv *priv) goto err; evas_object_show(item); - inputmgr_add_callback(item, INPUT_HANDLER_ITEM, &handler, priv); + inputmgr_add_callback(item, INPUT_HANDLER_TYPE_ITEM, &handler, priv); return item; err: @@ -154,7 +258,7 @@ static bool _add_menu(struct _priv *priv) _ERR("failed to add btn"); return false; } - inputmgr_add_callback(btn, INPUT_HANDLER_BTN, &handler, priv); + inputmgr_add_callback(btn, INPUT_HANDLER_TYPE_BTN, &handler, priv); priv->btn = btn; box = utils_add_box(priv->base, true); @@ -243,6 +347,7 @@ static void _hide(void *data) priv = data; evas_object_hide(priv->base); + priv->edited = false; } static void _destroy(void *data) @@ -256,16 +361,41 @@ static void _destroy(void *data) priv = data; + inputmgr_remove_callback(priv->btn, &handler); + inputmgr_remove_callback(priv->item, &handler); + evas_object_del(priv->base); free(priv); } +static void _update(void *view_data, int update_type, void *data) +{ + struct _priv *priv; + + if (!view_data) { + _ERR("Invalid argument"); + return; + } + + priv = view_data; + + switch (update_type) { + case UPDATE_TYPE_EDIT: + priv->edited = *(bool *)data; + break; + default: + _ERR("Invalid type"); + return; + } +} + static view_class vclass = { .view_id = VIEW_ACTION_MENU, .create = _create, .show = _show, .hide = _hide, .destroy = _destroy, + .update = _update }; view_class *view_action_menu_get_vclass(void) diff --git a/src/view/view_user_edit.c b/src/view/view_user_edit.c index a0f2d22..cb348c8 100644 --- a/src/view/view_user_edit.c +++ b/src/view/view_user_edit.c @@ -1,5 +1,4 @@ /* - * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the License); @@ -593,6 +592,7 @@ static void _key_down(int id, void *data, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev) { struct _priv *priv; + bool edited; if (!data) { _ERR("Invalid argument"); @@ -642,7 +642,20 @@ static void _key_down(int id, void *data, Evas *e, Evas_Object *obj, elm_object_focus_set(priv->del, EINA_TRUE); } else if (!strcmp(ev->keyname, KEY_MENU) || !strcmp(ev->keyname, KEY_MENU_REMOTE)) { - viewmgr_show_view(VIEW_ACTION_MENU); + switch (id) { + case INPUT_HANDLER_TYPE_PHOTO: + case INPUT_HANDLER_TYPE_BTN_DONE: + case INPUT_HANDLER_TYPE_BTN_CANCEL: + case INPUT_HANDLER_TYPE_DELETE: + case INPUT_HANDLER_TYPE_ENTRY: + edited = _check_changed_input(priv); + viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_TYPE_EDIT, + &edited); + viewmgr_show_view(VIEW_ACTION_MENU); + break; + default: + return; + } } } @@ -684,10 +697,30 @@ static void _change_entry(Evas_Object *name, Evas_Object *ly, Eina_Bool disable, elm_object_signal_emit(ly, signal, SRC_PROG); } +static void _reset(struct _priv *priv) +{ + const char *photo, *focus_photo; + + if (priv->selected_photo) { + _load_user_icon(priv, priv->selected_photo, + priv->selected_photo); + return; + } + + if (priv->di) { + photo = utils_get_photo_from_icon(priv->di->icon); + focus_photo = utils_get_focus_photo_from_photo(photo); + _load_user_icon(priv, photo, focus_photo); + } else { + _change_entry(priv->name, priv->ly, EINA_TRUE, "", SIG_ENABLE); + _load_user_icon(priv, IMAGE_USER_CURRENT_DEFAULT, + IMAGE_USER_CURRENT_DEFAULT_FOCUS); + } +} + static void _show(void *data) { struct _priv *priv; - const char *photo, *focus_photo; if (!data) { _ERR("Invalid argument"); @@ -701,31 +734,19 @@ static void _show(void *data) MESSAGE_EDIT_USER); _change_entry(priv->name, priv->ly, EINA_FALSE, priv->di->title, SIG_DISABLE); - if (priv->selected_photo) { - _load_user_icon(priv, priv->selected_photo, - priv->selected_photo); - } else { - photo = utils_get_photo_from_icon(priv->di->icon); - focus_photo = utils_get_focus_photo_from_photo(photo); - _load_user_icon(priv, photo, focus_photo); - } if (priv->user_type == USER_ITEM_ADMIN && priv->di->type != USER_ITEM_ADMIN) _load_del_btn(priv); } else { elm_object_part_text_set(priv->base, PART_USER_EDIT_TITLE, MESSAGE_ADD_USER); - _change_entry(priv->name, priv->ly, EINA_TRUE, "", SIG_ENABLE); - if (priv->selected_photo) - _load_user_icon(priv, priv->selected_photo, - priv->selected_photo); - else - _load_user_icon(priv, IMAGE_USER_CURRENT_DEFAULT, - IMAGE_USER_CURRENT_DEFAULT_FOCUS); } + _reset(priv); + evas_object_show(priv->base); elm_object_focus_set(priv->cancel, EINA_TRUE); + priv->selected_photo = NULL; } static void _hide(void *data) @@ -789,6 +810,9 @@ static void _update(void *view_data, int update_type, void *data) case UPDATE_TYPE_USER: priv->user_type = (enum user_item_type) data; break; + case UPDATE_TYPE_RESET: + _reset(priv); + break; default: _ERR("Invalid type"); return; -- 2.7.4