From 22e5f1ea46b1f835fe96f215e63e7d129bdbbef5 Mon Sep 17 00:00:00 2001 From: Jehun Lim Date: Fri, 28 Aug 2015 14:25:31 +0900 Subject: [PATCH 01/16] add edc for view mode ctxpopup Change-Id: If056e024f4fd85e2eb2372d7f4d1c85542e95a57 Signed-off-by: Jehun Lim --- include/define.h | 2 + include/view/base.h | 7 + res/edc/images/btn_option_arrow_dis.png | Bin 0 -> 2930 bytes res/edc/images/btn_option_arrow_foc_up.png | Bin 0 -> 2911 bytes res/edc/images/btn_option_arrow_nor.png | Bin 0 -> 2942 bytes res/edc/images/btn_option_arrow_sel.png | Bin 0 -> 2967 bytes res/edc/mediahub-theme.edc | 1 + res/edc/widgets/button.edc | 511 +++++++++++++++++++++++++++++ res/edc/widgets/ctxpopup.edc | 115 +++++++ 9 files changed, 636 insertions(+) create mode 100644 res/edc/images/btn_option_arrow_dis.png create mode 100644 res/edc/images/btn_option_arrow_foc_up.png create mode 100644 res/edc/images/btn_option_arrow_nor.png create mode 100644 res/edc/images/btn_option_arrow_sel.png create mode 100644 res/edc/widgets/ctxpopup.edc diff --git a/include/define.h b/include/define.h index dc8da71..50e92a1 100644 --- a/include/define.h +++ b/include/define.h @@ -55,6 +55,7 @@ #define COLOR_ITEM_BORDER 194 194 194 255 #define COLOR_ITEM_DIVIDER 224 224 224 255 #define COLOR_LIST_BG 244 244 244 255 +#define COLOR_POPUP_BORDER 154 154 154 255 #define COLOR_NO_CONTENT_BG 229 229 229 255 #define SHOW_VIEW_INTERVAL 0.1 @@ -78,6 +79,7 @@ #define SIG_ITEM_SELECTED "item,selected" #define SIG_ITEM_UNSELECTED "item,unselected" #define SIG_ITEM_TOGGLED "item,toggled" +#define SIG_ELM_HIDE "elm,state,hide" #define SIG_ELM_DISABLED "elm,state,disabled" #define SIG_ELM_FOCUS "elm,action,focus" #define SIG_ELM_UNFOCUS "elm,action,unfocus" diff --git a/include/view/base.h b/include/view/base.h index 03fa4e7..c5f365d 100644 --- a/include/view/base.h +++ b/include/view/base.h @@ -39,11 +39,18 @@ #define IMAGE_THUMBNAIL_PLAY IMAGEDIR"/ic_thumbnail_play.png" #define IMAGE_THUMBNAIL_FAVORITE IMAGEDIR"/ic_thumbnail_favorite.png" #define IMAGE_PLAY_INFO_FAVORITE "ic_title_favorite.png" +#define IMAGE_ARROW_UP_NOR "btn_option_arrow_nor.png" +#define IMAGE_ARROW_UP_FOC "btn_option_arrow_foc_up.png" +#define IMAGE_ARROW_UP_SEL "btn_option_arrow_sel.png" +#define IMAGE_ARROW_UP_DIS "btn_option_arrow_dis.png" /* style */ #define STYLE_BTN_MENU "base_btn_menu" #define STYLE_BTN_INDEX "base_btn_index" +#define STYLE_BTN_VIEW_MODE "base_btn_view_mode" +#define STYLE_BTN_VIEW_OPTION "base_btn_view_option" #define STYLE_BASE_PROGRESS "base_recent_progress" #define STYLE_TOAST_FAVORITE "base_toast_favorite" +#define STYLE_CTXPOPUP_VIEW_MODE "base_ctxpopup_view_mode" #endif /* __AIR_MEDIAHUB_VIEW_BASE_H__ */ diff --git a/res/edc/images/btn_option_arrow_dis.png b/res/edc/images/btn_option_arrow_dis.png new file mode 100644 index 0000000000000000000000000000000000000000..dc339370ef5907537c0eab4781ce2db4f8be5f31 GIT binary patch literal 2930 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 literal 0 HcmV?d00001 diff --git a/res/edc/images/btn_option_arrow_foc_up.png b/res/edc/images/btn_option_arrow_foc_up.png new file mode 100644 index 0000000000000000000000000000000000000000..f101da0fbce0ec1cba857ee9b0b0eb24cd26682e GIT binary patch literal 2911 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 JPDHLkV1oPSV?F=? literal 0 HcmV?d00001 diff --git a/res/edc/images/btn_option_arrow_nor.png b/res/edc/images/btn_option_arrow_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..17bc2c6fa3729e6cd4a0643fecb1c3b40535f60e GIT binary patch literal 2942 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 literal 0 HcmV?d00001 diff --git a/res/edc/images/btn_option_arrow_sel.png b/res/edc/images/btn_option_arrow_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..21b5ffa15d8b2c4c48f9c431d4438e80777bfbe1 GIT binary patch literal 2967 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 Date: Mon, 31 Aug 2015 12:13:19 +0900 Subject: [PATCH 02/16] controller: find actual location of button Change-Id: Ifbde0ac06917f0012f860113cc04a191a4ac098d Signed-off-by: Minkyu Kang --- src/util/controller.c | 23 ++++++++++++++++++++--- src/view/viewer.c | 48 +++++++++++++++++++++++++----------------------- 2 files changed, 45 insertions(+), 26 deletions(-) diff --git a/src/util/controller.c b/src/util/controller.c index 79ec34d..942c201 100644 --- a/src/util/controller.c +++ b/src/util/controller.c @@ -30,6 +30,7 @@ struct _event_cb { struct _control { Evas_Object *obj; char *part; + int loc; }; struct _priv { @@ -116,6 +117,7 @@ static bool _add_control(void *handle, const char *name, int loc, ctl->obj = btn; ctl->part = strdup(buf); + ctl->loc = loc; p->list = eina_list_append(p->list, ctl); @@ -140,6 +142,21 @@ static void _add_callback(void *handle, p->cb.data = data; } +static struct _control *_get_control_loc(Eina_List *list, int loc) +{ + Eina_List *l; + struct _control *ctl; + + EINA_LIST_FOREACH(list, l, ctl) { + if (ctl->loc == loc) + break; + + ctl = NULL; + } + + return ctl; +} + static void _focus(void *handle, int loc, bool foc) { struct _priv *p; @@ -151,7 +168,7 @@ static void _focus(void *handle, int loc, bool foc) } p = handle; - ctl = eina_list_nth(p->list, loc); + ctl = _get_control_loc(p->list, loc); if (ctl && ctl->obj) elm_object_focus_set(ctl->obj, foc); @@ -168,7 +185,7 @@ static void _signal(void *handle, int loc, const char *signal) } p = handle; - ctl = eina_list_nth(p->list, loc); + ctl = _get_control_loc(p->list, loc); if (ctl && ctl->obj) elm_object_signal_emit(ctl->obj, signal, ""); @@ -278,7 +295,7 @@ static Evas_Object *_get_object(void *handle, int loc) p = handle; - ctl = eina_list_nth(p->list, loc); + ctl = _get_control_loc(p->list, loc); if (!ctl) return NULL; diff --git a/src/view/viewer.c b/src/view/viewer.c index 6fce492..f3e768a 100644 --- a/src/view/viewer.c +++ b/src/view/viewer.c @@ -36,12 +36,15 @@ #define STYLE_VIEWER_BTN "viewer_btn" #define PART_VIEWER_BTN "control_btn" -#define PLAY_BTN_LOC 1 #define VIEWER_TIMEOUT 3.0 #define VIEWER_SEPARATOR "/ " #define VIDEO_COPYRIGHT "Unknown" +#define BTN_LOC_PREV 0 +#define BTN_LOC_PLAY 2 +#define BTN_LOC_NEXT 4 + enum { VIEWER_MOVIE, VIEWER_PHOTO, @@ -89,41 +92,41 @@ struct _btn_info { static struct _btn_info btn_movie[] = { { .name = SRC_BTN_PREV, - .loc = 1, + .loc = BTN_LOC_PREV, }, { .name = SRC_BTN_PLAY, - .loc = 2, + .loc = BTN_LOC_PLAY, }, { .name = SRC_BTN_NEXT, - .loc = 3, + .loc = BTN_LOC_NEXT, }, }; static struct _btn_info btn_photo[] = { { .name = SRC_BTN_GALLERY_PREV, - .loc = 0, + .loc = BTN_LOC_PREV, }, { .name = SRC_BTN_GALLERY_NEXT, - .loc = 4, + .loc = BTN_LOC_NEXT, }, }; static struct _btn_info btn_video[] = { { .name = SRC_BTN_GALLERY_PREV, - .loc = 0, + .loc = BTN_LOC_PREV, }, { .name = SRC_BTN_PLAY, - .loc = 2, + .loc = BTN_LOC_PLAY, }, { .name = SRC_BTN_GALLERY_NEXT, - .loc = 4, + .loc = BTN_LOC_NEXT, }, }; @@ -145,19 +148,19 @@ static struct _viewer_info viewer_info[] = { { .btns = btn_movie, .btn_count = 3, - .focus_loc = 1, + .focus_loc = BTN_LOC_PLAY, .callback = _callback_movie, }, { .btns = btn_photo, .btn_count = 2, - .focus_loc = 1, + .focus_loc = BTN_LOC_NEXT, .callback = _callback_photo, }, { .btns = btn_video, .btn_count = 3, - .focus_loc = 2, + .focus_loc = BTN_LOC_NEXT, .callback = _callback_video, }, }; @@ -465,17 +468,17 @@ static bool _viewer_show(struct _priv *priv) switch (priv->playlist.dir) { case DIR_PREV: - loc = 0; + loc = BTN_LOC_PREV; break; case DIR_NEXT: - loc = info->btn_count - 1; + loc = BTN_LOC_NEXT; break; case DIR_NONE: default: loc = info->focus_loc; if (id == VIEWER_MOVIE) { ctl->ops->signal(ctl->handle, - PLAY_BTN_LOC, SIG_SET_PAUSE); + BTN_LOC_PLAY, SIG_SET_PAUSE); } break; } @@ -546,7 +549,7 @@ static bool _viewer_prev(struct _priv *priv) struct controller *ctl; ctl = priv->viewer.ctl[priv->viewer.cur]; - ctl->ops->signal(ctl->handle, 0, SIG_SET_UNFOCUS); + ctl->ops->signal(ctl->handle, BTN_LOC_PREV, SIG_SET_UNFOCUS); _viewer_hide(priv); @@ -571,8 +574,7 @@ static bool _viewer_next(struct _priv *priv) struct controller *ctl; ctl = priv->viewer.ctl[priv->viewer.cur]; - ctl->ops->signal(ctl->handle, ctl->ops->get_count(ctl->handle) - 1, - SIG_SET_UNFOCUS); + ctl->ops->signal(ctl->handle, BTN_LOC_NEXT, SIG_SET_UNFOCUS); _viewer_hide(priv); @@ -742,8 +744,8 @@ static void _player_play(struct _priv *priv) } ctl = priv->viewer.ctl[priv->viewer.cur]; - ctl->ops->signal(ctl->handle, PLAY_BTN_LOC, SIG_SET_PAUSE); - ctl->ops->focus(ctl->handle, PLAY_BTN_LOC, true); + ctl->ops->signal(ctl->handle, BTN_LOC_PLAY, SIG_SET_PAUSE); + ctl->ops->focus(ctl->handle, BTN_LOC_PLAY, true); } static void _player_pause(struct _priv *priv) @@ -768,8 +770,8 @@ static void _player_pause(struct _priv *priv) } ctl = priv->viewer.ctl[priv->viewer.cur]; - ctl->ops->signal(ctl->handle, PLAY_BTN_LOC, SIG_SET_PLAY); - ctl->ops->focus(ctl->handle, PLAY_BTN_LOC, true); + ctl->ops->signal(ctl->handle, BTN_LOC_PLAY, SIG_SET_PLAY); + ctl->ops->focus(ctl->handle, BTN_LOC_PLAY, true); } static void _player_stop(struct _priv *priv) @@ -786,7 +788,7 @@ static void _player_stop(struct _priv *priv) playermgr_stop(priv->player); ctl = priv->viewer.ctl[priv->viewer.cur]; - ctl->ops->signal(ctl->handle, PLAY_BTN_LOC, SIG_SET_PLAY); + ctl->ops->signal(ctl->handle, BTN_LOC_PLAY, SIG_SET_PLAY); } static void _player_complete_cb(void *data) -- 2.7.4 From 2edb324f8b9abffa4dd36735b6c8cb4c86d75d11 Mon Sep 17 00:00:00 2001 From: Minkyu Kang Date: Mon, 31 Aug 2015 12:47:52 +0900 Subject: [PATCH 03/16] viewer: add rotate button Change-Id: I0304226dc2b42990010428d3e81c159d1994a60e Signed-off-by: Minkyu Kang --- include/view/viewer.h | 3 ++ res/edc/images/btn_view_contr_rotate_foc.png | Bin 0 -> 3938 bytes res/edc/images/btn_view_contr_rotate_nor.png | Bin 0 -> 4008 bytes res/edc/view/viewer.edc | 21 ++++++++++++++ res/edc/widgets/button.edc | 41 +++++++++++++++++++++++++++ src/view/viewer.c | 7 ++++- 6 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 res/edc/images/btn_view_contr_rotate_foc.png create mode 100644 res/edc/images/btn_view_contr_rotate_nor.png diff --git a/include/view/viewer.h b/include/view/viewer.h index 47307dc..2674ae8 100644 --- a/include/view/viewer.h +++ b/include/view/viewer.h @@ -57,6 +57,7 @@ #define SRC_BTN_NEXT "next" #define SRC_BTN_GALLERY_PREV "prev_gallery" #define SRC_BTN_GALLERY_NEXT "next_gallery" +#define SRC_BTN_ROTATE "rotate" /* images */ #define IMAGE_VIEWER_FAVORITE "ic_title_favorite.png" @@ -76,5 +77,7 @@ #define IMAGE_VIEWER_PHOTO_PREV_NORMAL "btn_view_slide_previous_nor.png" #define IMAGE_VIEWER_PHOTO_NEXT_FOCUS "btn_view_slide_next_foc.png" #define IMAGE_VIEWER_PHOTO_NEXT_NORMAL "btn_view_slide_next_nor.png" +#define IMAGE_VIEWER_ROTATE_FOCUS "btn_view_contr_rotate_foc.png" +#define IMAGE_VIEWER_ROTATE_NORMAL "btn_view_contr_rotate_nor.png" #endif /* __AIR_MEDIAHUB_VIEW_VIEWER_H__ */ diff --git a/res/edc/images/btn_view_contr_rotate_foc.png b/res/edc/images/btn_view_contr_rotate_foc.png new file mode 100644 index 0000000000000000000000000000000000000000..343f481e0184548358754876b8c0849e898334d7 GIT binary patch literal 3938 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 literal 0 HcmV?d00001 diff --git a/res/edc/view/viewer.edc b/res/edc/view/viewer.edc index 2c8b446..94f7b1e 100644 --- a/res/edc/view/viewer.edc +++ b/res/edc/view/viewer.edc @@ -283,6 +283,7 @@ group { visible: 0; } } + /* controller buttons */ part { name: "control_btn0"; type: SWALLOW; @@ -383,6 +384,26 @@ group { align: 0.0 0.5; } } + /* extra buttons */ + part { + name: "control_btn5"; + type: SWALLOW; + clip_to: "bottomarea"; + scale: 1; + description { + state: "default" 0.0; + min: 114 143; + rel1 { + to: "bottomarea"; + } + rel2 { + to: "bottomarea"; + relative: 0.0 1.0; + } + fixed: 1 1; + align: 0.0 0.5; + } + } part { name: "padding_time"; type: SPACER; diff --git a/res/edc/widgets/button.edc b/res/edc/widgets/button.edc index 60f2caa..197a689 100644 --- a/res/edc/widgets/button.edc +++ b/res/edc/widgets/button.edc @@ -964,6 +964,47 @@ group { } group { + name: "elm/button/base/viewer_btn_rotate"; + inherit: "elm/button/base/viewer_btn_prev"; + images { + image: IMAGE_VIEWER_ROTATE_NORMAL COMP; + image: IMAGE_VIEWER_ROTATE_FOCUS COMP; + } + parts { + part { + name: "bg"; + scale: 1; + description { + state: "default" 0.0; + min: 114 143; + image { + normal: IMAGE_VIEWER_ROTATE_NORMAL; + } + } + description { + state: "selected" 0.0; + inherit: "default" 0.0; + image { + normal: IMAGE_VIEWER_ROTATE_FOCUS; + } + } + description { + state: "clicked" 0.0; + image { + normal: IMAGE_VIEWER_ROTATE_FOCUS; + } + } + } + } + programs { + program { + name: "emit,signal"; + action: SIGNAL_EMIT SIG_BTN_CALLBACK SRC_BTN_ROTATE; + } + } +} + +group { name: "elm/button/base/music_btn_prev"; inherit: "elm/button/base/viewer_btn_prev"; images { diff --git a/src/view/viewer.c b/src/view/viewer.c index f3e768a..6fd38d5 100644 --- a/src/view/viewer.c +++ b/src/view/viewer.c @@ -44,6 +44,7 @@ #define BTN_LOC_PREV 0 #define BTN_LOC_PLAY 2 #define BTN_LOC_NEXT 4 +#define BTN_LOC_ROTATE 5 enum { VIEWER_MOVIE, @@ -113,6 +114,10 @@ static struct _btn_info btn_photo[] = { .name = SRC_BTN_GALLERY_NEXT, .loc = BTN_LOC_NEXT, }, + { + .name = SRC_BTN_ROTATE, + .loc = BTN_LOC_ROTATE, + }, }; static struct _btn_info btn_video[] = { @@ -153,7 +158,7 @@ static struct _viewer_info viewer_info[] = { }, { .btns = btn_photo, - .btn_count = 2, + .btn_count = 3, .focus_loc = BTN_LOC_NEXT, .callback = _callback_photo, }, -- 2.7.4 From 7e5a2cfcc325051357db973300b17cfabb789b63 Mon Sep 17 00:00:00 2001 From: Minkyu Kang Date: Mon, 31 Aug 2015 15:25:39 +0900 Subject: [PATCH 04/16] mplayer: fix location of buttons Change-Id: Id6e5d17ddbf1ffe281f3b6b36d71d12e227bea26 Signed-off-by: Minkyu Kang --- src/view/mplayer.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/view/mplayer.c b/src/view/mplayer.c index 97e4e33..ed4972f 100644 --- a/src/view/mplayer.c +++ b/src/view/mplayer.c @@ -36,7 +36,12 @@ #define STYLE_MUSIC_BTN "music_btn" #define PART_MUSIC_BTN "control_btn" -#define PLAY_BTN_LOC 2 + +#define BTN_LOC_SHUFFLE 0 +#define BTN_LOC_PREV 1 +#define BTN_LOC_PLAY 2 +#define BTN_LOC_NEXT 3 +#define BTN_LOC_REPEAT 4 enum _repeat_state { REPEAT_ALL, @@ -79,23 +84,23 @@ struct _btn_info { static struct _btn_info btn_player[] = { { .name = SRC_BTN_MUSIC_SHUFFLE, - .loc = 0, + .loc = BTN_LOC_SHUFFLE, }, { .name = SRC_BTN_MUSIC_PREV, - .loc = 1, + .loc = BTN_LOC_PREV, }, { .name = SRC_BTN_MUSIC_PLAY, - .loc = 2, + .loc = BTN_LOC_PLAY, }, { .name = SRC_BTN_MUSIC_NEXT, - .loc = 3, + .loc = BTN_LOC_NEXT, }, { .name = SRC_BTN_MUSIC_REPEAT, - .loc = 4, + .loc = BTN_LOC_REPEAT, }, }; @@ -479,7 +484,7 @@ static void _player_pause(struct _priv *priv) } ctl = priv->ctl; - ctl->ops->signal(ctl->handle, PLAY_BTN_LOC, SIG_SET_PLAY); + ctl->ops->signal(ctl->handle, BTN_LOC_PLAY, SIG_SET_PLAY); } static void _player_play(struct _priv *priv) @@ -526,7 +531,7 @@ static void _player_play(struct _priv *priv) } ctl = priv->ctl; - ctl->ops->signal(ctl->handle, PLAY_BTN_LOC, SIG_SET_PAUSE); + ctl->ops->signal(ctl->handle, BTN_LOC_PLAY, SIG_SET_PAUSE); } static void _player_stop(struct _priv *priv) @@ -537,7 +542,7 @@ static void _player_stop(struct _priv *priv) playermgr_stop(priv->player); ctl = priv->ctl; - ctl->ops->signal(ctl->handle, PLAY_BTN_LOC, SIG_SET_PLAY); + ctl->ops->signal(ctl->handle, BTN_LOC_PLAY, SIG_SET_PLAY); } static void _player_complete_cb(void *data) -- 2.7.4 From 2402daa162b8e90309fe03482bc1d8a5dd640dfa Mon Sep 17 00:00:00 2001 From: Minkyu Kang Date: Mon, 31 Aug 2015 15:26:42 +0900 Subject: [PATCH 05/16] viewer: adds support rotating image Change-Id: I058640a6d39668a20b491ddc5eb9dbd020f40763 Signed-off-by: Minkyu Kang --- src/view/viewer.c | 74 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 53 insertions(+), 21 deletions(-) diff --git a/src/view/viewer.c b/src/view/viewer.c index 6fd38d5..a29d1d8 100644 --- a/src/view/viewer.c +++ b/src/view/viewer.c @@ -41,6 +41,7 @@ #define VIEWER_SEPARATOR "/ " #define VIDEO_COPYRIGHT "Unknown" +#define BTN_LOC_NONE -1 #define BTN_LOC_PREV 0 #define BTN_LOC_PLAY 2 #define BTN_LOC_NEXT 4 @@ -53,21 +54,15 @@ enum { VIEWER_MAX }; -enum { - DIR_NONE, - DIR_PREV, - DIR_NEXT -}; - struct _viewer { struct controller *ctl[VIEWER_MAX]; int cur; + int foc; }; struct _playlist { Eina_List *list; int cur; - int dir; }; struct _priv { @@ -432,6 +427,44 @@ static void _set_played_position(struct _priv *priv, int position) app_media_update(am); } +static void _set_image_orientation(struct _priv *priv) +{ + app_media *am; + app_media_info *mi; + Evas_Object *image, *obj; + + am = eina_list_nth(priv->playlist.list, priv->playlist.cur); + if (!am) { + _ERR("failed to get app_media"); + return; + } + + mi = _get_current_media_info(priv); + if (!mi) { + _ERR("failed to getting media info"); + return; + } + + image = elm_image_add(priv->base); + if (!image) { + _ERR("failed to add image"); + return; + } + + elm_image_file_set(image, mi->file_path, NULL); + elm_image_orient_set(image, ELM_IMAGE_ROTATE_270); + + obj = elm_image_object_get(image); + if (!obj) { + _ERR("failed to get image object"); + return; + } + + evas_object_image_save(obj, mi->file_path, NULL, "quality=100"); + + app_media_update(am); +} + static void _update_to_player(struct _priv *priv) { viewmgr_update_view(VIEW_MPLAYER, UPDATE_PLAYER, NULL); @@ -471,22 +504,15 @@ static bool _viewer_show(struct _priv *priv) ctl->ops->show(ctl->handle); - switch (priv->playlist.dir) { - case DIR_PREV: - loc = BTN_LOC_PREV; - break; - case DIR_NEXT: - loc = BTN_LOC_NEXT; - break; - case DIR_NONE: - default: + loc = priv->viewer.foc; + if (loc == BTN_LOC_NONE) { loc = info->focus_loc; if (id == VIEWER_MOVIE) { ctl->ops->signal(ctl->handle, BTN_LOC_PLAY, SIG_SET_PAUSE); } - break; } + ctl->ops->signal(ctl->handle, loc, SIG_SET_FOCUS); ctl->ops->focus(ctl->handle, loc, true); @@ -565,7 +591,7 @@ static bool _viewer_prev(struct _priv *priv) else priv->playlist.cur--; - priv->playlist.dir = DIR_PREV; + priv->viewer.foc = BTN_LOC_PREV; r = _viewer_show(priv); @@ -590,7 +616,7 @@ static bool _viewer_next(struct _priv *priv) else priv->playlist.cur++; - priv->playlist.dir = DIR_NEXT; + priv->viewer.foc = BTN_LOC_NEXT; r = _viewer_show(priv); @@ -850,6 +876,12 @@ static void _callback_photo(void *data, const char *ev) _viewer_prev(priv); else if (!strcmp(ev, SRC_BTN_GALLERY_NEXT)) _viewer_next(priv); + else if (!strcmp(ev, SRC_BTN_ROTATE)) { + _set_image_orientation(priv); + + priv->viewer.foc = BTN_LOC_ROTATE; + _viewer_show(priv); + } } static void _callback_video(void *data, const char *ev) @@ -1015,7 +1047,7 @@ static Evas_Object *_create(Evas_Object *win, void *data) priv->playlist.list = NULL; priv->playlist.cur = 0; - priv->playlist.dir = DIR_NONE; + priv->viewer.foc = BTN_LOC_NONE; player = playermgr_create(win); if (!player) { @@ -1125,7 +1157,7 @@ static void _update(void *view_data, int update_type, void *data) priv->playlist.list = vdata->list; priv->playlist.cur = vdata->index; - priv->playlist.dir = DIR_NONE; + priv->viewer.foc = BTN_LOC_NONE; break; default: break; -- 2.7.4 From ace9214f748faeeff547097ec79b01b7f565121b Mon Sep 17 00:00:00 2001 From: Minkyu Kang Date: Mon, 31 Aug 2015 17:16:18 +0900 Subject: [PATCH 06/16] viewer: set to 0 played_position if movie is almost done Change-Id: I7e4cbccbf2f52bfce1298419535e37a529f85545 Signed-off-by: Minkyu Kang --- src/view/viewer.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/view/viewer.c b/src/view/viewer.c index a29d1d8..f91a8ab 100644 --- a/src/view/viewer.c +++ b/src/view/viewer.c @@ -37,6 +37,7 @@ #define STYLE_VIEWER_BTN "viewer_btn" #define PART_VIEWER_BTN "control_btn" +#define POSITION_MARGIN 500 #define VIEWER_TIMEOUT 3.0 #define VIEWER_SEPARATOR "/ " #define VIDEO_COPYRIGHT "Unknown" @@ -394,12 +395,23 @@ static const char *_get_current_media_id(struct _priv *priv) return mi->media_id; } -static void _set_played_position(struct _priv *priv, int position) +static void _set_played_position(struct _priv *priv) { video_meta_h video; app_media *am; + int position; + int duration; int r; + if (priv->viewer.cur != VIEWER_MOVIE) + return; + + position = playermgr_get_position(priv->player); + duration = playermgr_get_duration(priv->player); + + if (position > duration - POSITION_MARGIN) + position = 0; + am = eina_list_nth(priv->playlist.list, priv->playlist.cur); if (!am) { _ERR("failed to get app_media"); @@ -433,6 +445,9 @@ static void _set_image_orientation(struct _priv *priv) app_media_info *mi; Evas_Object *image, *obj; + if (priv->viewer.cur != VIEWER_PHOTO) + return; + am = eina_list_nth(priv->playlist.list, priv->playlist.cur); if (!am) { _ERR("failed to get app_media"); @@ -808,12 +823,8 @@ static void _player_pause(struct _priv *priv) static void _player_stop(struct _priv *priv) { struct controller *ctl; - int position; - if (priv->viewer.cur == VIEWER_MOVIE) { - position = playermgr_get_position(priv->player); - _set_played_position(priv, position); - } + _set_played_position(priv); progressbar_stop(priv->progress); playermgr_stop(priv->player); @@ -831,8 +842,6 @@ static void _player_complete_cb(void *data) priv = data; - _set_played_position(priv, 0); - if (priv->viewer.cur == VIEWER_MOVIE) { _pop_view(priv); } else if (priv->viewer.cur == VIEWER_VIDEO) { -- 2.7.4 From aa7fa473958480a4b9cb6b599d039825af807084 Mon Sep 17 00:00:00 2001 From: Minkyu Kang Date: Mon, 31 Aug 2015 17:39:48 +0900 Subject: [PATCH 07/16] player: set rotation to 0 Change-Id: I06a4915800f44d1bfeb1a9a83c48adf15f982aff Signed-off-by: Minkyu Kang --- src/util/playermgr.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/util/playermgr.c b/src/util/playermgr.c index d484431..d4d8967 100644 --- a/src/util/playermgr.c +++ b/src/util/playermgr.c @@ -278,6 +278,13 @@ bool playermgr_play(struct playermgr *m, const char *path, int ms) _ERR("player: set_display_mode error (%d)", r); return false; } + + r = player_set_display_rotation(m->player, + PLAYER_DISPLAY_ROTATION_NONE); + if (r != PLAYER_ERROR_NONE) { + _ERR("player: set_display_rotation error (%d)", r); + return false; + } } r = player_prepare(m->player); -- 2.7.4 From 0eaea3830d8a0d70ace1d9d04c4e294409e22623 Mon Sep 17 00:00:00 2001 From: Minkyu Kang Date: Mon, 31 Aug 2015 18:37:59 +0900 Subject: [PATCH 08/16] viewer: set scroller policy to off Change-Id: I99985381556546b82e94742050bae25ab0dab16d Signed-off-by: Minkyu Kang --- src/view/viewer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/view/viewer.c b/src/view/viewer.c index f91a8ab..29f3a7f 100644 --- a/src/view/viewer.c +++ b/src/view/viewer.c @@ -297,8 +297,8 @@ static void _draw_contents(struct _priv *priv, int id, app_media_info *mi) elm_object_focus_allow_set(obj, EINA_FALSE); elm_scroller_policy_set(obj, - ELM_SCROLLER_POLICY_AUTO, - ELM_SCROLLER_POLICY_AUTO); + ELM_SCROLLER_POLICY_OFF, + ELM_SCROLLER_POLICY_OFF); /* * set this photocam object to photo_pre (preloaded photo) -- 2.7.4 From f51516fedeab9e0b14142c7ec45ae4d7d742e531 Mon Sep 17 00:00:00 2001 From: Jehun Lim Date: Mon, 31 Aug 2015 21:31:48 +0900 Subject: [PATCH 09/16] add ctxpopup util file Change-Id: I541f1872f2db5d575a5e11ffa763836671ecc1bd Signed-off-by: Jehun Lim --- CMakeLists.txt | 1 + include/define.h | 1 + include/util/ctxpopup.h | 30 +++++++ include/util/util.h | 4 +- res/edc/widgets/ctxpopup.edc | 2 +- src/util/ctxpopup.c | 198 +++++++++++++++++++++++++++++++++++++++++++ src/util/listmgr.c | 2 +- src/util/util.c | 27 +++++- 8 files changed, 260 insertions(+), 5 deletions(-) create mode 100644 include/util/ctxpopup.h create mode 100644 src/util/ctxpopup.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 8f4c9db..5045400 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -69,6 +69,7 @@ src/util/listmgr.c src/util/timeout_handler.c src/util/util.c src/util/playermgr.c +src/util/ctxpopup.c src/util/progressbar.c src/data/mediadata.c ) diff --git a/include/define.h b/include/define.h index 50e92a1..01ab6b9 100644 --- a/include/define.h +++ b/include/define.h @@ -89,6 +89,7 @@ #define SIG_SOURCE_SRC "src" #define SIG_SHOW_VIEW "show,view" #define SIG_HIDE_VIEW "hide,view" +#define SIG_DISMISSED "dismissed" /* transition */ #define TRANSITION_FOCUS DECELERATE 0.20 diff --git a/include/util/ctxpopup.h b/include/util/ctxpopup.h new file mode 100644 index 0000000..b479373 --- /dev/null +++ b/include/util/ctxpopup.h @@ -0,0 +1,30 @@ +/* + * 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_MEDIAHUB_CTXPOPUP_H__ +#define __AIR_MEDIAHUB_CTXPOPUP_H__ + +struct ctxpopup; + +struct ctxpopup *ctxpopup_create(Evas_Object *base, + const char *ctxpopup_style, const char *btn_style, + const char **text, int text_size); +void ctxpopup_show(struct ctxpopup *m, int x, int y); +void ctxpopup_set_callback(struct ctxpopup *m, void (*func)(void *, int), + void *data); +void ctxpopup_destroy(struct ctxpopup *m); + +#endif diff --git a/include/util/util.h b/include/util/util.h index 17bf998..a9ece63 100644 --- a/include/util/util.h +++ b/include/util/util.h @@ -21,7 +21,9 @@ #include void util_set_alpha_color(Evas_Object *obj, int alpha); -Evas_Object *util_add_box(Evas_Object *base); +Evas_Object *util_add_button(Evas_Object *base, const char *style, + const char *text); +Evas_Object *util_add_box(Evas_Object *base, Eina_Bool horizontal); Evas_Object *util_add_gengrid(Evas_Object *base, int item_size_x, int item_size_y, Eina_Bool horizontal); Evas_Object *util_add_genlist(Evas_Object *base); diff --git a/res/edc/widgets/ctxpopup.edc b/res/edc/widgets/ctxpopup.edc index 1e3b2d7..188d688 100644 --- a/res/edc/widgets/ctxpopup.edc +++ b/res/edc/widgets/ctxpopup.edc @@ -107,7 +107,7 @@ group { programs { program { name: "hide"; - signal: SIGNAL_ELM_HIDE; + signal: SIG_ELM_HIDE; source: SIG_SOURCE_ELM; action: SIGNAL_EMIT "elm,action,hide,finished" ""; } diff --git a/src/util/ctxpopup.c b/src/util/ctxpopup.c new file mode 100644 index 0000000..04f5047 --- /dev/null +++ b/src/util/ctxpopup.c @@ -0,0 +1,198 @@ +/* + * 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 "define.h" +#include "util/ctxpopup.h" +#include "util/util.h" + +struct _selected_cb { + void (*func)(void *data, int id); + void *data; +}; + +struct ctxpopup { + Evas_Object *popup; + struct _selected_cb cb; +}; + +static void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj, + Evas_Event_Key_Down *ev) +{ + struct ctxpopup *m; + + if (!data || !ev) + return; + + m = data; + + if (!strcmp(ev->keyname, KEY_BACK) || + !strcmp(ev->keyname, KEY_BACK_REMOTE)) + ctxpopup_destroy(m); +} + +static void _mouse_move_cb(int id, void *data, Evas *e, Evas_Object *obj, + Evas_Event_Mouse_Move *ev) +{ + if (!obj) + return; + + if (!elm_object_focus_get(obj)) + elm_object_focus_set(obj, EINA_TRUE); +} + +static void _clicked_cb(int id, void *data, Evas_Object *obj) +{ + struct ctxpopup *m; + + if (!data) + return; + + m = data; + + if (m->cb.func) + m->cb.func(m->cb.data, id); + + ctxpopup_destroy(m); +} + +static void _dismissed_cb(void *data, Evas_Object *obj, void *event_info) +{ + struct ctxpopup *m; + + if (!data) + return; + + m = data; + + ctxpopup_destroy(m); +} + +static input_handler _handler = { + .key_down = _key_down_cb, + .mouse_move = _mouse_move_cb, + .clicked = _clicked_cb +}; + +void ctxpopup_set_callback(struct ctxpopup *m, void (*func)(void *, int), + void *data) +{ + if (!m) { + _ERR("failed to get ctxpopup info"); + return; + } + + m->cb.func = func; + m->cb.data = data; +} + +void ctxpopup_show(struct ctxpopup *m, int x, int y) +{ + if (!m) { + _ERR("failed to get ctxpopup info"); + return; + } + + evas_object_move(m->popup, x * elm_config_scale_get(), + y * elm_config_scale_get()); + + evas_object_show(m->popup); +} + +struct ctxpopup *ctxpopup_create(Evas_Object *base, const char *ctxpopup_style, + const char *btn_style, const char **text, int text_size) +{ + struct ctxpopup *m; + Evas_Object *ctxpopup, *box, *btn; + Evas_Object *firstbtn; + int i; + + if (!base || !text || text_size <= 0) { + _ERR("invalid argument"); + return NULL; + } + + m = calloc(1, sizeof(*m)); + if (!m) { + _ERR("failed to allocate"); + return NULL; + } + + ctxpopup = elm_ctxpopup_add(base); + if (!ctxpopup) { + _ERR("failed to create ctxpopup object"); + free(m); + return NULL; + } + + if (ctxpopup_style) + elm_object_style_set(ctxpopup, ctxpopup_style); + + box = util_add_box(ctxpopup, EINA_FALSE); + if (!box) { + _ERR("failed to add box"); + return false; + } + + elm_box_padding_set(box, 0, 0); + + for (i = 0; i < text_size; i++) { + btn = util_add_button(box, btn_style, text[i]); + if (!btn) { + _ERR("failed to add button"); + evas_object_del(ctxpopup); + return false; + } + + elm_box_pack_end(box, btn); + + evas_object_show(btn); + + inputmgr_add_callback(btn, i, &_handler, m); + + if (i == 0) + firstbtn = btn; + } + + elm_object_focus_next_object_set(firstbtn, btn, ELM_FOCUS_UP); + elm_object_focus_next_object_set(btn, firstbtn, ELM_FOCUS_DOWN); + + elm_object_content_set(ctxpopup, box); + + evas_object_smart_callback_add(ctxpopup, SIG_DISMISSED, + _dismissed_cb, m); + + m->popup = ctxpopup; + + return m; +} + +void ctxpopup_destroy(struct ctxpopup *m) +{ + if (!m) { + _ERR("failed to get ctxpopup info"); + return; + } + + evas_object_hide(m->popup); + evas_object_del(m->popup); + + free(m); +} diff --git a/src/util/listmgr.c b/src/util/listmgr.c index a96e005..857d2a0 100644 --- a/src/util/listmgr.c +++ b/src/util/listmgr.c @@ -690,7 +690,7 @@ bool listmgr_draw_list_area(struct listmgr *lmgr) inputmgr_add_callback(scr, LISTMGR_SCROLLER, &_handler, lmgr); - box = util_add_box(scr); + box = util_add_box(scr, EINA_TRUE); if (!box) { _ERR("failed to create box object"); evas_object_del(scr); diff --git a/src/util/util.c b/src/util/util.c index d7b0e06..60d8b3b 100644 --- a/src/util/util.c +++ b/src/util/util.c @@ -35,7 +35,30 @@ void util_set_alpha_color(Evas_Object *obj, int alpha) evas_object_color_set(obj, r, g, b, alpha); } -Evas_Object *util_add_box(Evas_Object *base) +Evas_Object *util_add_button(Evas_Object *base, const char *style, + const char *text) +{ + Evas_Object *btn; + + if (!base) + return NULL; + + btn = elm_button_add(base); + if (!btn) { + _ERR("failed to create button object"); + return NULL; + } + + if (style) + elm_object_style_set(btn, style); + + if (text) + elm_object_text_set(btn, text); + + return btn; +} + +Evas_Object *util_add_box(Evas_Object *base, Eina_Bool horizontal) { Evas_Object *box; @@ -50,7 +73,7 @@ Evas_Object *util_add_box(Evas_Object *base) evas_object_size_hint_align_set(box, 0.0, EVAS_HINT_FILL); evas_object_size_hint_weight_set(box, 0.0, EVAS_HINT_EXPAND); - elm_box_horizontal_set(box, EINA_TRUE); + elm_box_horizontal_set(box, horizontal); return box; } -- 2.7.4 From 66df2042e5d1d21c38fecc109c8773eb559a7367 Mon Sep 17 00:00:00 2001 From: Minkyu Kang Date: Tue, 1 Sep 2015 15:53:10 +0900 Subject: [PATCH 10/16] viewer: add zoom button Change-Id: I77e246785ceba006124c581adf41a226bbeb92eb Signed-off-by: Minkyu Kang --- include/view/viewer.h | 3 +++ res/edc/images/btn_view_contr_zoom_foc.png | Bin 0 -> 1872 bytes res/edc/images/btn_view_contr_zoom_nor.png | Bin 0 -> 2022 bytes res/edc/view/viewer.edc | 20 +++++++++++++++ res/edc/widgets/button.edc | 40 +++++++++++++++++++++++++++++ src/view/viewer.c | 7 ++++- 6 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 res/edc/images/btn_view_contr_zoom_foc.png create mode 100644 res/edc/images/btn_view_contr_zoom_nor.png diff --git a/include/view/viewer.h b/include/view/viewer.h index 2674ae8..559402b 100644 --- a/include/view/viewer.h +++ b/include/view/viewer.h @@ -58,6 +58,7 @@ #define SRC_BTN_GALLERY_PREV "prev_gallery" #define SRC_BTN_GALLERY_NEXT "next_gallery" #define SRC_BTN_ROTATE "rotate" +#define SRC_BTN_ZOOM "zoom" /* images */ #define IMAGE_VIEWER_FAVORITE "ic_title_favorite.png" @@ -79,5 +80,7 @@ #define IMAGE_VIEWER_PHOTO_NEXT_NORMAL "btn_view_slide_next_nor.png" #define IMAGE_VIEWER_ROTATE_FOCUS "btn_view_contr_rotate_foc.png" #define IMAGE_VIEWER_ROTATE_NORMAL "btn_view_contr_rotate_nor.png" +#define IMAGE_VIEWER_ZOOM_FOCUS "btn_view_contr_zoom_foc.png" +#define IMAGE_VIEWER_ZOOM_NORMAL "btn_view_contr_zoom_nor.png" #endif /* __AIR_MEDIAHUB_VIEW_VIEWER_H__ */ diff --git a/res/edc/images/btn_view_contr_zoom_foc.png b/res/edc/images/btn_view_contr_zoom_foc.png new file mode 100644 index 0000000000000000000000000000000000000000..da4574045e22e7dfbf434bf86c4f616425473c30 GIT binary patch literal 1872 zcmbVN3rrJt7_Z`M1{B2?KI-j2lwu!ueOF3tdo5IHVZ4P*ExiLeXs=ukXce70jUckf zOYIbOA}%VTqN30taWfH7gE-^DL+7UGbW9@=6%4W~0!~9*vdi6l|NnR2?|c1!UoJOX z7wj={_Cy+u=Aj8eA}C2vPvL}d)Z5|M*G~y=QWZx=;z?wdp1^2w6i>tejY*%3MPPc= zo_+-jq|w}xj8So9oHkTqz)dW@%Z6n$StvA(7AUh>^oCT71QM}iqge_*bJl}^5tV|m zd@V<7QDP~^kTnDrxkeXdSd(fHqo6DZ2((Ek2PTZv12$8d*($L~!2!P#YVA_9L14gy zOqGJ~l8V!Y14^9006vS$G;kmY5C~Whk1r5FivgGe!E6q73z!g3!WT$jAuxD>R5Suj zl0+ct!C2Hz3Z{^xMZ#uhWo5ClxGbDVWqE#35Sn@p~{2CS`Q1ol3S5v{FJ zb_>Riz^r%%VW7?<$!7>m_3qPwT!vIOk}$$Z9g02;!3`NE%uH$!DM)=`p+;1K2suhV zmk)D9h)BhQAQ6uvSF2Qfo?H!yg<{2!kCCuEj)=oma1od*7D14TuaL{t3ZaNE7r`Pm zA5sosHD)WRHyf~_xJD}OAXfQFtVBs*dJ-q1a6D~@0pTe)iCa@}3!sb?0E=RcW)#n| z`n!(jU9|{C7&9?cP2eVApuZC12=QU6M2<)$f|U?eEd+@bA_2k^t6)Tl$VFT}IEY36 zPtVv?GHe$){zaA{6~#c;a+vzmW_WloGc_>;H5wb{o^_)pZi5DqN7-6C_h?hS2r z&zf`Wht<+czwM~^-AoT%;=I1S$xY^WhfMw{$mwXgmR8xE;_DeCM!>0_pXH4CNQ?%j zxRf7@Q3V6a_X6<+M-^-cS^ALxrVc2P#e@T{=!~uom{U^n^6uo0vaZmY6YY`feX7n` zs?;S#%YL8#$`Mn!Xr>khXF7iNGvxR6#nhCCGM*KGXKD&?Ydk=Nx1_bzw`wdtj3ONh ztTC~V?q9^a$X)xBe%gNY(=$3Apthu{u`r}D|?yd`Zq^srW(2gJL zSX&sUemxNq-1B`x=v4dOxS+z#7iIQO$_z`Ge2bQ pfAZ8tWfxIL6d$s8x9saNvuLz@;r4`PMX&20r%~yUO2z6;{{RGYtpfl6 literal 0 HcmV?d00001 diff --git a/res/edc/images/btn_view_contr_zoom_nor.png b/res/edc/images/btn_view_contr_zoom_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..e5d69d496ad8a37772c8db09c9c2f7ed7f8262f7 GIT binary patch literal 2022 zcmbVNc~BE)6c6>N^`ttWSUWC@rB%tXn>!^+$R>aSazweb7?KTyklnD^n1C>Nv>4Q? zV69b)*jBEpXrXAW?N~e_xGh>Gwc^=YU=S6s;#D2{1;JLw=^x$MZ{PR5eed_~-J+Q2 zurVVik7Th}V|vsgn6Mol7}7!@hgk!Ft8Bg1i+EkK*a3ZCt-Xmuu>hSKnKBO!;o4;_Xfqh1at z2%~sW7A2lx49}(T_}plXF4v@!>fzb5pkRj#0GM%F3pvbLgjME{!~M82u=lXJFw`$X zo8<6QrxK%LASFrRkdVV?>v#wPi9{SkAQXv^APD6lD3=Fr5gQT6gd!O#h6XMeSflg? zSsbPwumw(XID@7wGA`F{w{z@#4oRhR5vf$_!9YLLvoKO;GvfpufyrU;hNCy?WtfW~e{EGUH3^qaZ|{L?uC$2#6Lzq@fZKCXlL7Oo=HZeBk?2UH$*b z85cOi^)$!7nq`m$I?%Iy*81S^YnYo(SDJM>8 zk`H!jCm$T0o0aRW9$_?&Gi^JqyL6=1&R+R`l?~^X&xU+5ePRv1-#QzUBi{(fNV+=B zU9r>IY5(Smzn|djt?!#lXHC6N)#P?O8a{jBDY>=zxJI|{YHe27?!>bw^6gA;jSARP8t&i2rSVqlI zOz7hqb#0|>AG8&>eb)9WJZcoTYiIfKIHW;3chh7hn+aoV3?9*LNH083`qh3t=XcYa z;>0h5tea-!@15Tf^mFfqhXByukW!O8wyVpFNvglrtH?={lGXJK_q8MuyX1xkO+J2m zj}Z}5>ZjCZJy?0Hx2J<}o5I`)2Og^Rk@vIB>s_KJ9koZ%(gOdF+@}1gWi1^(nCs{) zCYBL19H!3u;hp>&`}69j#E!w#dG^+dYiB?1@V|TWFIoAu{m5BgOueiuO_Q0|<=pWk z<@%wxdT&3k@~v;nE|sc#$-dg_7pfObhmWRLwik6yzg!x<$;(|869qm*XRPAFWP6JU zM)O2fH`jl*py0hItgvxTy%K53{bI>5ptHQScv9wvf4D(a&@yf&qpO;~Jz+wz|Lp}g zuTRR{b8=TvqjygAeoHeQzMF^zG~pJeMpAORQWVL^;2nTiLkb z0dcTGceu7}^^U^sKR;hbRt3TVKXBg}cWALV#5(lx)E1vDv3rh{oHW!8>nn7f-*IDN z{=19z?OWJ=BxU18eP`WANn@*Asqq=xKH1o_JY@5z{YdkHi}r@Qu7YxP{-)~g=*^ar z+fB`{P29aA=$H8|!9OAV@^g2q_pWuNu4;7jr1;)TCX(BeTG{g|B`0>fO|9+|ODFDD z%(6@%DYYI$Qv}<`n8tT+E_?KOkMzSbW?|1HMbWyhzPhiQ_nZZV=~}ceJEyc<+=*_y z-xyL^10T*l*}W{~i%6H#b#(5ndjUf(1g#gYzk?p=I>m-{N7iJx@3$xPJtkIMR0gl1 z*IhZVb*Zy5tf}m6!)le`OquKUyo5{f6?3BvWC`wjF_;?OUM-#BYK)v0xG_inTS@VE zcRrcPN5mn{pz&LtTc2+Ik%I-MRusJdc=Xf}(^3sXbknfrf_qKTUmfu&3h$q#=gEtc yH85u{P8M8}>IHihF9Q(I6KFhOI-RMnjAl(@j$MyQVW0H;c_UQOSWW2S6@LRAc?vfG literal 0 HcmV?d00001 diff --git a/res/edc/view/viewer.edc b/res/edc/view/viewer.edc index 94f7b1e..29dd7a6 100644 --- a/res/edc/view/viewer.edc +++ b/res/edc/view/viewer.edc @@ -405,6 +405,26 @@ group { } } part { + name: "control_btn6"; + type: SWALLOW; + clip_to: "bottomarea"; + scale: 1; + description { + state: "default" 0.0; + min: 114 143; + rel1 { + to: "control_btn5"; + relative: 1.0 0.5; + } + rel2 { + to: "control_btn5"; + relative: 1.0 0.5; + } + fixed: 1 1; + align: 0.0 0.5; + } + } + part { name: "padding_time"; type: SPACER; scale: 1; diff --git a/res/edc/widgets/button.edc b/res/edc/widgets/button.edc index 197a689..c796b32 100644 --- a/res/edc/widgets/button.edc +++ b/res/edc/widgets/button.edc @@ -1005,6 +1005,46 @@ group { } group { + name: "elm/button/base/viewer_btn_zoom"; + inherit: "elm/button/base/viewer_btn_rotate"; + images { + image: IMAGE_VIEWER_ZOOM_NORMAL COMP; + image: IMAGE_VIEWER_ZOOM_FOCUS COMP; + } + parts { + part { + name: "bg"; + scale: 1; + description { + state: "default" 0.0; + image { + normal: IMAGE_VIEWER_ZOOM_NORMAL; + } + } + description { + state: "selected" 0.0; + inherit: "default" 0.0; + image { + normal: IMAGE_VIEWER_ZOOM_FOCUS; + } + } + description { + state: "clicked" 0.0; + image { + normal: IMAGE_VIEWER_ZOOM_FOCUS; + } + } + } + } + programs { + program { + name: "emit,signal"; + action: SIGNAL_EMIT SIG_BTN_CALLBACK SRC_BTN_ZOOM; + } + } +} + +group { name: "elm/button/base/music_btn_prev"; inherit: "elm/button/base/viewer_btn_prev"; images { diff --git a/src/view/viewer.c b/src/view/viewer.c index 29f3a7f..ca82aad 100644 --- a/src/view/viewer.c +++ b/src/view/viewer.c @@ -47,6 +47,7 @@ #define BTN_LOC_PLAY 2 #define BTN_LOC_NEXT 4 #define BTN_LOC_ROTATE 5 +#define BTN_LOC_ZOOM 6 enum { VIEWER_MOVIE, @@ -114,6 +115,10 @@ static struct _btn_info btn_photo[] = { .name = SRC_BTN_ROTATE, .loc = BTN_LOC_ROTATE, }, + { + .name = SRC_BTN_ZOOM, + .loc = BTN_LOC_ZOOM, + }, }; static struct _btn_info btn_video[] = { @@ -154,7 +159,7 @@ static struct _viewer_info viewer_info[] = { }, { .btns = btn_photo, - .btn_count = 3, + .btn_count = 4, .focus_loc = BTN_LOC_NEXT, .callback = _callback_photo, }, -- 2.7.4 From 3ff38cb8a35e74d5343b0f9adb6c4019d492a8a5 Mon Sep 17 00:00:00 2001 From: Jehun Lim Date: Tue, 1 Sep 2015 18:18:30 +0900 Subject: [PATCH 11/16] delete notify object when timeout Change-Id: I979eec4904fe3009662ca8d83abb41fbb02aa5c6 Signed-off-by: Jehun Lim --- include/define.h | 1 + src/util/util.c | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/include/define.h b/include/define.h index 01ab6b9..9719c5a 100644 --- a/include/define.h +++ b/include/define.h @@ -90,6 +90,7 @@ #define SIG_SHOW_VIEW "show,view" #define SIG_HIDE_VIEW "hide,view" #define SIG_DISMISSED "dismissed" +#define SIG_TIMEOUT "timeout" /* transition */ #define TRANSITION_FOCUS DECELERATE 0.20 diff --git a/src/util/util.c b/src/util/util.c index 60d8b3b..adac378 100644 --- a/src/util/util.c +++ b/src/util/util.c @@ -19,6 +19,7 @@ #include #include +#include "define.h" #include "util/util.h" void util_set_alpha_color(Evas_Object *obj, int alpha) @@ -152,6 +153,14 @@ Evas_Object *util_add_image(Evas_Object *base, const char *file) return image; } +static void _notify_timeout(void *data, Evas_Object *obj, void *ei) +{ + if (!obj) + return; + + evas_object_del(obj); +} + Evas_Object *util_add_notify(Evas_Object *base, const char *notify_style, const char *label_style, const char *text, double time) { @@ -173,6 +182,8 @@ Evas_Object *util_add_notify(Evas_Object *base, const char *notify_style, EVAS_HINT_EXPAND); elm_notify_align_set(notify, 0.0, 1.0); elm_notify_timeout_set(notify, time); + evas_object_smart_callback_add(notify, SIG_TIMEOUT, + _notify_timeout, NULL); label = elm_label_add(notify); if (!label) { -- 2.7.4 From 38f65f0ad62960892a2abc98ccbbf0eeafca1a25 Mon Sep 17 00:00:00 2001 From: Jehun Lim Date: Tue, 1 Sep 2015 19:49:25 +0900 Subject: [PATCH 12/16] listmgr: delete grid item focused callback Change-Id: Idedcb84fd0cb23c3ab3944c56271fdff41fb42d1 Signed-off-by: Jehun Lim --- include/define.h | 1 - res/edc/widgets/gengrid.edc | 15 ------------ src/util/listmgr.c | 59 ++++----------------------------------------- 3 files changed, 5 insertions(+), 70 deletions(-) diff --git a/include/define.h b/include/define.h index 9719c5a..1e702ad 100644 --- a/include/define.h +++ b/include/define.h @@ -75,7 +75,6 @@ #define SIG_BTN_CLICKED "btn,clicked" #define SIG_BTN_SELECTED "btn,selected" #define SIG_BTN_UNSELECTED "btn,unselected" -#define SIG_ITEM_FOCUSED "item,focused" #define SIG_ITEM_SELECTED "item,selected" #define SIG_ITEM_UNSELECTED "item,unselected" #define SIG_ITEM_TOGGLED "item,toggled" diff --git a/res/edc/widgets/gengrid.edc b/res/edc/widgets/gengrid.edc index b0e3eba..04b7876 100644 --- a/res/edc/widgets/gengrid.edc +++ b/res/edc/widgets/gengrid.edc @@ -441,11 +441,6 @@ group { target: "part_focus3"; target: "defaultbg_text"; transition: TRANSITION_FOCUS; - after: "item_focused"; - } - program { - name: "item_focused"; - action: SIGNAL_EMIT SIG_ITEM_FOCUSED SIG_SOURCE_EDC; } program { name: "go_passive"; @@ -897,11 +892,6 @@ group { target: "part_focus4"; target: PART_ELM_TEXT_PLAYTIME; transition: TRANSITION_FOCUS; - after: "item_focused"; - } - program { - name: "item_focused"; - action: SIGNAL_EMIT SIG_ITEM_FOCUSED SIG_SOURCE_EDC; } program { name: "go_passive"; @@ -1556,11 +1546,6 @@ group { name: "focus,in,anim,2"; action: STATE_SET "selected" 0.0; target: "defaultbg_text"; - after: "item_focused"; - } - program { - name: "item_focused"; - action: SIGNAL_EMIT SIG_ITEM_FOCUSED SIG_SOURCE_EDC; } program { name: "go_passive"; diff --git a/src/util/listmgr.c b/src/util/listmgr.c index 857d2a0..f62d21e 100644 --- a/src/util/listmgr.c +++ b/src/util/listmgr.c @@ -188,6 +188,10 @@ static void _focused_cb(int id, void *data, Evas_Object *obj, lmgr->focused = elm_object_parent_widget_get(obj); elm_object_signal_emit(lmgr->data->menu_btn, SIG_BTN_SELECTED, SIG_SOURCE_SRC); + + if (it) + lmgr->focused_it = it; + break; default: break; @@ -243,60 +247,11 @@ static void _play_info_selected_cb(void *data, Evas_Object *obj, pops->selected_cb(pops->ops_data, obj); } -static void _item_focused_cb(void *data, Elm_Object_Item *it, - const char *emission, const char *source) -{ - struct listmgr *lmgr; - - if (!data || !it) - return; - - lmgr = data; - - lmgr->focused_it = it; -} - -static void _add_grid_item_callback(Elm_Object_Item *it, void *data) -{ - elm_object_item_signal_callback_add(it, SIG_ITEM_FOCUSED, - SIG_SOURCE_EDC, _item_focused_cb, data); -} - -static void _delete_grid_item_callback(Elm_Object_Item *it) -{ - elm_object_item_signal_callback_del(it, SIG_ITEM_FOCUSED, - SIG_SOURCE_EDC, _item_focused_cb); -} - -static void _realized_cb(int id, void *data, Evas_Object *obj, - Elm_Object_Item *it) -{ - struct listmgr *lmgr; - - if (!data || !it) - return; - - lmgr = data; - - _add_grid_item_callback(it, lmgr); -} - -static void _unrealized_cb(int id, void *data, Evas_Object *obj, - Elm_Object_Item *it) -{ - if (!it) - return; - - _delete_grid_item_callback(it); -} - static input_handler _grid_handler = { .key_down = _key_down_cb, .mouse_move = _mouse_move_cb, .focused = _focused_cb, .selected = _grid_selected_cb, - .realized = _realized_cb, - .unrealized = _unrealized_cb }; static input_handler _handler = { @@ -550,12 +505,8 @@ void _update_grid_realized_items(struct listmgr *lmgr, Eina_List *list) Eina_List *l; Elm_Object_Item *it; - EINA_LIST_FOREACH(list, l, it) { - _delete_grid_item_callback(it); - + EINA_LIST_FOREACH(list, l, it) elm_gengrid_item_update(it); - _add_grid_item_callback(it, lmgr); - } } bool listmgr_update_content_item(struct listmgr *lmgr) -- 2.7.4 From 91ab3c2eb1f1b3b8521474e1a1e26bb7f1e7e095 Mon Sep 17 00:00:00 2001 From: Jehun Lim Date: Wed, 2 Sep 2015 15:24:54 +0900 Subject: [PATCH 13/16] base: add button and ctxpopup to select view mode Change-Id: I8e45929ebcc5b67076f375459054e26a5c999bf4 Signed-off-by: Jehun Lim --- include/layout/movie.h | 1 - include/view/base.h | 2 + res/edc/layout/movie.edc | 41 --------- res/edc/view/base.edc | 85 ++++++++++++++++- res/edc/widgets/ctxpopup.edc | 2 +- src/layout/gallery.c | 6 +- src/layout/movie.c | 6 +- src/layout/music.c | 6 +- src/view/base.c | 211 +++++++++++++++++++++++++++++++++++-------- 9 files changed, 273 insertions(+), 87 deletions(-) diff --git a/include/layout/movie.h b/include/layout/movie.h index f6f6145..2de9449 100644 --- a/include/layout/movie.h +++ b/include/layout/movie.h @@ -27,7 +27,6 @@ /* part */ #define PART_CONTENT "part.content" #define PART_NOCONTENT "part.nocontent" -#define PART_CONTENT_INFO "part.content_info" #define PART_RECENT_CONTENT_TEXTBG "part.recent_content_textbg" #define PART_RECENT_CONTENT_THUMBNAIL "part.recent_content_thumbnail" #define PART_RECENT_CONTENT_FAVORITE "part.recent_content_favorite" diff --git a/include/view/base.h b/include/view/base.h index c5f365d..95dda2e 100644 --- a/include/view/base.h +++ b/include/view/base.h @@ -28,6 +28,8 @@ #define PART_TITLE "part.title" #define PART_MENU_AREA "part.menu_area" #define PART_THUMBNAIL_AREA "part.thumbnail_area" +#define PART_VIEW_MODE "part.view_mode" +#define PART_CONTENT_INFO "part.content_info" #define PART_ITEM_TITLE "part.item_title" #define PART_ITEM_CONTENT "part.item_content" diff --git a/res/edc/layout/movie.edc b/res/edc/layout/movie.edc index 479d8ad..3b8c598 100644 --- a/res/edc/layout/movie.edc +++ b/res/edc/layout/movie.edc @@ -52,10 +52,6 @@ group { to: "padding_thumbnail_area"; relative: 1.0 0.0; } - rel2 { - to: "padding_content_info"; - relative: 1.0 0.0; - } } } part { @@ -74,42 +70,5 @@ group { color: COLOR_TEXT_NORMAL; } } - part { - name: "padding_content_info"; - type: SPACER; - scale: 1; - description { - state: "default" 0.0; - rel1.to: PART_CONTENT_INFO; - rel2 { - to: PART_CONTENT_INFO; - relative: 1.0 0.0; - } - min: 0 16; - align: 0.5 1.0; - fixed: 0 1; - } - } - part { - name: PART_CONTENT_INFO; - type: TEXT; - scale: 1; - description { - state: "default" 0.0; - rel1 { - to: "padding_thumbnail_area"; - relative: 1.0 1.0; - } - text { - font: FONT_LIGHT; - size: 28; - align: 0.0 0.5; - } - min: 0 64; - align: 0.5 1.0; - color: COLOR_TEXT_INDEX; - fixed: 0 1; - } - } } } diff --git a/res/edc/view/base.edc b/res/edc/view/base.edc index b95e599..52bdbcf 100644 --- a/res/edc/view/base.edc +++ b/res/edc/view/base.edc @@ -133,11 +133,94 @@ group { relative: 0.0 1.0; } rel2.to: "padding_thumbnail_area"; - min: 0 784; + min: 0 720; align: 0.5 0.0; fixed: 0 1; } } + part { + name: "bottom_area"; + type: SPACER; + scale: 1; + description { + state: "default" 0.0; + rel1 { + to: PART_THUMBNAIL_AREA; + relative: 0.0 1.0; + } + rel2.to: PART_THUMBNAIL_AREA; + min: 0 64; + align: 0.5 0.0; + fixed: 0 1; + } + } + part { + name: "padding_view_mode"; + type: SPACER; + scale: 1; + description { + state: "default" 0.0; + rel1.to: "bottom_area"; + rel2 { + to: "bottom_area"; + relative: 0.0 1.0; + } + min: 62 0; + align: 0.0 0.5; + fixed: 1 0; + } + } + part { + name: PART_VIEW_MODE; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { + to: "padding_view_mode"; + relative: 1.0 0.0; + } + rel2.to: "padding_view_mode"; + min: 218 0; + align: 0.0 0.5; + fixed: 1 0; + } + } + part { + name: "padding_content_info"; + type: SPACER; + scale: 1; + description { + state: "default" 0.0; + rel1 { + to: PART_VIEW_MODE; + relative: 1.0 0.0; + } + rel2.to: PART_VIEW_MODE; + min: 26 0; + align: 0.0 0.5; + fixed: 1 0; + } + } + part { + name: PART_CONTENT_INFO; + type: TEXT; + scale: 1; + description { + state: "default" 0.0; + rel1 { + to: "padding_content_info"; + relative: 1.0 0.0; + } + rel2.to: "bottom_area"; + text { + font: FONT_LIGHT; + size: 28; + align: 0.0 0.5; + } + color: COLOR_TEXT_INDEX; + } + } /* CURTAIN */ part { diff --git a/res/edc/widgets/ctxpopup.edc b/res/edc/widgets/ctxpopup.edc index 188d688..616b6d4 100644 --- a/res/edc/widgets/ctxpopup.edc +++ b/res/edc/widgets/ctxpopup.edc @@ -24,7 +24,7 @@ group { scale: 1; description { state: "default" 0.0; - min: 220 226; + min: 220 0; color: COLOR_ITEM_BG; } } diff --git a/src/layout/gallery.c b/src/layout/gallery.c index 22e32e2..3a535e8 100644 --- a/src/layout/gallery.c +++ b/src/layout/gallery.c @@ -267,15 +267,17 @@ static void _update_content_info(struct _priv *priv) snprintf(buf, sizeof(buf), "%d Photos, %d Videos", photo, video); - elm_object_part_text_set(priv->layout, PART_CONTENT_INFO, buf); + elm_object_part_text_set(priv->base, PART_CONTENT_INFO, buf); } static void _update_content_list(struct _priv *priv) { Eina_List *list; - if (priv->media_list) + if (priv->media_list) { + _update_content_info(priv); return; + } list = mediadata_get_list(priv->md, E_LIST_DATE); if (!list) { diff --git a/src/layout/movie.c b/src/layout/movie.c index 4639e8a..38506ae 100644 --- a/src/layout/movie.c +++ b/src/layout/movie.c @@ -469,15 +469,17 @@ static void _update_content_info(struct _priv *priv) snprintf(buf, sizeof(buf), "%d Movies", count); - elm_object_part_text_set(priv->layout, PART_CONTENT_INFO, buf); + elm_object_part_text_set(priv->base, PART_CONTENT_INFO, buf); } static void _update_content_list(struct _priv *priv) { Eina_List *list; - if (priv->media_list) + if (priv->media_list) { + _update_content_info(priv); return; + } list = mediadata_get_list(priv->md, E_LIST_NAME); if (!list) { diff --git a/src/layout/music.c b/src/layout/music.c index 1ff80c0..1b61627 100644 --- a/src/layout/music.c +++ b/src/layout/music.c @@ -402,15 +402,17 @@ static void _update_content_info(struct _priv *priv) snprintf(buf, sizeof(buf), "%d Songs", count); - elm_object_part_text_set(priv->layout, PART_CONTENT_INFO, buf); + elm_object_part_text_set(priv->base, PART_CONTENT_INFO, buf); } static void _update_content_list(struct _priv *priv) { Eina_List *list; - if (priv->media_list) + if (priv->media_list) { + _update_content_info(priv); return; + } list = mediadata_get_list(priv->md, E_LIST_NAME); if (!list) { diff --git a/src/view/base.c b/src/view/base.c index 4db00f3..7c928a3 100644 --- a/src/view/base.c +++ b/src/view/base.c @@ -28,6 +28,7 @@ #include "define.h" #include "layout.h" #include "view.h" +#include "util/ctxpopup.h" #include "util/util.h" #define TITLE_TEXT "Media Hub" @@ -41,6 +42,13 @@ #define TIME_TOAST_FAVORITE 5.0 +#define ARRAY_SIZE(arr) (sizeof(arr)) / (sizeof((arr)[0])) + +enum _object_type { + BASE_MENU_BTN = 0, + BASE_VIEW_BTN +}; + enum _layout_type { E_LAYOUT_MOVIE = 0, E_LAYOUT_GALLERY, @@ -51,40 +59,76 @@ enum _layout_type { struct _priv { Evas_Object *win; Evas_Object *base; - Evas_Object *btn[E_LAYOUT_MAX]; - Evas_Object *notify; + Evas_Object *menu_btn[E_LAYOUT_MAX]; + Evas_Object *view_btn; Evas_Object *focused_btn; + Evas_Object *notify; + + struct ctxpopup *cpopup; + layoutmgr *lmgr; Eina_List *favorite_list; app_media *recent_item; int current_layout; + int view_mode; +}; + +const char *view_mode_movie[] = { + "Name", + "Genre", + "Date", + "Folder" +}; + +const char *view_mode_gallery[] = { + "Event", + "Place", + "Video", + "Folder" +}; + +const char *view_mode_music[] = { + "Song", + "Album", + "Artist", + "Genre", + "Folder" }; struct _menu_item { const char *name; const char *layout_id; layout_class *(*func_get_lclass)(void); + + const char **text_view_mode; + int text_size; }; static struct _menu_item g_menu_item[E_LAYOUT_MAX] = { [E_LAYOUT_MOVIE] = { "Movie", LAYOUT_MOVIE, - layout_movie_get_lclass + layout_movie_get_lclass, + view_mode_movie, + ARRAY_SIZE(view_mode_movie) }, [E_LAYOUT_GALLERY] = { "Gallery", LAYOUT_GALLERY, - layout_gallery_get_lclass + layout_gallery_get_lclass, + view_mode_gallery, + ARRAY_SIZE(view_mode_gallery) }, [E_LAYOUT_MUSIC] = { "Music", LAYOUT_MUSIC, - layout_music_get_lclass + layout_music_get_lclass, + view_mode_music, + ARRAY_SIZE(view_mode_music) } }; @@ -94,31 +138,74 @@ static void _set_current_layout(struct _priv *priv, int layout) g_menu_item[priv->current_layout].layout_id); layoutmgr_show_layout(priv->lmgr, g_menu_item[layout].layout_id); + elm_object_text_set(priv->view_btn, + g_menu_item[layout].text_view_mode[priv->view_mode]); + if (priv->focused_btn) elm_object_signal_emit(priv->focused_btn, SIG_BTN_UNSELECTED, SIG_SOURCE_SRC); - priv->focused_btn = priv->btn[layout]; + priv->focused_btn = priv->menu_btn[layout]; priv->current_layout = layout; } +static void _update_layout(struct _priv *priv, Evas_Object *obj) +{ + int i; + + for (i = 0; i < E_LAYOUT_MAX; i++) { + if (priv->menu_btn[i] == obj) + break; + } + + if (i == E_LAYOUT_MAX) + return; + + layoutmgr_update_layout(priv->lmgr, g_menu_item[i].layout_id, + UPDATE_FOCUS_STATE, NULL); + + if (priv->focused_btn == obj) + return; + + _set_current_layout(priv, i); + + layoutmgr_update_layout(priv->lmgr, g_menu_item[i].layout_id, + UPDATE_CONTENT, NULL); +} + static void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev) { if (!obj || !ev) return; - if (!strcmp(ev->keyname, KEY_ENTER) || - !strcmp(ev->keyname, KEY_ENTER_REMOTE)) - elm_object_focus_next(obj, ELM_FOCUS_DOWN); - else if (!strcmp(ev->keyname, KEY_BACK) || - !strcmp(ev->keyname, KEY_BACK_REMOTE)) - ui_app_exit(); + switch (id) { + case BASE_MENU_BTN: + if (!strcmp(ev->keyname, KEY_ENTER) || + !strcmp(ev->keyname, KEY_ENTER_REMOTE)) + elm_object_focus_next(obj, ELM_FOCUS_DOWN); + else if (!strcmp(ev->keyname, KEY_BACK) || + !strcmp(ev->keyname, KEY_BACK_REMOTE)) + ui_app_exit(); + + break; + case BASE_VIEW_BTN: + if (!strcmp(ev->keyname, KEY_BACK) || + !strcmp(ev->keyname, KEY_BACK_REMOTE)) + ui_app_exit(); + + break; + default: + break; + } } static void _mouse_move_cb(int id, void *data, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev) { + if (!obj) + return; + if (!elm_object_focus_get(obj)) elm_object_focus_set(obj, EINA_TRUE); } @@ -127,7 +214,6 @@ static void _focused_cb(int id, void *data, Evas_Object *obj, Elm_Object_Item *it) { struct _priv *priv; - int i; if (!data) { _ERR("failed to get data"); @@ -136,29 +222,59 @@ static void _focused_cb(int id, void *data, Evas_Object *obj, priv = data; - for (i = 0; i < E_LAYOUT_MAX; i++) { - if (priv->btn[i] == obj) - break; + switch (id) { + case BASE_MENU_BTN: + _update_layout(priv, obj); + break; + default: + break; } +} - if (i == E_LAYOUT_MAX) +static void _view_btn_clicked(struct _priv *priv) +{ + struct ctxpopup *cpopup; + int x, y, w, h; + + cpopup = ctxpopup_create(priv->base, STYLE_CTXPOPUP_VIEW_MODE, + STYLE_BTN_VIEW_OPTION, + g_menu_item[priv->current_layout].text_view_mode, + g_menu_item[priv->current_layout].text_size); + if (!cpopup) { + _ERR("failed to create ctxpopup"); return; + } - layoutmgr_update_layout(priv->lmgr, g_menu_item[i].layout_id, - UPDATE_FOCUS_STATE, NULL); + evas_object_geometry_get(priv->view_btn, &x, &y, &w, &h); + ctxpopup_show(cpopup, x + (w / 2), y); - if (priv->focused_btn == obj) + priv->cpopup = cpopup; +} + +static void _clicked_cb(int id, void *data, Evas_Object *obj) +{ + struct _priv *priv; + + if (!data) { + _ERR("failed to get data"); return; + } - _set_current_layout(priv, i); + priv = data; - layoutmgr_update_layout(priv->lmgr, g_menu_item[i].layout_id, - UPDATE_CONTENT, NULL); + switch (id) { + case BASE_VIEW_BTN: + _view_btn_clicked(priv); + break; + default: + break; + } } static input_handler handler = { .key_down = _key_down_cb, .mouse_move = _mouse_move_cb, + .clicked = _clicked_cb, .focused = _focused_cb }; @@ -437,32 +553,50 @@ static bool _draw_menu_btn(struct _priv *priv) evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL); for (i = 0; i < E_LAYOUT_MAX; i++) { - btn = elm_button_add(box); + btn = util_add_button(box, STYLE_BTN_MENU, g_menu_item[i].name); if (!btn) { - _ERR("failed to create button object"); + _ERR("failed to add button object"); + evas_object_del(box); return false; } - elm_object_style_set(btn, STYLE_BTN_MENU); - elm_object_text_set(btn, g_menu_item[i].name); - elm_box_pack_end(box, btn); evas_object_show(btn); - inputmgr_add_callback(btn, 0, &handler, priv); + inputmgr_add_callback(btn, BASE_MENU_BTN, &handler, priv); - priv->btn[i] = btn; + priv->menu_btn[i] = btn; } evas_object_show(box); elm_object_part_content_set(priv->base, PART_MENU_AREA, box); - elm_object_focus_next_object_set(priv->btn[E_LAYOUT_MAX - 1], - priv->btn[0], ELM_FOCUS_RIGHT); - elm_object_focus_next_object_set(priv->btn[0], - priv->btn[E_LAYOUT_MAX - 1], ELM_FOCUS_LEFT); + elm_object_focus_next_object_set(priv->menu_btn[E_LAYOUT_MAX - 1], + priv->menu_btn[0], ELM_FOCUS_RIGHT); + elm_object_focus_next_object_set(priv->menu_btn[0], + priv->menu_btn[E_LAYOUT_MAX - 1], + ELM_FOCUS_LEFT); + + return true; +} + +static bool _draw_view_mode_btn(struct _priv *priv) +{ + Evas_Object *btn; + + btn = util_add_button(priv->base, STYLE_BTN_VIEW_MODE, NULL); + if (!btn) { + _ERR("failed to add button object"); + return false; + } + + inputmgr_add_callback(btn, BASE_VIEW_BTN, &handler, priv); + + elm_object_part_content_set(priv->base, PART_VIEW_MODE, btn); + + priv->view_btn = btn; return true; } @@ -478,6 +612,9 @@ static bool _draw_items(struct _priv *priv) if (!_draw_menu_btn(priv)) return false; + if (!_draw_view_mode_btn(priv)) + return false; + return true; } @@ -559,13 +696,13 @@ static Evas_Object *_create(Evas_Object *win, void *data) lmgr = layoutmgr_create(base); for (i = 0; i < E_LAYOUT_MAX; i++) layoutmgr_add_layout(lmgr, g_menu_item[i].func_get_lclass(), - priv->btn[i]); + priv->menu_btn[i]); priv->lmgr = lmgr; viewmgr_set_view_data(VIEW_BASE, priv); - elm_object_focus_set(priv->btn[0], EINA_TRUE); + elm_object_focus_set(priv->menu_btn[0], EINA_TRUE); return base; } @@ -694,7 +831,7 @@ static void _destroy(void *view_data) priv = view_data; for (i = 0; i < E_LAYOUT_MAX; i++) - inputmgr_remove_callback(priv->btn[i], &handler); + inputmgr_remove_callback(priv->menu_btn[i], &handler); layoutmgr_remove_layout(priv->lmgr, LAYOUT_MOVIE); layoutmgr_remove_layout(priv->lmgr, LAYOUT_GALLERY); -- 2.7.4 From 55b4f7546852f21f5ca7e74baa5b92edd0144502 Mon Sep 17 00:00:00 2001 From: Jehun Lim Date: Wed, 2 Sep 2015 15:31:00 +0900 Subject: [PATCH 14/16] fix libpng warning Change-Id: Iacea8fc6ce028530a0159c2b81ec213041d267a5 Signed-off-by: Jehun Lim --- res/edc/images/btn_option_arrow_dis.png | Bin 2930 -> 186 bytes res/edc/images/btn_option_arrow_foc_up.png | Bin 2911 -> 170 bytes res/edc/images/btn_option_arrow_nor.png | Bin 2942 -> 196 bytes res/edc/images/btn_option_arrow_sel.png | Bin 2967 -> 251 bytes res/edc/images/btn_view_contr_rotate_foc.png | Bin 3938 -> 951 bytes res/edc/images/btn_view_contr_rotate_nor.png | Bin 4008 -> 1075 bytes res/edc/images/btn_view_contr_zoom_foc.png | Bin 1872 -> 777 bytes res/edc/images/btn_view_contr_zoom_nor.png | Bin 2022 -> 890 bytes 8 files changed, 0 insertions(+), 0 deletions(-) diff --git a/res/edc/images/btn_option_arrow_dis.png b/res/edc/images/btn_option_arrow_dis.png index dc339370ef5907537c0eab4781ce2db4f8be5f31..6b6aee208aeac588408b356b97d07ad79498c6ec 100644 GIT binary patch delta 169 zcmV;a09OC<7Pvh*1^a4TeFFl1nZve_6685nUX zRAvxC;)yUQV^=7^ppNDcbp`=Ug)9t47%paFFoFdjLQ0o`8zM_kaWm*boj;mq2B|^- XmKF%L+@sjr00000NkvXXu0mjfV^KVv literal 2930 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 diff --git a/res/edc/images/btn_option_arrow_foc_up.png b/res/edc/images/btn_option_arrow_foc_up.png index f101da0fbce0ec1cba857ee9b0b0eb24cd26682e..d1836c26aff906ab41ad93e375545ddcbed9aeb6 100644 GIT binary patch delta 153 zcmV;K0A~N+7ODY|8Gi%-004#?_TT^j0C7n~K~y-)?bERpKrj%1;UpD>0SuBcSjQp^ z;Cas!*@O*PAWeQn3QrDCnZkeF-PfK*ean1wKgDgMm@F00000NkvXX Hu0mjfvduy^ literal 2911 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 JPDHLkV1oPSV?F=? diff --git a/res/edc/images/btn_option_arrow_nor.png b/res/edc/images/btn_option_arrow_nor.png index 17bc2c6fa3729e6cd4a0643fecb1c3b40535f60e..3b2d1ac13211b0e9cdd780e971a827adeaef9d97 100644 GIT binary patch delta 179 zcmV;k08Ib>7Q_LN8Gi%-004#?_TT^j0Ea1mMdkni literal 2942 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 diff --git a/res/edc/images/btn_option_arrow_sel.png b/res/edc/images/btn_option_arrow_sel.png index 21b5ffa15d8b2c4c48f9c431d4438e80777bfbe1..1ffe296a16dff515a22e960e26ff29a8b2f25d63 100644 GIT binary patch delta 223 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 Hu0mjfa&U?A diff --git a/res/edc/images/btn_view_contr_rotate_foc.png b/res/edc/images/btn_view_contr_rotate_foc.png index 343f481e0184548358754876b8c0849e898334d7..6382885b5561fcd1d01ae622cc0c2bebfc6f236e 100644 GIT binary patch literal 951 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 hul@fANXw?OJ zv)bLt&2JE9pEucOsbYzCXAalRrhc<$MHAW2Y~IW0S@!?1ddURO#|qg^C(f~Lob>hy z!}6OR-q%fiU(ClTltRo0)sO__N_loJd;{n&2BVTJ7uzbVP5o&rS~HarEc2k<(BUt zr`*50BKcp$kIw1VPl~SmJyEH%TvR{)am06R)h(Ou9AoeDT+(i|U`l%7y7$XPG>q%# z7+7wYvC(F^O(W-17KzhJ=E~-bzm;U77On2BJ&<SmELl8fR&t&zQY~Ui^Rvijetfq}hBMZGZ7b>`iBTt*B}Bxg)!-&3Of zN%3M`{-6KLSkiY2MY5kUG)ONin0D~X9n)pAR;o^&#Ik(K1TWpQY^`n+3nXrM7BLA= zx+yy6anzE2^`0bWCSfy!NymTO>B&jg-Z1@+#r5;4`Ww#v*($jC{_>FGwi2!XyV^u+ zGeai%sa{>y`E38BnEv@S=Z@8EJ##qnQ)bfM%0-na+}stXmGlf0-u#{T;q9HLx}Seu zk)Ckj2$NmFnX?<-pS5yxiOA;{&fMg0NjKWE+wF4|OZ;2^HBa{xJ2anIvAcD;IG_Ep$0sB?V{dgEpSBMxa<6^# r{ASmbNlHtXcxY+{d6C2X%K1b-IrwgTe~DWM4f8UO7K literal 4008 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 diff --git a/res/edc/images/btn_view_contr_zoom_foc.png b/res/edc/images/btn_view_contr_zoom_foc.png index da4574045e22e7dfbf434bf86c4f616425473c30..0a893a1c0f8517b7ddd73ec1ba3fee4fe957f473 100644 GIT binary patch literal 777 zcmeAS@N?(olHy`uVBq!ia0vp^ML;}>g9S($PY5evU|_o7>EaktaqI1Ee{YdOnd2YN zr|gb1Pf=X&RIew?<47OKN&kzV?Oufr))3OO$<|d1zZ+^6J|%NqOxP zGMJaX9(X<7WU;!`^%+`|_GL!Tu3ByWYwGGr1@5hEvFEa;vrTQd|MQAq-b*WMhAojP zU4f^jNTznV-ePzY&@XLygp0v9E4^;-F*XKmo}*ndNum}hjZ5BJa&pTst*$h1*7?O{ zk?`rxXSJVPI>$Tau-6$GUf3!8hv8YWbJz=p^Xzv2B`0cSG}o*RuMnRa_;>)mL|&@GkzqyH=oEkNG!qZvC6%yZ%nhQ(k@gti{Co zZ7SyHZch5cRI@}%J*dNKuJG*Bs$S}5)2*+pyu=o@aHgX8`VB|!&8%0uk-W0p{cP*Z zx2v!1pK7u=vp3tvTtzk`dUn+1Tk-R|L-$^`-TF0R_r@B(xF;(vaaEgkvpqYcGiy5c z=8PDfJeV6VL V*!X&W1Tcv+c)I$ztaD0e0szSlZr=a^ literal 1872 zcmbVN3rrJt7_Z`M1{B2?KI-j2lwu!ueOF3tdo5IHVZ4P*ExiLeXs=ukXce70jUckf zOYIbOA}%VTqN30taWfH7gE-^DL+7UGbW9@=6%4W~0!~9*vdi6l|NnR2?|c1!UoJOX z7wj={_Cy+u=Aj8eA}C2vPvL}d)Z5|M*G~y=QWZx=;z?wdp1^2w6i>tejY*%3MPPc= zo_+-jq|w}xj8So9oHkTqz)dW@%Z6n$StvA(7AUh>^oCT71QM}iqge_*bJl}^5tV|m zd@V<7QDP~^kTnDrxkeXdSd(fHqo6DZ2((Ek2PTZv12$8d*($L~!2!P#YVA_9L14gy zOqGJ~l8V!Y14^9006vS$G;kmY5C~Whk1r5FivgGe!E6q73z!g3!WT$jAuxD>R5Suj zl0+ct!C2Hz3Z{^xMZ#uhWo5ClxGbDVWqE#35Sn@p~{2CS`Q1ol3S5v{FJ zb_>Riz^r%%VW7?<$!7>m_3qPwT!vIOk}$$Z9g02;!3`NE%uH$!DM)=`p+;1K2suhV zmk)D9h)BhQAQ6uvSF2Qfo?H!yg<{2!kCCuEj)=oma1od*7D14TuaL{t3ZaNE7r`Pm zA5sosHD)WRHyf~_xJD}OAXfQFtVBs*dJ-q1a6D~@0pTe)iCa@}3!sb?0E=RcW)#n| z`n!(jU9|{C7&9?cP2eVApuZC12=QU6M2<)$f|U?eEd+@bA_2k^t6)Tl$VFT}IEY36 zPtVv?GHe$){zaA{6~#c;a+vzmW_WloGc_>;H5wb{o^_)pZi5DqN7-6C_h?hS2r z&zf`Wht<+czwM~^-AoT%;=I1S$xY^WhfMw{$mwXgmR8xE;_DeCM!>0_pXH4CNQ?%j zxRf7@Q3V6a_X6<+M-^-cS^ALxrVc2P#e@T{=!~uom{U^n^6uo0vaZmY6YY`feX7n` zs?;S#%YL8#$`Mn!Xr>khXF7iNGvxR6#nhCCGM*KGXKD&?Ydk=Nx1_bzw`wdtj3ONh ztTC~V?q9^a$X)xBe%gNY(=$3Apthu{u`r}D|?yd`Zq^srW(2gJL zSX&sUemxNq-1B`x=v4dOxS+z#7iIQO$_z`Ge2bQ pfAZ8tWfxIL6d$s8x9saNvuLz@;r4`PMX&20r%~yUO2z6;{{RGYtpfl6 diff --git a/res/edc/images/btn_view_contr_zoom_nor.png b/res/edc/images/btn_view_contr_zoom_nor.png index e5d69d496ad8a37772c8db09c9c2f7ed7f8262f7..11457eea69b5374f24a091f45d20ee9d7445cf90 100644 GIT binary patch literal 890 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 -- 2.7.4 From 2593f71d1089f11c8c4c437f177654a762d54cd9 Mon Sep 17 00:00:00 2001 From: Jehun Lim Date: Tue, 1 Sep 2015 19:07:55 +0900 Subject: [PATCH 15/16] listmgr: add focus policy for view button in base view Change-Id: I9a04de166c414964b17c606a8a6350b0df1035a7 Signed-off-by: Jehun Lim --- include/layout.h | 6 ++ include/util/listmgr.h | 1 + src/layout/gallery.c | 9 ++- src/layout/movie.c | 9 ++- src/layout/music.c | 9 ++- src/util/listmgr.c | 195 ++++++++++++++++++++++++++++++++++++------------- src/view/base.c | 11 ++- 7 files changed, 185 insertions(+), 55 deletions(-) diff --git a/include/layout.h b/include/layout.h index d20ddee..d3520e6 100644 --- a/include/layout.h +++ b/include/layout.h @@ -26,4 +26,10 @@ layout_class *layout_gallery_get_lclass(void); /* music */ layout_class *layout_music_get_lclass(void); +/* layout data */ +struct layout_data { + Evas_Object *top; + Evas_Object *bottom; +}; + #endif /* __AIR_MEDIAHUB_LAYOUT_H__ */ diff --git a/include/util/listmgr.h b/include/util/listmgr.h index 1999de3..f90bb0b 100644 --- a/include/util/listmgr.h +++ b/include/util/listmgr.h @@ -38,6 +38,7 @@ struct grid_ops { struct listmgr_data { Evas_Object *menu_btn; + Evas_Object *view_btn; int grid_item_x; int grid_item_y; diff --git a/src/layout/gallery.c b/src/layout/gallery.c index 3a535e8..70efdf7 100644 --- a/src/layout/gallery.c +++ b/src/layout/gallery.c @@ -24,6 +24,7 @@ #include #include "define.h" +#include "layout.h" #include "view.h" #include "data/mediadata.h" #include "util/listmgr.h" @@ -44,6 +45,7 @@ struct _priv { Evas_Object *base; Evas_Object *layout; Evas_Object *menu_btn; + Evas_Object *view_btn; layoutmgr *lmgr; @@ -226,6 +228,7 @@ static struct listmgr_data *_create_listmgr_data(struct _priv *priv) goto err; data->menu_btn = priv->menu_btn; + data->view_btn = priv->view_btn; data->grid_item_x = GRID_ITEM_X; data->grid_item_y = GRID_ITEM_Y; @@ -296,6 +299,7 @@ static void _update_content_list(struct _priv *priv) static bool _create(layoutmgr *lmgr, void *data) { + struct layout_data *ld; struct listmgr *listmgr; struct listmgr_data *ldata; struct mediadata *md; @@ -312,13 +316,16 @@ static bool _create(layoutmgr *lmgr, void *data) return false; } + ld = data; + priv = calloc(1, sizeof(*priv)); if (!priv) { _ERR("failed to allocate priv"); return false; } - priv->menu_btn = (Evas_Object *)data; + priv->menu_btn = ld->top; + priv->view_btn = ld->bottom; base = layoutmgr_get_base(lmgr); if (!base) { diff --git a/src/layout/movie.c b/src/layout/movie.c index 38506ae..41d3bdf 100644 --- a/src/layout/movie.c +++ b/src/layout/movie.c @@ -25,6 +25,7 @@ #include #include "define.h" +#include "layout.h" #include "view.h" #include "data/mediadata.h" #include "util/listmgr.h" @@ -48,6 +49,7 @@ struct _priv { Evas_Object *layout; Evas_Object *box; Evas_Object *menu_btn; + Evas_Object *view_btn; layoutmgr *lmgr; @@ -418,6 +420,7 @@ static struct listmgr_data *_create_listmgr_data(struct _priv *priv) goto err; data->menu_btn = priv->menu_btn; + data->view_btn = priv->view_btn; data->grid_item_x = GRID_ITEM_X; data->grid_item_y = GRID_ITEM_Y; @@ -554,6 +557,7 @@ static void _update_recent_item(struct _priv *priv, const char *id) static bool _create(layoutmgr *lmgr, void *data) { + struct layout_data *ld; struct listmgr *listmgr; struct listmgr_data *ldata; struct mediadata *md; @@ -570,13 +574,16 @@ static bool _create(layoutmgr *lmgr, void *data) return false; } + ld = data; + priv = calloc(1, sizeof(*priv)); if (!priv) { _ERR("failed to allocate priv"); return false; } - priv->menu_btn = (Evas_Object *)data; + priv->menu_btn = ld->top; + priv->view_btn = ld->bottom; base = layoutmgr_get_base(lmgr); if (!base) { diff --git a/src/layout/music.c b/src/layout/music.c index 1b61627..48161ae 100644 --- a/src/layout/music.c +++ b/src/layout/music.c @@ -25,6 +25,7 @@ #include #include "define.h" +#include "layout.h" #include "view.h" #include "data/mediadata.h" #include "util/listmgr.h" @@ -46,6 +47,7 @@ struct _priv { Evas_Object *base; Evas_Object *layout; Evas_Object *menu_btn; + Evas_Object *view_btn; layoutmgr *lmgr; @@ -351,6 +353,7 @@ static struct listmgr_data *_create_listmgr_data(struct _priv *priv) goto err; data->menu_btn = priv->menu_btn; + data->view_btn = priv->view_btn; data->grid_item_x = GRID_ITEM_X; data->grid_item_y = GRID_ITEM_Y; @@ -484,6 +487,7 @@ static void _update_playing_item(struct _priv *priv, const char *id) static bool _create(layoutmgr *lmgr, void *data) { + struct layout_data *ld; struct listmgr *listmgr; struct listmgr_data *ldata; struct mediadata *md; @@ -500,13 +504,16 @@ static bool _create(layoutmgr *lmgr, void *data) return false; } + ld = data; + priv = calloc(1, sizeof(*priv)); if (!priv) { _ERR("failed to allocate priv"); return false; } - priv->menu_btn = (Evas_Object *)data; + priv->menu_btn = ld->top; + priv->view_btn = ld->bottom; base = layoutmgr_get_base(lmgr); if (!base) { diff --git a/src/util/listmgr.c b/src/util/listmgr.c index f62d21e..2f0cda0 100644 --- a/src/util/listmgr.c +++ b/src/util/listmgr.c @@ -54,6 +54,59 @@ struct listmgr { Eina_Bool focus_state; }; +static void _index_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *ei) +{ + Evas_Object *grid; + Elm_Object_Item *it; + Evas_Event_Key_Down *ev; + struct listmgr *lmgr; + + if (!data || !obj || !ei) + return; + + lmgr = data; + ev = ei; + + if (!strcmp(ev->keyname, KEY_BACK) || + !strcmp(ev->keyname, KEY_BACK_REMOTE)) { + elm_object_focus_next(obj, ELM_FOCUS_UP); + } else if (!strcmp(ev->keyname, KEY_DOWN)) { + if (lmgr->play_info == lmgr->focused) + return; + + grid = elm_object_part_content_get(lmgr->focused, + PART_ITEM_CONTENT); + it = elm_gengrid_first_item_get(grid); + if (it) + elm_object_item_focus_set(it, EINA_TRUE); + } +} + +static void _view_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *ei) +{ + Evas_Object *play_info; + Evas_Event_Key_Down *ev; + struct listmgr *lmgr; + + if (!data || !ei) + return; + + lmgr = data; + ev = ei; + + if (!evas_object_visible_get(lmgr->base)) + return; + + if (!strcmp(ev->keyname, KEY_UP)) { + if (lmgr->focused == lmgr->play_info) { + play_info = elm_object_part_content_get(lmgr->focused, + PART_ITEM_CONTENT); + elm_object_focus_set(play_info, EINA_TRUE); + } else + elm_object_item_focus_set(lmgr->focused_it, EINA_TRUE); + } +} + static void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev) { @@ -66,25 +119,6 @@ static void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj, lmgr = data; switch (id) { - case LISTMGR_INDEX: - if (!strcmp(ev->keyname, KEY_BACK) || - !strcmp(ev->keyname, KEY_BACK_REMOTE)) { - elm_object_focus_next(obj, ELM_FOCUS_UP); - } else if (!strcmp(ev->keyname, KEY_DOWN)) { - Evas_Object *grid; - Elm_Object_Item *it; - - if (lmgr->play_info == lmgr->focused) - break; - - grid = elm_object_part_content_get(lmgr->focused, - PART_ITEM_CONTENT); - it = elm_gengrid_first_item_get(grid); - if (it) - elm_object_item_focus_set(it, EINA_TRUE); - } - - break; case LISTMGR_PLAY_INFO: case LISTMGR_GRID: if (!strcmp(ev->keyname, KEY_BACK) || @@ -251,7 +285,7 @@ static input_handler _grid_handler = { .key_down = _key_down_cb, .mouse_move = _mouse_move_cb, .focused = _focused_cb, - .selected = _grid_selected_cb, + .selected = _grid_selected_cb }; static input_handler _handler = { @@ -261,6 +295,12 @@ static input_handler _handler = { .focused = _focused_cb }; +static input_handler _idx_handler = { + .mouse_move = _mouse_move_cb, + .clicked = _clicked_cb, + .focused = _focused_cb +}; + static Evas_Object *_get_box_first_item(Evas_Object *box) { Eina_List *list; @@ -310,7 +350,7 @@ static bool _draw_play_info(struct listmgr *lmgr) index = elm_object_part_content_get(ly, PART_ITEM_TITLE); - inputmgr_add_callback(index, LISTMGR_INDEX, &_handler, lmgr); + inputmgr_add_callback(index, LISTMGR_INDEX, &_idx_handler, lmgr); elm_object_focus_next_object_set(index, lmgr->data->menu_btn, ELM_FOCUS_UP); @@ -327,51 +367,51 @@ static bool _draw_play_info(struct listmgr *lmgr) return true; } -static Evas_Object *_draw_list_item(struct listmgr *lmgr, struct group_info *gi) +static Evas_Object *_add_list_item_button(struct listmgr *lmgr, + Evas_Object *base, struct group_info *gi) { - Evas_Object *ly, *btn, *grid; - struct listmgr_data *data; - int width; + Evas_Object *btn; char buf[128]; - data = lmgr->data; - - ly = elm_layout_add(lmgr->box); - if (!ly) { - _ERR("failed to create layout object"); - return NULL; - } - - elm_layout_file_set(ly, EDJEFILE, GRP_LIST_ITEM); + snprintf(buf, sizeof(buf), " %s ", gi->name); - btn = elm_button_add(ly); + btn = util_add_button(base, STYLE_BTN_INDEX, buf); if (!btn) { - _ERR("failed to create button object"); - evas_object_del(ly); + _ERR("failed to add button object"); return NULL; } - elm_object_style_set(btn, STYLE_BTN_INDEX); - - snprintf(buf, sizeof(buf), " %s ", gi->name); - elm_object_text_set(btn, buf); - elm_object_focus_next_object_set(btn, lmgr->data->menu_btn, ELM_FOCUS_UP); + elm_object_focus_next_object_set(btn, btn, ELM_FOCUS_DOWN); + + inputmgr_add_callback(btn, LISTMGR_INDEX, &_idx_handler, lmgr); + evas_object_event_callback_priority_add(btn, EVAS_CALLBACK_KEY_DOWN, + EVAS_CALLBACK_PRIORITY_AFTER, + _index_key_down_cb, lmgr); + + return btn; +} - inputmgr_add_callback(btn, LISTMGR_INDEX, &_handler, lmgr); +static Evas_Object *_add_list_item_grid(struct listmgr *lmgr, + Evas_Object *base, struct group_info *gi) +{ + Evas_Object *grid; + struct listmgr_data *data; + int width; - grid = util_add_gengrid(ly, data->grid_item_x, + data = lmgr->data; + + grid = util_add_gengrid(base, data->grid_item_x, data->grid_item_y, EINA_TRUE); if (!grid) { - _ERR("failed to create gengrid object"); - evas_object_del(ly); + _ERR("failed to add gengrid object"); return NULL; } if (!gridmgr_add_grid(lmgr->gmgr, gi->name, grid, data->gops->gclass)) { _ERR("failed to add grid"); - evas_object_del(ly); + evas_object_del(grid); return NULL; } @@ -381,10 +421,41 @@ static Evas_Object *_draw_list_item(struct listmgr *lmgr, struct group_info *gi) evas_object_size_hint_min_set(grid, width, data->grid_num_item * data->grid_item_y); - elm_object_focus_next_object_set(grid, btn, ELM_FOCUS_UP); + elm_object_focus_next_object_set(grid, data->view_btn, ELM_FOCUS_DOWN); inputmgr_add_callback(grid, LISTMGR_GRID, &_grid_handler, lmgr); + return grid; +} + +static Evas_Object *_draw_list_item(struct listmgr *lmgr, struct group_info *gi) +{ + Evas_Object *ly, *btn, *grid; + + ly = elm_layout_add(lmgr->box); + if (!ly) { + _ERR("failed to create layout object"); + return NULL; + } + + elm_layout_file_set(ly, EDJEFILE, GRP_LIST_ITEM); + + btn = _add_list_item_button(lmgr, ly, gi); + if (!btn) { + _ERR("failed to add button"); + evas_object_del(ly); + return NULL; + } + + grid = _add_list_item_grid(lmgr, ly, gi); + if (!grid) { + _ERR("failed to add grid"); + evas_object_del(ly); + return NULL; + } + + elm_object_focus_next_object_set(grid, btn, ELM_FOCUS_UP); + elm_object_part_content_set(ly, PART_ITEM_TITLE, btn); elm_object_part_content_set(ly, PART_ITEM_CONTENT, grid); @@ -509,6 +580,28 @@ void _update_grid_realized_items(struct listmgr *lmgr, Eina_List *list) elm_gengrid_item_update(it); } +static void _set_callback_view_btn(struct listmgr *lmgr) +{ + struct listmgr_data *data; + + data = lmgr->data; + + /* NOTE: focus problem handling + * When UP key is pressed on view button, + * focus is set to content object in key_down callback function. + * After grid object gets focus, UP key down event is handled again + * and focus is moved to index button. + * To fix this problem, we delay executing key_down callback function + * for view button by setting event priority value. + */ + elm_object_focus_next_object_set(data->view_btn, data->view_btn, + ELM_FOCUS_UP); + evas_object_event_callback_priority_add(data->view_btn, + EVAS_CALLBACK_KEY_DOWN, + EVAS_CALLBACK_PRIORITY_AFTER, _view_key_down_cb, + lmgr); +} + bool listmgr_update_content_item(struct listmgr *lmgr) { Eina_List *box_item, *grid_realized; @@ -670,6 +763,8 @@ bool listmgr_draw_list_area(struct listmgr *lmgr) elm_object_focus_allow_set(scr, EINA_FALSE); + _set_callback_view_btn(lmgr); + return true; } @@ -721,7 +816,7 @@ void listmgr_destroy(struct listmgr *lmgr) content = elm_object_part_content_get(lmgr->play_info, PART_ITEM_CONTENT); - inputmgr_remove_callback(btn, &_handler); + inputmgr_remove_callback(btn, &_idx_handler); inputmgr_remove_callback(content, &_handler); elm_object_signal_callback_del(content, SIG_ITEM_SELECTED, @@ -736,7 +831,7 @@ void listmgr_destroy(struct listmgr *lmgr) btn = elm_object_part_content_get(ly, PART_ITEM_TITLE); grid = elm_object_part_content_get(ly, PART_ITEM_CONTENT); - inputmgr_remove_callback(btn, &_handler); + inputmgr_remove_callback(btn, &_idx_handler); inputmgr_remove_callback(grid, &_grid_handler); } diff --git a/src/view/base.c b/src/view/base.c index 7c928a3..39d8d3a 100644 --- a/src/view/base.c +++ b/src/view/base.c @@ -596,6 +596,8 @@ static bool _draw_view_mode_btn(struct _priv *priv) elm_object_part_content_set(priv->base, PART_VIEW_MODE, btn); + elm_object_focus_next_object_set(btn, btn, ELM_FOCUS_RIGHT); + priv->view_btn = btn; return true; @@ -655,6 +657,7 @@ static void _show_toast_favorite(struct _priv *priv, const char *id) static Evas_Object *_create(Evas_Object *win, void *data) { + struct layout_data ldata; struct _priv *priv; Evas_Object *base; layoutmgr *lmgr; @@ -694,9 +697,13 @@ static Evas_Object *_create(Evas_Object *win, void *data) } lmgr = layoutmgr_create(base); - for (i = 0; i < E_LAYOUT_MAX; i++) + for (i = 0; i < E_LAYOUT_MAX; i++) { + ldata.top = priv->menu_btn[i]; + ldata.bottom = priv->view_btn; + layoutmgr_add_layout(lmgr, g_menu_item[i].func_get_lclass(), - priv->menu_btn[i]); + &ldata); + } priv->lmgr = lmgr; -- 2.7.4 From 33c1470958670638d0b0c05ac5c3c67d3292e8d1 Mon Sep 17 00:00:00 2001 From: Jehun Lim Date: Thu, 3 Sep 2015 14:34:11 +0900 Subject: [PATCH 16/16] action_menu: add unfavorite images Change-Id: I519d969f8d85ccbd1e402077bbe29cefea3cb601 Signed-off-by: Jehun Lim --- include/view/action_menu.h | 5 ++-- res/edc/images/btn_menu_del_sel.png | Bin 447 -> 0 bytes res/edc/images/btn_menu_favorite_sel.png | Bin 1051 -> 0 bytes res/edc/images/btn_menu_remote_favorite_dis.png | Bin 0 -> 711 bytes res/edc/images/btn_menu_remote_favorite_foc.png | Bin 0 -> 707 bytes res/edc/images/btn_menu_remote_favorite_nor.png | Bin 0 -> 755 bytes res/edc/widgets/button.edc | 34 +++++------------------- 7 files changed, 9 insertions(+), 30 deletions(-) delete mode 100644 res/edc/images/btn_menu_del_sel.png delete mode 100644 res/edc/images/btn_menu_favorite_sel.png create mode 100644 res/edc/images/btn_menu_remote_favorite_dis.png create mode 100644 res/edc/images/btn_menu_remote_favorite_foc.png create mode 100644 res/edc/images/btn_menu_remote_favorite_nor.png diff --git a/include/view/action_menu.h b/include/view/action_menu.h index ee4b687..f4730d8 100644 --- a/include/view/action_menu.h +++ b/include/view/action_menu.h @@ -52,12 +52,13 @@ /* image */ #define IMAGE_ACTION_FAVORITE_NOR "/btn_menu_favorite_nor.png" #define IMAGE_ACTION_FAVORITE_FOC "/btn_menu_favorite_foc.png" -#define IMAGE_ACTION_FAVORITE_SEL "/btn_menu_favorite_sel.png" #define IMAGE_ACTION_FAVORITE_DIS "/btn_menu_favorite_dis.png" +#define IMAGE_ACTION_UNFAVORITE_NOR "/btn_menu_remote_favorite_nor.png" +#define IMAGE_ACTION_UNFAVORITE_FOC "/btn_menu_remote_favorite_foc.png" +#define IMAGE_ACTION_UNFAVORITE_DIS "/btn_menu_remote_favorite_dis.png" #define IMAGE_ACTION_DELETE_NOR "/btn_menu_del_nor.png" #define IMAGE_ACTION_DELETE_FOC "/btn_menu_del_foc.png" -#define IMAGE_ACTION_DELETE_SEL "/btn_menu_del_sel.png" #define IMAGE_ACTION_DELETE_DIS "/btn_menu_del_dis.png" #define GRID_ITEM_X_MOVIE 440 diff --git a/res/edc/images/btn_menu_del_sel.png b/res/edc/images/btn_menu_del_sel.png deleted file mode 100644 index d7660dd7e71fc46f8eb09f59afbd09ceb1a6f789..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 447 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKw1|+Ti+$>^XU~KbraSX}0_x7f}-(drh;~(=G z9o0`=VP4QTQNaC!U_#Ps#u#}EE zulXdiy)WJO@`RwiW&0RdwIdF4g>7gOo#Q7WQ|%YSJ>wAH-xs1Aem}ZVIx~Iu!qyn0 zwD$b{mSx7*T+hUWc`w^AS!e4ho7sQA##~qYYr%R$)lar9-uCePWoI@A9z1#WlF$Ru z4UBuXo)R%LZoNC>&^jlE`OMi5E{X40z4zU|?4l3<7~W~uzST1QaBpRoLB&L_AG|9* z-hRj$FugLYouTd9x!>xGL*-9{c^ET)9>^4 z@Dx0av+-2U*WNF{3vd)RVm8ifbl`UUh}-cmIvN>xDy~E~zQLC41~e@20vw4~v*VHo z>DpGEg9x}1&hKQ$>qS`S>gBwEE8)Bz|772Nhh8~9$9Vx?h8ZG^2djjcnAK>&?fAjo zg+}gSod@tVv<-qAtnbA$om*Jv0X$MTS5(63qWWqG;0^HzWX^g!}NmXesC89{iQUa0;yz-rkNictxbLdUPV*M5lqRptlmuGijyu zm3Xcn61j1Copx5@A}khF+Rq8+n7p*yW8fLR3X!c8n59edWLbgh52yDRf;xQPiUqot3-Xo_3ZWH0WZkVx39Xt)_u+ zExrh6;bYvKjg_(+kgNqw1zZW|9U_N5CKjdH*>N>`*+4zMTD*hml{lv7<6q+{6=bSSsK#|HlKr zi`DixysrL|a;Uc999%6TCy8p>#A^gixW6qmfg4>-;6_&yxY5-FZge$)8(k9)_&-QX V+}UQ#TowQT002ovPDHLkV1l!~2F3sY diff --git a/res/edc/images/btn_menu_remote_favorite_dis.png b/res/edc/images/btn_menu_remote_favorite_dis.png new file mode 100644 index 0000000000000000000000000000000000000000..c57ad76950406189bd5c17d5d6070cffbf4903d2 GIT binary patch literal 711 zcmV;&0yzDNP)6nAG?Wvfu~A z08of?&pNP5fGPkQb%H2XftPTQ*YzAO7OVmXY4TOq3tX^l71+ZmZC!6sz&m;fxz}mi zur5v0DzIiiHDp5c2P?$5q3cav>DsgI^Orp&XG_bHI-e+LF%t}5?X zp&*TgERAlN837C$NB@9@_F$}N0huL+TM)O%7T1QmiGiJ5C(i0nKZUz&GR^exkYWX- z$Tkty@$rFQ1HIft@sK4=Yg`#aon1Z>V9mrQ%sdH_BG^%yghmz2t_uYeYNFvr=}t~6 zd^ZKR#pmo%nnY*38!SzB_&JG;>B0Uz@|4AAPWic7;WkfYW{-}@&ecvLc&QV`&)y^l zff*W?w$a5FDk-w8afdcZ!%j?zyilUxb)4*Uzg0Qpm4002ovPDHLkV1k*)Ln#0N literal 0 HcmV?d00001 diff --git a/res/edc/images/btn_menu_remote_favorite_foc.png b/res/edc/images/btn_menu_remote_favorite_foc.png new file mode 100644 index 0000000000000000000000000000000000000000..f5a0925cde4c95be1b02f0debf932ac76a040873 GIT binary patch literal 707 zcmV;!0zCbRP)P6r(}3ia&@&Ppt9=)}AY6C?P zdhs6+FO_OEDu@*nPyT96BZef^bf=d!Bs9C3-HjWBoxQxBdGq~bCiCV!RuMF&sSV=# zU?1#*eQ;yIy^ONQdvFtHiO}agcrQVo(oWQCaF}@>kfp=fbj3wlR1m1>-mX{!1fT-} zFTocWHs+6T#yhaaeii`G$q+~J3fx7I7lxfAOw22AoE+~AJH>AfdIgU1nq|W-kYa~@ z31{J?5+ql8TT9-4P`Qa?S52$_bGX8G!_G5gSmUMf%d2Lr9{bz#hgl|N!E4xt&J)r= zvD7njB+%ln28`E)nA%&mDt%I8TZM*{Y+$ z{82@(2nZZMnuwc^HtbZ(T_EiY6OmMmaf493z^!z0iyjHJQ(R>o&9xTBThFUy&4a7srlkOgDA4!cp!xsXg4Scmw_HBtr|cOp&)Qph^0zCtJ3y zVMYir$qdIhL6M1yooHf7LQyjA2F1;a_md)GSWywGNGzk4v2HVtgY0ImqURCwhV_Y` zW&JvzsC3uxi=mLDm94cU<^JPt(qy?#ltn(6dTrqvZ+J+N1C|#JAa|+* z++~pvMH0NU(&8|E6j)}7+x1wnhE5xAnIL27CwR;p19bAOwy0bjZ=#v^l9!>%F23-i pKHz`Q{>#rzKG+BQU?1F=wgQf%K|H<}?C}5q002ovPDHLkV1kVGLR0_% literal 0 HcmV?d00001 diff --git a/res/edc/images/btn_menu_remote_favorite_nor.png b/res/edc/images/btn_menu_remote_favorite_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..f1f825066e5cdce574188feca59cda2d31061d7f GIT binary patch literal 755 zcmVUYZHNsh$7n=Ne1CA>5s5B<|b&r z+ro`fjZHsD21&Tk%D;)mpX&8q3tz+7_})A79G?*HuFgI8obz$+y_|cviq85B-#T$U zum|?Q{{h&ascKvk(ES`{e1ujaPMw{D^Epi+weExW5nzyF!ft~@O!ANW_OqWU05lRrQQQJo5MaoVV}vMo3mj#h z_l6wjCkNdEhk3(qLtZ4#uIxkjvv&b*6G)r&u;3P0V?J#*=Oo0+V1>)0U4%+dg_SK#dlMyA{q!YKo5(#$`}&d z;}MnASlHB3MmrBA*lZpNohh)oF2qrok%r6Wbqev7QA@BY@3XUO_Uu}_5U~EysuU`#vLcU$I@{29>W&u*-e55B6P21Be02N+D3TX7-lxj&PNNc>9r3iJL3R*8Cj-z%%mZG;#-t~6*DBcPMBFfnp%}{mACYwa=^0Ch%?Tk0+pK-(q@5$F?y)r z8c9k0l4R^hqljTTNLbqGJY$3gO8H_RR8}&#QosjcRr0Zi38w#5OPjsrV_amlG&J5x l%oOjV+yi@H5A1=Z;}7yCq;fh=*vJ3?002ovPDHLkV1iS2U3~xm literal 0 HcmV?d00001 diff --git a/res/edc/widgets/button.edc b/res/edc/widgets/button.edc index c796b32..bc0d876 100644 --- a/res/edc/widgets/button.edc +++ b/res/edc/widgets/button.edc @@ -3493,8 +3493,10 @@ group { images { image: IMAGE_ACTION_FAVORITE_NOR COMP; image: IMAGE_ACTION_FAVORITE_FOC COMP; - image: IMAGE_ACTION_FAVORITE_SEL COMP; image: IMAGE_ACTION_FAVORITE_DIS COMP; + image: IMAGE_ACTION_UNFAVORITE_NOR COMP; + image: IMAGE_ACTION_UNFAVORITE_FOC COMP; + image: IMAGE_ACTION_UNFAVORITE_DIS COMP; } script { public cur_state; @@ -3522,10 +3524,6 @@ group { inherit: "focused" 0.0; } description { - state: "selected" 0.0; - inherit: "default" 0.0; - } - description { state: "disabled" 0.0; inherit: "default" 0.0; } @@ -3609,7 +3607,7 @@ group { to: "bg_menu_icon"; relative: 0.5 0.5; } - image.normal: IMAGE_ACTION_FAVORITE_NOR; + image.normal: IMAGE_ACTION_UNFAVORITE_NOR; min: 60 60; align: 0.5 0.5; fixed: 1 1; @@ -3617,7 +3615,7 @@ group { description { state: "focused" 0.0; inherit: "default" 0.0; - image.normal: IMAGE_ACTION_FAVORITE_FOC; + image.normal: IMAGE_ACTION_UNFAVORITE_FOC; } description { state: "default_toggle" 0.0; @@ -3630,14 +3628,9 @@ group { image.normal: IMAGE_ACTION_FAVORITE_FOC; } description { - state: "selected" 0.0; - inherit: "default" 0.0; - image.normal: IMAGE_ACTION_FAVORITE_SEL; - } - description { state: "disabled" 0.0; inherit: "default" 0.0; - image.normal: IMAGE_ACTION_FAVORITE_DIS; + image.normal: IMAGE_ACTION_UNFAVORITE_DIS; } } part { @@ -3817,15 +3810,6 @@ group { } } program { - name: SIG_ITEM_SELECTED; - signal: SIG_ITEM_SELECTED; - source: SIG_SOURCE_SRC; - action: STATE_SET "selected" 0.0; - target: "bg"; - target: "menu_icon"; - target: "elm.text"; - } - program { name: SIG_ELM_DISABLED; signal: SIG_ELM_DISABLED; source: SIG_SOURCE_ELM; @@ -3843,7 +3827,6 @@ group { images { image: IMAGE_ACTION_DELETE_NOR COMP; image: IMAGE_ACTION_DELETE_FOC COMP; - image: IMAGE_ACTION_DELETE_SEL COMP; image: IMAGE_ACTION_DELETE_DIS COMP; } parts { @@ -3869,11 +3852,6 @@ group { image.normal: IMAGE_ACTION_DELETE_FOC; } description { - state: "selected" 0.0; - inherit: "default" 0.0; - image.normal: IMAGE_ACTION_DELETE_SEL; - } - description { state: "disabled" 0.0; inherit: "default" 0.0; image.normal: IMAGE_ACTION_DELETE_DIS; -- 2.7.4