From f3a0c459e083d4fce2910477b760048d50cad59d Mon Sep 17 00:00:00 2001 From: Jehun Lim Date: Mon, 24 Aug 2015 21:14:26 +0900 Subject: [PATCH 01/16] base: update playing info when favorite value is changed Change-Id: Ic23cf3e223ea846d7b68570de9800065749d8897 Signed-off-by: Jehun Lim --- src/layout/movie.c | 1 + src/layout/music.c | 1 + 2 files changed, 2 insertions(+) diff --git a/src/layout/movie.c b/src/layout/movie.c index 475db18..9d6561c 100644 --- a/src/layout/movie.c +++ b/src/layout/movie.c @@ -718,6 +718,7 @@ static void _update(void *layout_data, int update_type, void *data) break; case UPDATE_CONTENT_ITEM: listmgr_update_content_item(priv->listmgr); + _update_recent_item(priv, -1); break; case UPDATE_FOCUS: if (!data) { diff --git a/src/layout/music.c b/src/layout/music.c index f3ce0b1..e031fb6 100644 --- a/src/layout/music.c +++ b/src/layout/music.c @@ -645,6 +645,7 @@ static void _update(void *layout_data, int update_type, void *data) break; case UPDATE_CONTENT_ITEM: listmgr_update_content_item(priv->listmgr); + _update_playing_item(priv, -1); break; case UPDATE_PLAY_INFO: if (!data) { -- 2.7.4 From 62d4e69593ccbe170c1ff706733683001983a4bc Mon Sep 17 00:00:00 2001 From: Jehun Lim Date: Fri, 21 Aug 2015 14:49:34 +0900 Subject: [PATCH 02/16] action_menu: add no favorite content area Change-Id: Ic6dec7c882023d7d769fc13ec06a7dfe56c6f5f1 Signed-off-by: Jehun Lim --- include/define.h | 1 + include/view/action_menu.h | 9 ++++ res/edc/view/action_menu.edc | 120 ++++++++++++++++++++++++++++++++++++++++--- src/view/action_menu.c | 58 +++++++++++++++++---- 4 files changed, 171 insertions(+), 17 deletions(-) diff --git a/include/define.h b/include/define.h index ec9b141..dc8da71 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_NO_CONTENT_BG 229 229 229 255 #define SHOW_VIEW_INTERVAL 0.1 diff --git a/include/view/action_menu.h b/include/view/action_menu.h index 7b0e8d9..ee4b687 100644 --- a/include/view/action_menu.h +++ b/include/view/action_menu.h @@ -22,12 +22,21 @@ /* group */ #define GRP_ACTION_MENU_VIEW "group.action_menu_view" +#define GRP_ACTION_NO_CONTENT "group.action_no_content" /* part */ #define PART_ACTION_TV_BTN "part.action_tv_btn" #define PART_ACTION_MENU_AREA "part.action_menu_area" #define PART_ACTION_FAVORITE_TITLE "part.action_favorite_title" #define PART_ACTION_FAVORITE_AREA "part.action_favorite_area" +#define PART_ACTION_NO_CONTENT_BG "part.action_no_content_bg" + +#define PART_NO_CONTENT_BG "part.no_content_bg" +#define PART_NO_CONTENT_TEXT "part.no_content_text" + +/* signal */ +#define SIG_SHOW_NO_CONTENT "show,no_content" +#define SIG_HIDE_NO_CONTENT "hide,no_content" /* style */ #define STYLE_BTN_LIVETV "action_btn_livetv" diff --git a/res/edc/view/action_menu.edc b/res/edc/view/action_menu.edc index 7514ebf..d5f594b 100644 --- a/res/edc/view/action_menu.edc +++ b/res/edc/view/action_menu.edc @@ -170,7 +170,7 @@ group { relative: 1.0 1.0; } rel2.to: PART_ACTION_MENU_AREA; - min: 10 40; + min: 30 40; align: 1.0 0.0; fixed: 1 1; } @@ -201,7 +201,7 @@ group { } } part { - name: "padding_favorite_area"; + name: "padding_favorite_area_left_top"; type: SPACER; scale: 1; description { @@ -210,10 +210,26 @@ group { to: PART_ACTION_FAVORITE_TITLE; relative: 0.0 1.0; } - rel2.to: PART_ACTION_FAVORITE_TITLE; + rel2 { + to: PART_ACTION_FAVORITE_TITLE; + relative: 0.0 1.0; + } min: 0 30; - align: 0.5 0.0; - fixed: 0 1; + align: 0.0 0.0; + fixed: 1 1; + } + } + part { + name: "padding_favorite_area_right_bottom"; + type: SPACER; + scale: 1; + description { + state: "default" 0.0; + rel1.relative: 1.0 1.0; + rel2.relative: 1.0 1.0; + min: 10 0; + align: 1.0 1.0; + fixed: 1 1; } } part { @@ -223,14 +239,102 @@ group { description { state: "default" 0.0; rel1 { - to: "padding_favorite_area"; + to: "padding_favorite_area_left_top"; + relative: 0.0 1.0; + } + rel2 { + to: "padding_favorite_area_right_bottom"; + relative: 0.0 0.0; + } + } + } + part { + name: "padding_bg_no_content_right_bottom"; + type: SPACER; + scale: 1; + description { + state: "default" 0.0; + rel1.relative: 1.0 1.0; + rel2.relative: 1.0 1.0; + min: 30 32; + align: 1.0 1.0; + fixed: 1 1; + } + } + part { + name: PART_ACTION_NO_CONTENT_BG; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { + to: "padding_favorite_area_left_top"; relative: 0.0 1.0; } rel2 { - to_x: "padding_favorite_area"; - to_y: "bg"; + to: "padding_bg_no_content_right_bottom"; + relative: 0.0 0.0; + } + } + } + } +} + +group { + name: GRP_ACTION_NO_CONTENT; + parts { + part { + name: PART_NO_CONTENT_BG; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + color: COLOR_NO_CONTENT_BG; + visible: 0; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: PART_NO_CONTENT_TEXT; + type: TEXT; + scale: 1; + description { + state: "default" 0.0; + text { + font: FONT_LIGHT; + size: 32; + align: 0.5 0.5; } + color: COLOR_TEXT_INDEX; + visible: 0; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; } } } + programs { + program { + name: SIG_SHOW_NO_CONTENT; + signal: SIG_SHOW_NO_CONTENT; + source: SIG_SOURCE_SRC; + action: STATE_SET "show" 0.0; + target: PART_NO_CONTENT_BG; + target: PART_NO_CONTENT_TEXT; + } + program { + name: SIG_HIDE_NO_CONTENT; + signal: SIG_HIDE_NO_CONTENT; + source: SIG_SOURCE_SRC; + action: STATE_SET "default" 0.0; + target: PART_NO_CONTENT_BG; + target: PART_NO_CONTENT_TEXT; + } + } } diff --git a/src/view/action_menu.c b/src/view/action_menu.c index b8b899a..1560753 100644 --- a/src/view/action_menu.c +++ b/src/view/action_menu.c @@ -58,6 +58,7 @@ struct _priv { Evas_Object *menu_btn[NUM_MENU_BTN]; Evas_Object *table; + Evas_Object *ly; Evas_Object *grid; Elm_Object_Item *selected_it; @@ -80,6 +81,8 @@ struct _content_info { const char *style; int app_contents_type; + + const char *no_content; }; static struct _menu_info menu_info[] = { @@ -114,19 +117,22 @@ struct _content_info content_info[] = { .grid_x = GRID_ITEM_X_MOVIE, .grid_y = GRID_ITEM_Y_MOVIE, .style = STYLE_GRID_MOVIE_ITEM_FAVORITE, - .app_contents_type = CONTENTS_MOVIE + .app_contents_type = CONTENTS_MOVIE, + .no_content = "No favorite Movies" }, { .grid_x = GRID_ITEM_X_GALLERY, .grid_y = GRID_ITEM_Y_GALLERY, .style = STYLE_GRID_GALLERY_ITEM_FAVORITE, - .app_contents_type = CONTENTS_GALLERY + .app_contents_type = CONTENTS_GALLERY, + .no_content = "No favorite Contents" }, { .grid_x = GRID_ITEM_X_MUSIC, .grid_y = GRID_ITEM_Y_MUSIC, .style = STYLE_GRID_SONG_ITEM_FAVORITE, - .app_contents_type = CONTENTS_MUSIC + .app_contents_type = CONTENTS_MUSIC, + .no_content = "No favorite Songs" } }; @@ -561,14 +567,25 @@ static bool _draw_menu_area(struct _priv *priv) static bool _draw_favorite_area(struct _priv *priv) { - Evas_Object *grid; + Evas_Object *ly, *grid; elm_object_part_text_set(priv->base, PART_ACTION_FAVORITE_TITLE, TEXT_FAVORITE); + ly = elm_layout_add(priv->base); + if (!ly) { + _ERR("failed to create layout object"); + return false; + } + + elm_layout_file_set(ly, EDJEFILE, GRP_ACTION_NO_CONTENT); + + elm_object_part_content_set(priv->base, PART_ACTION_NO_CONTENT_BG, ly); + grid = util_add_gengrid(priv->base, 0, 0, EINA_FALSE); if (!grid) { _ERR("failed to create gengrid object"); + evas_object_del(ly); return false; } @@ -580,6 +597,7 @@ static bool _draw_favorite_area(struct _priv *priv) elm_object_part_content_set(priv->base, PART_ACTION_FAVORITE_AREA, grid); + priv->ly = ly; priv->grid = grid; return true; @@ -656,12 +674,30 @@ static void _update_menu_area(struct _priv *priv) ELM_FOCUS_RIGHT); } +static void _update_no_content_area(struct _priv *priv) +{ + if (!priv->favorite_list) { + elm_object_signal_emit(priv->ly, SIG_SHOW_NO_CONTENT, + SIG_SOURCE_SRC); + elm_object_part_text_set(priv->ly, PART_NO_CONTENT_TEXT, + content_info[priv->content_type]. + no_content); + + elm_object_focus_allow_set(priv->grid, EINA_FALSE); + } else { + elm_object_signal_emit(priv->ly, SIG_HIDE_NO_CONTENT, + SIG_SOURCE_SRC); + + elm_object_focus_allow_set(priv->grid, EINA_TRUE); + } +} + static void _update_favorite_area(struct _priv *priv) { Elm_Gengrid_Item_Class *ic; Elm_Object_Item *it; - Eina_List *favorite_l, *l; + Eina_List *l; app_media *am; int type; @@ -669,15 +705,19 @@ static void _update_favorite_area(struct _priv *priv) type = priv->content_type; + if (priv->favorite_list) + _free_favorite_list(priv->favorite_list); + + priv->favorite_list = _get_favorite_list( + content_info[type].app_contents_type); + elm_gengrid_item_size_set(priv->grid, elm_config_scale_get() * content_info[type].grid_x, elm_config_scale_get() * content_info[type].grid_y); ic = _get_grid_item_class(type); - favorite_l = _get_favorite_list(content_info[type].app_contents_type); - - EINA_LIST_FOREACH(favorite_l, l, am) { + EINA_LIST_FOREACH(priv->favorite_list, l, am) { it = elm_gengrid_item_append(priv->grid, ic, am, NULL, NULL); elm_object_item_data_set(it, am); @@ -685,7 +725,7 @@ static void _update_favorite_area(struct _priv *priv) elm_gengrid_item_class_free(ic); - priv->favorite_list = favorite_l; + _update_no_content_area(priv); } static bool _draw_items(struct _priv *priv) -- 2.7.4 From 2dcb151a21765c827d45184a8991ccbaefff63a9 Mon Sep 17 00:00:00 2001 From: Minkyu Kang Date: Mon, 24 Aug 2015 22:02:00 +0900 Subject: [PATCH 03/16] move _add_to_recent function to util Change-Id: I90d9cb150cee1e8808fce2f3a91913cb84fd967a Signed-off-by: Minkyu Kang --- include/util/util.h | 1 + src/util/util.c | 23 +++++++++++++++++++++++ src/view/mplayer.c | 24 +----------------------- src/view/viewer.c | 28 +++------------------------- 4 files changed, 28 insertions(+), 48 deletions(-) diff --git a/include/util/util.h b/include/util/util.h index 0bca6a0..dfc2d53 100644 --- a/include/util/util.h +++ b/include/util/util.h @@ -35,5 +35,6 @@ void util_up_string(char *str); int util_get_media_index(Eina_List *list, void *info); int util_get_media_index_from_id(Eina_List *list, const char *id); app_media *util_find_media_info(Eina_List *list, const char *id); +void util_add_to_recent(Eina_List *list, int index); #endif /* __AIR_MEDIAHUB_UTIL_H__ */ diff --git a/src/util/util.c b/src/util/util.c index 5dc631b..d5c5356 100644 --- a/src/util/util.c +++ b/src/util/util.c @@ -17,6 +17,7 @@ #include #include #include +#include #include "util/util.h" @@ -250,3 +251,25 @@ app_media *util_find_media_info(Eina_List *list, const char *id) return NULL; } + +void util_add_to_recent(Eina_List *list, int index) +{ + app_media *am; + app_media_info *mi; + + am = eina_list_nth(list, index); + if (!am) { + _ERR("failed to get app_media"); + return; + } + + mi = app_media_get_info(am); + if (!mi) { + _ERR("failed to getting media info"); + return; + } + + app_contents_recent_add(CONTENTS_MEDIA, mi->media_id); + + app_media_update(am); +} diff --git a/src/view/mplayer.c b/src/view/mplayer.c index fd7746d..e573f74 100644 --- a/src/view/mplayer.c +++ b/src/view/mplayer.c @@ -99,28 +99,6 @@ static struct _btn_info btn_player[] = { }, }; -static void _add_to_recent(struct _priv *priv) -{ - app_media *am; - app_media_info *mi; - - am = eina_list_nth(priv->playlist.list, priv->playlist.cur); - if (!am) { - _ERR("failed to get app_media"); - return; - } - - mi = app_media_get_info(am); - if (!mi) { - _ERR("failed to getting media info"); - return; - } - - app_contents_recent_add(CONTENTS_MEDIA, mi->media_id); - - app_media_update(am); -} - static void _draw_playlist(struct _priv *priv) { struct _list_data *ld; @@ -274,7 +252,7 @@ static void _update_info(struct _priv *priv, app_media_info *mi) viewmgr_update_view(VIEW_BASE, UPDATE_PLAY_INFO, &vdata); /* update history */ - _add_to_recent(priv); + util_add_to_recent(priv->playlist.list, priv->playlist.cur); } static void _mplayer_show(struct _priv *priv) diff --git a/src/view/viewer.c b/src/view/viewer.c index 78dfae0..d800737 100644 --- a/src/view/viewer.c +++ b/src/view/viewer.c @@ -162,28 +162,6 @@ static struct _viewer_info viewer_info[] = { }, }; -static void _add_to_recent(struct _priv *priv) -{ - app_media *am; - app_media_info *mi; - - am = eina_list_nth(priv->playlist.list, priv->playlist.cur); - if (!am) { - _ERR("failed to get app_media"); - return; - } - - mi = app_media_get_info(am); - if (!mi) { - _ERR("failed to getting media info"); - return; - } - - app_contents_recent_add(CONTENTS_MEDIA, mi->media_id); - - app_media_update(am); -} - /* * NOTE: Workaround * we assumed that if video content have the copyright then it's a movie. @@ -281,7 +259,7 @@ static void _image_loaded_detail(void *data, Evas_Object *obj, void *ev) priv->photo_pre = NULL; - _add_to_recent(priv); + util_add_to_recent(priv->playlist.list, priv->playlist.cur); } static void _draw_contents(struct _priv *priv, int id, app_media_info *mi) @@ -706,7 +684,7 @@ static void _player_play_pause(struct _priv *priv) playermgr_play(priv->player, mi->file_path, mi->video->position); - _add_to_recent(priv); + util_add_to_recent(priv->playlist.list, priv->playlist.cur); break; default: @@ -745,7 +723,7 @@ static void _player_play(struct _priv *priv) playermgr_play(priv->player, mi->file_path, mi->video->position); - _add_to_recent(priv); + util_add_to_recent(priv->playlist.list, priv->playlist.cur); break; default: -- 2.7.4 From 9e87b673abc0655b61d8c2786db46ba5b01509f7 Mon Sep 17 00:00:00 2001 From: Minkyu Kang Date: Mon, 24 Aug 2015 22:40:57 +0900 Subject: [PATCH 04/16] fix image files Change-Id: Ie4cbc752bd25746bd539d367d4745227dfa55fc6 Signed-off-by: Minkyu Kang --- org.tizen.mediahub.png | Bin 4379 -> 1351 bytes res/edc/images/btn_menu_del_dis.png | Bin 1218 -> 316 bytes res/edc/images/btn_menu_del_foc.png | Bin 1282 -> 327 bytes res/edc/images/btn_menu_del_nor.png | Bin 1313 -> 372 bytes res/edc/images/btn_menu_del_sel.png | Bin 1315 -> 447 bytes res/edc/images/btn_menu_favorite_dis.png | Bin 1780 -> 809 bytes res/edc/images/btn_menu_favorite_foc.png | Bin 1793 -> 757 bytes res/edc/images/btn_menu_favorite_nor.png | Bin 1871 -> 850 bytes res/edc/images/btn_menu_favorite_sel.png | Bin 1893 -> 1051 bytes res/edc/images/btn_music_contr_one_mode_nor.png | Bin 2113 -> 1162 bytes res/edc/images/btn_music_contr_one_mode_sel.png | Bin 2052 -> 1106 bytes res/edc/images/btn_music_contr_repeat_dis.png | Bin 2041 -> 1106 bytes res/edc/images/btn_music_contr_repeat_dis_foc.png | Bin 1979 -> 1077 bytes res/edc/images/btn_music_contr_repeat_foc.png | Bin 3866 -> 1058 bytes res/edc/images/btn_music_contr_repeat_nor.png | Bin 3896 -> 1110 bytes res/edc/images/btn_music_contr_shuffle_dis.png | Bin 1888 -> 991 bytes res/edc/images/btn_music_contr_shuffle_dis_foc.png | Bin 3657 -> 927 bytes res/edc/images/btn_music_contr_shuffle_nor.png | Bin 3737 -> 989 bytes res/edc/images/btn_music_contr_shuffle_nor_foc.png | Bin 3679 -> 894 bytes res/edc/images/ic_mini_player_play_foc.png | Bin 3609 -> 748 bytes res/edc/images/ic_mini_player_play_nor.png | Bin 2003 -> 1156 bytes res/images/ic_music_list_favorite.png | Bin 1818 -> 1027 bytes res/images/ic_thumbnail_favorite.png | Bin 1039 -> 985 bytes res/images/ic_thumbnail_song_player.png | Bin 6077 -> 1727 bytes 24 files changed, 0 insertions(+), 0 deletions(-) diff --git a/org.tizen.mediahub.png b/org.tizen.mediahub.png index 39f839dcf03db6cc9c8f2b96cfb6064a15f8dbd4..fe45773b0b5536f6b975ffdd24e53b5e70ae693f 100644 GIT binary patch delta 1343 zcmV-F1;F~7BF74l8Gi%-007%3Dh~hv1rA9>K~!ko?V4{)Rb?E!v3Ns~IIz4}(>Qy6oXaSnh0ja0D6w(lY; zXk-k4AK7d=hkseOReTD-0J~UfjPGMN0{|Rml~*v^@dG2&k>=RK(x~GW;HN5nm{j%y zaE!H%L8fIb#{k&Rym(-Iv;d=2y9Sw-Y63vB{UX~b$m9ah$ELVZgeam9=wyW(m}PVU zJ>+rkl7lYo zD}yn{Z+|}=Ztw6WaL7ni5Xho|0C0oaXx~&@X$0Pg4$}@iZKMc5h-|(9;5W89hN%Ra zqrs#zLBP;>r(uLB<01e@$#VpgMt~4YtYNkRO@@jhVMGc$83Jxm&jJTHEx?mA*O5V7 zp`^2};+>G**E)TyRMn|lRmS7mB^A$HM#2V8A;}4`hjuwMp{D@c^EirZ8KNFI0}pgBg7IuU>x|Dmq@nNk^}r{4KoA= zPZJwPh>iRJK&$O1aVaop4HE+9cmyMo*iJ8S+NRH3V9XjO_5@D*ZUIKk^+fKbprlmS zyMJkRo2$2UMAGLreHKa@vEEI6V0`GsdNYsnD*&I^o?6+!U)Iay#nui_@g)G4cp`?D zSz9}Dnf{P;U!04Rsyba#g>I@=8}v<#-uaTQ%v?soT$HpaE|hKRQoZKukRDWnf-(E& zPt9s!Gf%lbD22%51OQ#Lok<&+bx=m$N`EKh%7qXMs3!mn@fs<{C~1sEcOl$3S3*>B z6`16JU53FzY@I77Zs#=2I!*)7VZ0A#x4kp-#&oPJ)@5TyM#AaZ?z=+p#o>5M@&T55&xKewV@H3l)aq-FS*?-1s z4O0e;c$hr1l3YfBve+=;l*sXf!kjcsiHOzsfgK4$sRo8jlSShB1g6o77z3WQx)*Io zIKg=mfgS@(d-5ZlE*zN78QaO1gkviakLo z<{Hpx_pa>~_-FB}002ovPDHLkV1jR) Bai0JH literal 4379 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 V`&>P-#v1?t002ovPDHLkV1g{uBvb$Z diff --git a/res/edc/images/btn_menu_del_dis.png b/res/edc/images/btn_menu_del_dis.png index 88254affa3bdd6c923053ccf2654eb669f6a4c67..ec0e8195cad17e2158d9b89519ea9eb9c26849c9 100644 GIT binary patch delta 300 zcmV+{0n`4%3A_T38Gi%-005Bn5%~ZB0Ru@yK~z}7?btyIf;gf8REvlr#CekwCcU>Cb>8P2aC{nEX(xIuxe6<+u)-aL z!}`;U>cd0kFQYZbs*6@%sCZN}@>4NOL5>+S_qjHB^U;cUsDF6-E%=8Yr-Y2uDQ8MX z(j1PMFmQqgOo*Dp1=!QP-RgZ-mtoTeTv9q#Y$z$4!%#RcwY6S_6;@al#ut1hw7$2W z5z^=Et74bkTC`y*+-cbSUB#YZc@N?dcI!bRN&g{j=nG;o982o8f5P13z?hR{Bg8Of y=MT<_n2J{C!X=(uk}}Yrs0u5ru)+!}{D>PND?{r%YHMi#0000-n*TA>HIW;5GqpB!1xXLdixhgx^GDXSWPQj+a3TQxXYDuC( zMQ%=Bu~mhw64+cTAR8pCucQE0Qj%?}1aVY^Z-9bxeo?A|sh+WJvVozYf|;3~p^2%P znW2t?k%6I+z5x)K=^C0?nVMM{nJYkn6417ylr*a#7dNO~K%T8qMoCG5mA-y?dAVM> zv0i>ry1t>Mr6tG=BO_g)3fZ zE`@j@w*YQzUNJP7fB~jokyxN_sAmB35=^15FMg%Dxp39RB|)hO_hL1;IHa;5RX-@T zIKQ+g85nVC${?!>telHd6HD@oLh|!-V4)b0kzbNuoRMFk;2dnGpb?&#my%yztO-`{ z>ucqiS6q^qmz?V9Vygr+K`%2i#mdagz}(T&(Z$HX%+S!#)zs0|#N5f!%+b)<$j!;f zzyPM#B|o_|H#M&WrZ)wl*A=H;P*TV(0NU)5T9jFqn&MWJpQ`}&vQ;K-w*alhJp?z$7&CYeN_t*T1EUJBYWA>AW zx14-0+Z<_0|8FC9zC|^z_gwPIm-oJheNbDO9r36+{w2$SrBA#z71^Bks-9xlP<*oW z$rVAHt8$e*54N#?@A?z2f55q+JLEw8ta-wERke$D=x!~KxU|+)5o+NxI~ma*!SmN1 z=etpSR{gEu)t0^AE~nl00!s5U>CG^B@bG}ER>Jx1ayzfy=JWn=o<)uCLFd(y=8s_o z`j*peqH>wP3RzyibBv?z`qS@8JBs$HmPg%IG5Qz71@{z~;cUTaz>pl{`8?;R&390# N;_2$=vd$@?2>^A|r`iAj diff --git a/res/edc/images/btn_menu_del_foc.png b/res/edc/images/btn_menu_del_foc.png index dfdfb40bc7ff7448d5a013453c7081cc3f7922db..b64706673ac40355844b787fde2e6e9bc4de9feb 100644 GIT binary patch delta 311 zcmV-70m%M>3daJF8Gi%-005Bn5%~ZB0S-w-K~z}7?bk65f-n>Y;2&d@30&X+gpowA zq7xg}@Hkw;gw^Xf2@{PbbucmNVBfRVqP)jMfcNo-LQA0GrzW0Ufdv*=;L*TK=(}z8 zJ$Uo5w|=KZV3?h3Ca>Vt!KvZmtp#kA_+vHTQJtek!RlF{Mt^P(N2rjo;0zTad$_fX8lF%*ksZPcJu5L`{Xt#OcSy-_N*P+_f2V8h zQR09j;mid}>@Y|@HDyb5qtBXBC*A0T(o=rg1Qu9efdv-$Ru?OEmqt8?BR>ED002ov JPDHLkV1o3}j)(vN literal 1282 zcmb7EZEO=|9KWu~6dWZ1o$SSM9xNc*-b;Je_E^RCu7x_g&8~qu&E(d5wqDkI+1-_P zL&&m_s3BQ&iz6VK_<=2Pt0QQ_&;Xhd&EkCdfX3+uh9<%X$rf?w%oLy7*1-ot;^pq1 zm;8Re|LgO--dMkT-P+2v2!gDO?&0HbthK%eOW~hgoYvt`VTO}tliFtH1RWqjQEdfi zR2JGn90+1p=Olm(`(7!LG?TIC*pw=}1PkNJ%Nk@uv0ZshNOb@cZ3XR;62N9Zxrm{X z7{K{K$=h;ph9P}=2orU;Tm8OB9=Xoex5LMeiza00%Jlk~7O!%|*!<-wpeU2J3H zd}PHITm`VSX=*Hv=W;n$&h1k5cAWJ4{gwtrIU&MnbSb8gcPhq~q5=<$lrCweq$;ST zD730sGk`%)mqU=XSZq~TF;)@g&R3=}iU2QV_?=NV6sCP>c9alDt}{O$(OwFMN|HgI^6`v29Q4psi1$UX6|VSya)m=DaH|>aYL4O->^N(>+Ujtz zdRTx0PlyhWLi5xg2?Vi)qI@us|M9o!hOa++X44m);nO>+9O&Q%$JLV2%q6;d_s?a6 z<+ItAsvFO4j0XDOO#U@+{pMxj%C?2VrKwkbPiKdofA`v3Z@k~UW)!iPmTe;Tf7)Za zU6S8AxmjF1Ix{`+%@A;6JH}u9`|{o=yZ<~o-@9?_!i~zlAJ*FszhIwiraUiQ`}Qkx z&Q@JF*ni>i@!4NrJA@2-wULke-Z@fQf2iavXWLwJyz|wcl)kBB7f*e3#4%iHmwF33 zs~`52E(%(_#P{Ar&$+s{TP9-BFOh>4A71^1&dk>qZY9@@&orEH*bm=!6wWLRPxSob zo1fco^4!4s5y!~M1L@we$F5iO9BlTE)_wQLqqnvlulu*=fm7s8WvcK!MqhDeYpN#s ycvI!gt<%x+{`2b0*!GqoTQNo}*tzrULj+P@mRLCZ^5=8btrQK{^B;uv_x=Yk54X4g diff --git a/res/edc/images/btn_menu_del_nor.png b/res/edc/images/btn_menu_del_nor.png index 169874f3aefc53a6b5c8a54db43a9b9b5b8f2445..418bcb5b74c81196ba56f39a447592a2e3ff7f51 100644 GIT binary patch delta 356 zcmV-q0h|7z3iJYy8Gi%-005Bn5%~ZB0Xs=VK~z}7?btDH!Y~+y;WuqXnGz-rfEbag z-h#EA*q9^cO1(l)z?w@iGH?UV(Jmwtkt)GT5RL!8cH|`3n-eEbzSwc%L?`@|2TyK* z103KUz)$)^(i_{>-ANqP&DH5&J6_md)Ltt!;eGgD;`d7Jt$&HcHZQNJF0pBFeOkb^ z#RPvf1=sem{vnYcZ5~`xGG;1qM#j`CF#s`3CMtNslGq+Dz C{idz} literal 1313 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 b%PPT8eK}#edhz)!pkm9@)z4*}Q$iB}L;=AQ diff --git a/res/edc/images/btn_menu_favorite_dis.png b/res/edc/images/btn_menu_favorite_dis.png index bd9bdd8fea7e302ea267636be304fe737619dd1b..1674eb9253ac8bf043d3860efb1fbba736529ec1 100644 GIT binary patch delta 797 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 a9X|ntG)#iYASJK>0000#DA+@(0v*^I237ICQ zzYZ!^5ei6g0tL8C4nxHTL4e0&f<9ax4_pR7Y!G6xshh_DeS}<|5aI(<7oGA(s8fXD zuzboF^(CgKlB8b9Vr6AzF|#;KoY1g9fk0s4fFK5C!7yZFBw}P>2JdMG7&WK}t)A54 z7+_&UlJN{uOs67!oq|rUP`n|=3{!=oO2#rGdKSoJvvfL3UX#`aG8}yy#(!EHBD3`< zD;zc88H9@JM~e3}n5y0T9a#*iXoMkzmTC%;4&$l}9g2~Gu$T_Y1u)M?!exU}zEleH zA*p~Pm-0cjjO)whawXH)cQF(jQ>|4C1yUanmI|a0o68458P{JTh5R8d2=S$`oDcD* zv4NO@L@*U<@n^wm-(vmWixo-<6d`dU635f0J0F^glei%j*8|cB9`IR=7E|L{h9#D^ zyv`Cv32i2-mJ_%Rn5?T%`yc-Ka+oLQa3C%pqEZDx2@LtdJdRA_!-f1|UpajWtNuT= zVo^b`EMj;^9MeaX;w;-YQl~!N3=4`;6GBj<;PrLDEo#Cffv_afc;&&a)d6$D+`AK; z6u{4DNG|yRQoh$LPpNKQg ziM7K_E~6&Cxv7I**=<^iB_cuR#}C(+_HMm;42j?QB5W`~eUmFmV?27~i4)iR2x4>cbvjbs!NTU27iI zG}i8)4R~C&Zu2G{J^;oZ2X*~prCfA(v;=mWH5~V3OL4P#<>tyv2T{WyD_Z%vu4}g= zZ!NSe^xBy`;`&9b{(5hM!uoVO|AI~QprHTJrWDi0-~$F=2)*b~RX);Yv-t8>FGHVm zsMU*h!-quRk2A=;JxPA{XFJytR;$dbmFkV=qJ^7MHe5=goiN2IZwp!~MEcSt{WJ15 zqi&|?luHiV@A=dmavE}MHPt13n`gWY8fh=BAGZ@x{4f*`w%z*RVGoc9DZNsYcCTS8 z(f(RbyjrtuG&v-wt9ICUt+ZGm$zDsIP}vD?e*TGdCZ zBArG|AM49n7?*M+HiM!C1p}t^E&Ff2T2FKSp>1BU)z4qKxoQU;b}`^*rh%k=vfY0M zr#)>sqPJZzvo-&m?}U?C(R;JyWwz&?&gT<3qv21N9fby6gO+WJu*+(2x!#@gvi6{7 zqWf?~LUGK4s9R}O`R9{|ISspnXGZStbI+)67T{le>boGSWaN0?q0wqRbKqQAScZOn z?pU+TL)0Hx!q2B)Y8|>+=2qBaY~M0?#_r_i9J}(%MPuJQZ4N^ps;_PzC`ha5l|+aW z7KMel$vqM~PptT3(XGL1DH2sDDlo&L zkE^~f{tYtQj=G;XY=3urxu^8{leAToVAGIy)Z5e8X6;P#yl<9bgDsYy94%0$gpc_r G<^2oaAiI$O diff --git a/res/edc/images/btn_menu_favorite_nor.png b/res/edc/images/btn_menu_favorite_nor.png index a4729764761d5ea8f81b2abcbd37ccd1c4a469cf..db5e71466c0d57a0da942e04767177160fc56b3a 100644 GIT binary patch delta 838 zcmV-M1G)Uq4$=mY8Gi%-005Bn5%~ZB0~tv~K~z}7?bu6bTvZ&$@z0FGCTUabLZvRm zDrl)TBN~g{#iBKdDJnP#7^$MvQi$TBKFLOkuYyWx(biQVP;I8>QGy$59@bz%ZQ5#a zDTRjEG*zo2I5mk2W5{c6&RpWu#r$V;&$&O&_x^u#&;QRoiGK-~Cz6+mTLc%uMeyQ9 z$?S=3{|V;(Ma+1!lkSQCC~?6{>{997!h>sErAx}1LW9#rH5=1VSa7LLI-T{obYa0Y zmOF@yHEt^;IBirP+Kt7{IS#ngChh*hIsI|}2ylZDebdG<%}&lc*DY%z$FFgk(Qsa`mYnK8?4BQ7 zGSA!!_eb=hY?rBCw#^S$+U+G5aMF|c(`+2}bnhJSNOa=+DCFWR8gfLC0R2eix{ z-9}W|CE~*@dOP(?$#_kl8v?O+_}Vt_Sm$)KaG`ztizZFhI_a?mp-C_J(sCPZ_vgam zh2wyfL9ITrB0_b&Bi_;_<+BiL!YbDp8@#GfON3^RYENkJQ_zaRC3DFL^mt_P!4D{((F`FmYux50Rf`R7FzkyN(5-&( z&!$8x z+!$(h7&vXn04VpKZo{hVmi4k~OAKh4tmd7vp?^7tfGgDc*tmZx@m6oUd#Vy2mC|O1 zeyj2`I|N*>Oq-;a9J9=Qo}W>PFKY6rTb=MYGFF8((hzXkkRd(Z&>^K~9>s@J2JLrH zf2i4s*)4O4A~wh7P9R{&5)GFa5KyoXk|kLo*|=Fq@Is>uQ0r~E zuMun&kWm>0l&YDEf=95P2q-8jwq8^^RK$+mD5!rp&U9yYzxUpJzu$My%Z&(MY(II{ zWGgExd&v?=N=QG;H_3+h^WWaV2;qtc#p01@GOm|lu$54OCc%J2EmOi$Sfu4k@7LN@J<;zhuMP|{V7}QznVB$1;vz9kjLX$IOudTp+VMVXmFW>L=h>Y8f023NTE^HYD--2wRN}@{^Z6NwRKS$T9_(@ zb!ZwUC+d+rZwyT2?(2puii9`(r5HjKMV1Po@-#K9!6lG@1d4eOn<-?`KoLhIf;e;$ zk0BOuKw1!sOJlKwW7y9z1RF(xDEM4RNar$m5S_;2fM5_yNMqA@LCio#5QhuVn1N$h ziAIOZG;-Kt&w@ohVMSlX@MN`KrAE82VRHs699hKp=#iLUiruu>~q8rTg+h4SsXeMDhLW8Iu~Lyf`m*KJrLrGNuyZB|H&1V zaDr-ShR>Q~?1<<%%kpEZ6Pu620&9o~!H7|?YkTsJn6RA^NEl`4d{(p~HFTNVd8N3L z?BfUcC2m}GWNx$VQxoc_ zt?zX^;&@|AOhqo|>~Uj@Ss=8Zd;8k8%5I;IBZF!F{vmNAcfC7~)aSfy>A$y0e5(KG zDr5gMR|f9P=WJ6_m%hT|K}MHao!uKBp_-Dt zto-TliJ|!er?*wi+3Hl)Xze>2zWjVwR!XMrqu_?@+Ixu(S>=f#lB(*y=F_&_Ap=Ds z)3ke6?W-qdTGgBdX>)7G&2Z))_P99Nz2+8uXUMJvlACUIrGzCgKXbuWJP1JX{uPf3jGu+?8~+&$J4#O|dm82L8?*y5Anp3@*riRJ*!xe|nQk z_k%oXYP0KGZScUs$EpVH8sC=auT=z( zJb9=ZzQDXtJA}9{ry5EqD^`jhu~a8sXYdB!6jsmKx7u{~4)rOwGdfs$mld(k!8n7q z;pX{_a*p}wFDA#K_{CEkX#aNSc;Isk4%06*nt7ckTicB5wDk#Hn@dM9kD7;@H|6ln zh~tX#j-t2W)8m);-fn3%F-+pCbDvq)m^OGFRDJ8QWqH@i1BtHNqmxrAAKJLV4w}Av zs?xp3ys`L7`&QB`gP^BhzrWY7bNI(Lv)Cbzx6Udwch8pM!Yak?&X)CM<-u_y&Yisc zg!sB9`|iihWfM=FYc(YlwB#Fi_l}E|9ZNfXk$iCJ(bBj(qJOYuKD~YB8(Z2Ky(nh6vEDhpZ+1-A#$M^P-SlHstF}+v_QdVNq`Z@R_xF_!g`c~z^-P}A@8_V5%ujkEDo&ez^Azzc8`Hexo;Y;@pu{D|A} zFFG0-cq*<$H@?A^>;^O}@B$o(SF_`i2N?qQt=@HDgyf*Y*w#WS5-SmyyeQaD#s z!s(*=Y6##C1D+gCxrTL1HQThUoqdzggZVhLj_a(#ZKI5D#=JW0{)rdM#ljuco=|PK zbTlp%5wTjNlv=cQALEbWqZ)0VhHJ49RRdS$VQB5_yMGbSVHcK^i-n%-`x@t&M7Lsv z@bIE?v9LKga0YhHzWX^g!}NmXesC89{iQU za0;yz-rkNictxbLdUPV*M5lqRptlmuGijyum3Xcn61j1Copx5@A}khF+Rq8+n7p*y zW8fLb;8^A=qJ35>kbCsD=^*2 ztzbnh`xx)SsUqhd(7+v{`gwO0(53hi*NkFkg9z*7UQP*oglP6lh7ads#X`19YzS=3neMbq)D zsDFcZW|MygyYYa?w^OonmivD_-ktp}sh3j$&k*7Knt^bx)WJ*fBrddf9lTXkQeAjh z>{Fkdjg3oKrvh#hT}@YJ^L~6Fp6g3+uaWEE-$X6G2xsAA+?D&R5y#{<8M)%G~NuKtp8sJ7u8TrDCeiE7%! zYXnWWzb!R^8(mG{MpqNK(bWWQbTxq+T@w!YKS)d5*=EdK761SM07*qoM6N<$f-dR@ ABLDyZ literal 1893 zcmb7Fc~BEq7>^=|0-{wIui_e*G1t|6fH2vrmn zm5$&=RlF5wtTe@1&oeYH!A8Mjx*ia-S53O-|zR`^OnY{#{2ag z*ptO#`6(x$YDPx7KW{JQkGyI$F=7BM*U<4~DxIx0VJwNBOu+!9L7RrDF|9r)>m}dlLJ%Mjgh8YE0s#~Xz+4Chxy&ozK%)`90D;4S4-cEMX40o3YE<#T z7PAwx(`nj>fM9lZc33tqj5MWzkVqtQbHFf%(cn-y1g*7j2r9Uf0mUet2{+O>NdRs} zZ3;P?7PA>o--lo@#>9LiCa4dIVp0ZLv_=pL+0uADFA^7)cZ?B^JUEliK=5x$hi;|XL^n9El{ken~!hjSIEg4w|mg-DKeVwD6% zYY83Zw&%v;pRkgzViB1M)6%3Vfh03KD<7Lq(j=8m8Ub0n02q;k6M8b63UQa^eUvC> z!p)doVImE{ySyU!7wijps6fHv!TfNT2^E4QC@e$;Jh@~vAC{s*1^WY5|9^4?GERW* zX85c*I**u+b1y%(I016akDClnF-sjL?sE9ru*xsPUsic|9G|`x?*|m zu3h;jtd+$90qu$B#Wf3StkZ{%wEEsjT?F=--fv`?_cE))HgVL{vi$PXp?9~;QLKy` z)_j!cFE{UdoBwu&q~UU@IHIui#f{^_O3M6(dgGdVU9`1k%NFP5)$IDqPN`3W^|xe> z#w~8xeI`};O+2%=u&wA;a^DkP0q5tC`ocI80#5w~-Ca7u3`I3*F+|9Ror)N~JJmdj3De|0q? z7H=2YqaF`lg$^1dtIuB;r|KJOf8D$6oUNrH(OcCG_sTkEISW0Yif-J#pIOx&n>e$u z_kCWQewXc1!^4Kmizy2M|6~5C*81-b?_`zxJj)TSCCaW2xiKuT_vAfE(T5zN$jyH7 zQN!Xc9dXTZ+LO1o6lgqp+46Z=;H^`h@h!%| zs=TazwSDIP&UBiwYbYzp8MVak&&&(bR?xWC_v!W$XE4{v-bXp(>w_E1&v>jBeDfsK z?|eJZeXL4%($f7tt2AZp@s$heHa<8`^>to~hA!eg%0?YnQWE*c20U$Z%08HWNG&db zBKky<`y+kN&opYJ+k)nGEgreY-)^m$rY=|!p0~*y5?OGi8Q$UJoV)|(L9A&WIg2Yc z-!qq2&B&VeNKc&RHx@4cD+Kn~AN5l2y72TD?eZ5f_MwOFdYx^G=5P)@4NO>fa7M?$ zc}Hh?Zl7Wdzg?&9u&;aWO)O~Z04zcO4onSsUV9|t?`Kppm#VDre5rZe(kqzeSb795 z!d+}bDUs&9df*C(AFKaCxH`Zn8;5@D;-(MWv~K-DbKpirM9JdadDxknE^Qt!9U~vF z3P{*hx=OOgP@%T9Df}|-C7q>&HPPpUN6nSmURUdsA!}R}OL>cPr`cB*G`2<=Dx|jjWlxZfdQDR6)Hl9OaFOLq zZe%_leU002L1OQ-(Q&l;AiO&j3{Xs7>7vr)K`Hak$=4*Wvwf|+?i2t3 diff --git a/res/edc/images/btn_music_contr_one_mode_nor.png b/res/edc/images/btn_music_contr_one_mode_nor.png index 9b409ac8ed2f82dff28680a2267bd56a34af4b1d..4bb29a1ff3bac6f1aeae7cefa6e90642a73934ca 100644 GIT binary patch literal 1162 zcmeAS@N?(olHy`uVBq!ia0vp^OMtkKg9S*6c4yCGU|=ZUNttffWD$+e6uP0H#hy5-`oJFh88tv!Kl@s+^ z&Ma9eE;;*=$)1z#8$3?VTy$}A-g54_xBK4i|DP!TW8T*D+2POU-2eIU_uijxZThA@ zF=!3E$o*q~frntbNZ~*dn!Rxj>$^;v%QnxF-Yb54vH0Hu1=bU_Uo5by68yhZ<=y{( zORO4y7CD&DjyxX!K-lt%>H3Aekrz*&h!6RAV#AEHa~_26I>Gzl^5e*TkN3V{{T{00 zZ?<%gv+ZQA9q#IH`R#3v{9Pq}ymQXE%xwmppKBaUAD;{`I^f^0KjUcNgTQUZW>r4} zWYmi^cb_bpSH(Bs+0OU**ET)vVmi>dh^jWG?jEYSWb9DW4@z2hTm) zm|}4vsc*xCJ07*0RxX}%dX1DxvTP~m_OgwW{NkQmJ+aoMO~%#s!U6ft#c_+~zTGp; z;+fRz#;uLjoV<}oL-aNnC%Qe$n_idvhFz-^FTbyQfhDOkK-r)W!*fM z%<5A(du`5>u=k>c{SzD2jp{FpUYPpBFn@jYA0O-XjECQMeElw7q4YVF!6!{z|I3=S zA1vM8Z7$n)I^^PkyDw5j*4^-XVq2WKOy_Lpm;3H&zo*?aao1mD;98>8zWtHS#KRMu hyDXM;3=nZ*f7APIZ|h!hB>~GA22WQ%mvv4FO#sC>6(axu literal 2113 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 WYj?>mcy8E}vT4j~O8F z8bW45;2Wn>B+CI2hNA$79u_KRvRD9@OJ^Ro?U~@4y6#GM7Elg=|a^+phE#h z2|2FNkP1u<*cD~zSQZI^l&5d5pwhgRRTHCOq5{Uy$utZWooT<411ORFJ5;55izdiK z^qs%|C`?GRH7FwyC9o`9P9<(_pxu;)FTzn7iQ!TVQ#zu!d>uwzm^h?2O#{A7h1 z!L&rkYrI6lk5dz*Of5&_UZt9UjhP zJGd|=&r+dk(!oXEaoJ;X?WLg7P?lj7S8PO)XdF`kudmEkjOmLYdQ81hE;6<+%rUtP z${B_|v42aniWgUsg4iv^cF>#g|3cHK!WC!D^NX#7;OLQf7{x3I(k+}HEt!Z+ku$(J=<>MmmD7;mw7L9mST4YL6<5RzcARmpmA(+u{2->tTx3=>dGGX?ovh zmc7O+9Qyj3;+b%VcZTz;G$hC-Uwy8ei=Nw85AHs0I0w@!5*jXwj7J-cXZlul8kF^y zErbzL4u7j1mjv?`+u)+~8!g^lQ~QNQ#TDZCvIetPz=@sWko(&#$2qR2=ZDQ`D!Cq9 zJwA$q9|}3YIe&0Z?uEs+O#iHdCGFv8Wp1ATK(0@9r2m?aEE^MMPA39;p7F5-QVvc99IlFrX_SL8ZYJn*v#sB9GqS+1=ihkL4exmtt&!P-!V^H@`;ha{b`rPIUr|l?Q zc~z0tzOfni2xzZwTXdkR5>G4Xnbhj{3Cg?vz4_qYuGvEK_7i6>FilDIZ5!1k49Y;R zTlT_a(-%J0a@?!R*Yni^n|na}rNWgZn_4$<4?|r)Ui)U~k0OhIfpS(?)vdED1|y%F zEYmhy2R3xpSiao+ouJ5&yGLl=V=nW$3!QjU3tod~M&}*4_n>*(pU{dyf10%sH4dMA z;)j%)lg$Ipis7C8cyed2WzaZeycOtTcy_j{10RYQ(C;74S2U$?FIKESYbfYV3|h*w zDLQ|(Ooi^28Lx%z?oGY_G_ zxe#kzW(zb&+F1wSxsfC2>IJ9z+}&_+=I=Wyo40h2@bKi8mzvg(Yc{o$1!r0lB`^D) zq&nARbEr1gjKAIUp8W|5KRa$YSi7p8V>FcVrW zG_~r+hOZYiT-z`C#pI6E6#H>MHeNx5|8IC0p`&o%pG5;q}{!8kh{)Lgy^7u4*W0nd7c(X=Ul9 z?RhV=%JSIF@biBrT0Pr5``Zh}N6yza&C_{qIp>2_&3xNCaz9?mRA${cp_g~GPq6mt zyn|7j<~&L`)FXc5r<>c0N9Iu{Ha6-fvv=~&T-tas=268X)--5mow(Sg?aT(AjAutTguhxQ`9rZ_+JyY zNXlwkMy*F}ojf=B58eN}W%X2DqZGy&3emYXA9V6&oS5+4;Rp9=lLf{g_Vxy;n_0z* zpX35kPMkiV z=TPdgiwDFH$1I<>zT&{l6M>8J-^e`@G+m=zx%|vVvyW2V5q=Yw-SFSF*xBx3`MgiO zvuFG|w)kpJa^RxJ#%mIICHp@3zfriT_>gb^hY2=cnXOl)8&B=*JG;4czQ&~^J6{++ zvj5Y>SGH-AJ;RD66C>Z-DjgSD6?sDEfnjy)_X&0pv-V{&c1NDQVKnWb%l#{?v`maB4TR1`fnX|?<^^N@a@gF7jLI1|4aH@AN$A4_~?t= zDf+SLDh?AT$1H9<={axCy!^#W-}d}D?_2hv{EONt;fkyOwk-MFBhx4obVSj0polo8 Y4;SY(7Wh;?1(p>Ip00i_>zopr0Dgn$>;M1& literal 2041 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 literal 1979 zcmbVNYfuwc7>$McLKM&uk&fL29juaU5<-wbz+@AI+8{*aAruJNB}9^J+$a+1e6Fa0dz`*O2g4{DPy`EVr*Fk zDZm&6PvTPEClw(I1|Sqe01uiwRZ3?t05+S(V0p0F3^#yDXD~rJ@v^B57RQ6lVR{1N z4~2+^!3i9(z<)dzG2>Daaa_#-L9JFx)4J18Oa?N%yu2(LOeU2;P&KJ4T%x0@G%gbg z0z@Ol za53^B-+vX>gr=$yP>g8MWK2q2T!M=wl$rx!hy+KmP!v^6oMLbyildrDR1HAu*}(E} zxe7+Lny<$2A`vH0rNJdCDH15)QV0c_Tn=;m8IW+*D*h@a4`MSILJvLz5}a$ebslvxI^uU$ZgdPeZP#WK5W*MUjV>%Y z9>RVSk&+hn#*4Mnwz2PzzKAk#Btmwux#VhRcVv=Z(%sT!C)z4VkYpB_7m!&1EL|O7 z=Kw67Im^x=+j^qqf0k`cp2p8AAdP|ExBnMY=JQ2^Q1 zh-bXsVer=b+1ij@siuP`^x+i0#f$kdbHW7!dn)rQ_g3z%ta#ksEW77qHX7dKloU8p z9z8L<)feSGch9&PiCt6A$H;dDDgLU~s&xY2+wrCdm_7J8D7!w&G^d$DGt!ey`Xdb4 zw^`z|OzU^m$M7iD4e^yaacN^lR4?;wim6%St62+kuyE5=gT4DnC-Z<||HbGp-HeTr z*dp~&a{ii_-6QJK!FydjeKQ;OkZFuXc?{U3fyeqaatR%>(Wm{m$Nzyi9%+2_6m8bEJ z*{#jgYL^Pc4(5$8GJS6*#IBg zhG%63d#l-9CDUH^t83S1D{|XAmN>_CXSAl+62QpX^6B^Mx@#^UDCnmj3Rm_zlU;A= z5*k#Q=~4QAIls2KO_6)yJSMGmo!K$>vDKVj0{)_72^sd@s#kJg7E=m#xUF!k)$~Nj;ADIJjP~ zHJs6xtsOQf$ncgvsu2o5f1x9F+VK8lD7}U9{BffJ`oTLVEdOVZH+{8h7S*3AlVPVS z+qK+c-H6ZN;ntELOC36m_g)nbTs)+FU0+Ijcj3=Go?+j{0H32Z?RVH<*}2_{>wCfr zeX}cP_&l4RTi5gUQK`Z8Ozcel=nb>mikHO$3sM7lb>*y~iwnrTSQAIqxp&BS2p;|H zmkZX}(L1-e7jr_r{Ys+T5O+cZWls4*xX}y)gI%NKd|V$#*#Y8vQUC z%qhAEuX|Aq?(ayQzbk-_EnJmhC$ AVE_OC diff --git a/res/edc/images/btn_music_contr_repeat_foc.png b/res/edc/images/btn_music_contr_repeat_foc.png index 41acbe58d3c5b64928a53fb968d075327216baad..e01d911f54b25e830736a12fe282c79f14e7b754 100644 GIT binary patch literal 1058 zcmeAS@N?(olHy`uVBq!ia0vp^OMtkKg9S*6c4yCGU|@df>EaktaqI0J|BfrAGRHoq z|KIYaEkvnPR9lcWGH@C@_u@0&i3zez3QaA1Nz++6^MpdKsJ@W8qPpei38G>y7=Z9glB~d>`KbF@JBF($c`atHVuVY>(CKEmunS zc~Mv!WqT&Z*J>j3uK4v?G4?O_L_Ema=_;RH{q;aGZy3LU_3<#<#TWVJ6?(O=ZvV$V zt6*&sQ^R7L^R;Uh)E~5t{m4pwBYCzldQ*O72&?RmS&Dy+3d|_x^u1?`O6}oXH3JWA@H) z<||^karapNm)3QR-x%MQ?)36+ui^SJ&3kv;b1y%pew}L*{>m`V+feJxr+aOJbc4SB zht+=S*9FuYua@p!S(Cas@KT;{^tE5X$&<{k<}NdOGIx^QhPB`NmXwyxUddCrcggwO z)v^;yitnar-T(X3`LNVQ$;(;JR;!DpR^9S>+UXKBKX+^9>nz#TJe6LTLbqL=<~eK4 zZJ*Q=oSv(5SKrlmxq8>xkT#j=TkdVU#T@k1ddgJA?;cel%FC|GP1>?P&v>e${bfbn z>td&)q_=q4XVgE;(~6(}N#O(c^^(2k80Isa4|})NY)OT*#esn7tM@R}+#EKw50VYKbL{*93-dFTIkNX1qR+oeXTN;l+N;`-bdg7D zeT=*R{mYv0+=4x~HRiPA1D)BYzhCH>kffQvK}d1k(+6+n$B6Iy&vk7>FF&Kj!M#sE zo2#X~uIh<@c_cIL$)-;$TQkn6>!!`g|D1d8@~^n|t?|`gqraZe_5Cey)$8r0yK8T* zYJcf6+0I4P^M2;uvW!(#J?Bi{x}4kLZCx7cm-5~2(%V~+wl3+jDwV1OjQvyiy*wtj fn0O8l@soS1Oz5wM=Lh})^FD*8tDnm{r-UW|#;oMV literal 3866 zcmZvecQD*t+sA*4=rz$}1SZ!CY(PEJ(QC1>aNOX3I?$-Neh3Gv%(B&K2N>f9zAgd zfWUc-1;Wx|lUem-=?H2Vhs-qeHfJK|Hisr68Pfzrcqr%%;&_VYn9RBuw6#e%1`Fee zlarB2OlD%#36!&BYdo)$ql)7ahR#+(ian;=Pri*@zME0os5!(mjgjHVsk8ND&E%2P zl~67QLexNS|H_(#28xo;2cRc!a^dm2-~|Dv;Sh-EZ5-JL02DY$MGoMM(Ksp2*ekj% zXx@Dg@&yRzpLWNP9LWf11Sdnw01X`w5|b-n0Thw|j>FCmSAo0YfTLiX2Vq=ipO8)Zi>?n`EEEx{!;s?Q?I zsNh88l&>Mt9hAo=gOZ~o9DV|T!ZfDqZVxX4M``OuM-`H>v<~81oupT{A3j{YTpz3U z(ExxI|M2lkG07%&qzWn0^YS(SE{VH6RpGOfM7Ksdjdwud=DhWx&%b7)U6k4~H@CjF zHfzuewR0M>4!cBjJK(G@p8O7noSz&MK78dv$vi;mlAIE{KOGsBa*m}_ym+|qEk*ad znd<5sJbAlU|6vPUgmKmErf;%Ve$t^#>Fs!Ex^N%=#Ffj}WwA42wPktW&0{rCNSb)X z183r2hJy5Pf85s-061v#?)oA`PKrUu0-QIQoFy;%l&4FNUXe~3Ptu8 zIGIYNz#YJ!Fm<>ZpOo81Y1&x^czYnCvHyYOn8~| zZi-c+<@DHjGd|9{cr=nJWr}f&4o0tG)_T@t*ErUA4(uo~4>f#CPA$F)nGZcSU|XkO zms=-w&6Ux#D$X}wtSGW%kWaCN))ryS>&;>-Zpl5%R~m_8);BDzeVsMQ?#|+V@~Hm1 ze=Eac7MDrRXX}aKP2KM~--(X`sA*!Dq6Xp+LTqSOGFAjz0Be1&Q5oB0BHMtal%n)@ z?nWM6p0^cT1S=BClr}_}WsoJ1#UUbTSy@$9wNyoAb!atgnNn$Q5mu*TC2O%-N%1AS z+Nuh3ciV!)0#T__5nF|*@U~Ph3Aee3C$;G@>M@0tm=!iSthV=aQ#rFW1&Z-_&{W4f zL&^6FG>puJJ{M`ry#Ti*s#aANDZyk7WUZUb4>R4=$yRfHPha|*P;3a5=NyJ7EHUm0 ze--8^lQU|OcD?UWm7S9fuhy$JtJdA_P^jA}$CPzwx7nPbXf+261n&##B2q?gU^Xn~ zEEdZt%bAT;m5=Krsys?LirTaSI=#wwa|=G$BMXeY%a?*WHvVviNnTi9c>XCr)}@A% zHc|7D;;BbjA${_`-Vm_l0RE>L>_LwPtkfyXDQD$HTFW@3cuMDQ9lE4P{r6Y-Rz3SY z`-=rg1$YDujkk<<^UaN0%7n{Qj8u#UMm~+a9+}RQN2^ND$ZViD&@<@eW=GpVTQO_} z_PwiqUwrFIx@mq!~VWdC8LR*qpb$pg2VmZK4nzCr@WLu`f^u2 ztnVm$QxX9mqaT}UiSdS!!xA}a5@?S8#lem>1OH>+ z2P?r7#~5@Ix_hSrU%#uc`)D_I;ngR(SHcB0vVNa?24MuV^>KBoS6NaX%QfMqFjExb z-3G6uvt*ie?aZ6z(txTHr#%+6UusWZt*Wg;6qjU{Y#cr*;+hAWhfRCD3ml@CVG+Dn zE?2=<<3Kr*AA}%|M`@z$h|W%fLwP!r)s^wCzZ&OuG?NNjG?_G0B5NbpyJ~sd2Y;m2 z@|A{(bs0nbS9?#GY_!!RXj%>lpQ9pEx-CxO9$u!1w~pZ&~Y)R<_m> z8X;|}R4;BIFQQf@@fb3%*echm-Y?;1^Jxl>f$Kjppw<}1}| z2urTy-~*qaqS5Z7=yK*tiJM}|*&0T1CU-LTHR(kvn3MPqZUyisQwDW|yAih~#}&ro zW?}b5xJ(Z8M2v&ef26g`2l4gEmWr*nyb!ERZ8xGZT0|=sFy}w#_LNao?vRd3PfPWM zR`D2TU=dr0Z*I?rYh0rnFZ;X_nXe|zgf9t4utkekc4Z>5dGTji3xkp+9 zd7pq4@tiWP-m%W93-1sJHugZ-cMU~$y#sk{Q&~~2M~7`M%+$dJlExEo8o}tnO`b8FQO(+x)g9USLO?U6u1Kht`W`ZvHLJ z^1Zh^$G^1kk~t$n__io4tfjaU^1j`*{Nw0|in?Wq<&otdONHHu#dl6Kr(WZ`93kz$ zMr`)Do&-BllPSoq-t2R%w&paR0nt1x|3=mHcUy$+AVrN>u zOo1m`uk=7S6&~jpta2tisch78s+)tNg*{WWRrhA z2P43ekD>Vo`8sHe{4=|UcCDtL)W)Z`mV(c9@qf|1l!Mp=85~-Ed^EoqIhlbt7)!!r zVZy>CelIxUUt>cyoJW@*(|PZ;()+JWXkR66sI;q$-amNnf6$0uzh(X2I=^1o!E?)h z3v!t;X*$sMvMs-^<-SMDZg9uD5Vw;}jsnHe#iNd(pUhX&Qw2(@iyeo--Y0!0$IHx% z;ZFrGMu*$x0t9z!+fCaYjx=^O=U|JmQ|fk?3$uF*5sz^Jg@@w{x+kR3QDc{B$0>BM z8!34y!!a~5+XZ*jl$5@zKfTyIFNck}j0qI5T)w^>u47@A3_qRPo*5m_9WTl`$jRvR z3@yFb!fmtF)Zr@XHo#L6$~_{85?I=A^=GCI5{KNQM6iUGLZY z2lVfw{y*B;SCHy@bSI=XGrj4v8pSCCoFsI`|2;IDU_g*1XcKOi_b@e1imrWp4$y({ z7tAbTPO;!c2=Vb)zOrj22iNX$1uSD|0{j;mS$Np^oF7EDWYVe(FNtuv4E z39)@VYbV(~U=ddWm$xfEXWiu`FcXGP5BqT2xOI~&LgLHJbG=7i2Ag+>o|k2QE6=p0 zf$S9)3zzosLN|AoDquB{+gbp}pnWTU;S>b)<9K{h}XWB&UK=TPiJFq=1 zzT3F{%C56n?DINxwUvIB>OONle{&0T+Q}=)gDQc6;7!0}JijVv6qV-fr@6s}FP9!w7z{Q_ z{@F&9vV&$V|IOaW6_M_JgG1Mkr3)Pj{>|be#?=PB=eQr?RE=|1G23rob3t<^`I@5! z6r}rMq&6vF=_Ol2gK@lXj^?zpUy>gs1RLV~Lvb*;{jb%?+1bpsOIG#kJ3^^KjXy~L z`WcyAjSel|AHxZf+T?s-4MB-g-YJkELr(mi^gkfOYeh>$T__aNA~G8LD}ACfMgQ&AKUne~!u_Wu|K;NUqJPlzU+Did d{S$GD02+aM>a2_2)a%Cw(APH6s)IU4{tw@mB+vi= diff --git a/res/edc/images/btn_music_contr_repeat_nor.png b/res/edc/images/btn_music_contr_repeat_nor.png index 00092ce3991cdef990cead22529dabde8b9b4840..d638a751e8ba02950822ce3794375d4371e37451 100644 GIT binary patch literal 1110 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 QttP-o&s?`c$K~OF0LO$YDF6Tf diff --git a/res/edc/images/btn_music_contr_shuffle_dis.png b/res/edc/images/btn_music_contr_shuffle_dis.png index 145d4b96a23a5ab1bbd208e50fb4a11fe8f2611f..633184f3555910724ef78759e5cf08b40526c485 100644 GIT binary patch literal 991 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 literal 3657 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 diff --git a/res/edc/images/btn_music_contr_shuffle_nor.png b/res/edc/images/btn_music_contr_shuffle_nor.png index 19d2544ec6682d65f08af5292b9eab4482c9f2c9..0d32fd799f72f4bcb5b02cf0271dae845c3fb9c2 100644 GIT binary patch literal 989 zcmeAS@N?(olHy`uVBq!ia0vp^OMtkKg9S*6c4yCGU|?S2>EaktaqI0Je~-z9GRHrD zzoeqGs$0Y<@WI&yi-M!3mA%lH;}X22q}0)+Cn&r5&3VNo-YzVHg321!p7k1+3@+&j zvX*jpEn>0ta1=6%Y>&!)WOkDOPu;2KdoRy>d-46}M}^7f^JjQG7CFmhd%)-9ghf1> zrv{u@W%7j~c%|ednP=6{{=IG3?DO4tQ|t9BEpki>g754DO||Phq&y0z6)&lA^V=Ha zck%S54bCksKF{yW3pQN2SL?;uTiU_A`8Q-gL?~G)XIENro?^9GqIWEr^XF;d$nCCs z7VpwXwfr7=xLWJ~yXh=_n`XVIF4omkMX=-nGdsuQ2?VnSSfE z=mPEftb^u4Q2T#o%bSXp!`GjfK744z~Vkm8lvDg-&J{JSAnfFsE(_ zcK3fX#n5Tp((WR?Vy1?`vQK@Y8-tIr@0`_s<|&)||F~_ki|p!7-B4Ivd4%a*LBpG) zOa4speAX`av%JtT?BfiscN^O`7WO|`+><71sCGiNB-qp3x5w{8hTW;BUoMILYj(An z(ETz|v)1I3@p3c@XtXt&(j4cibH#Yur?n@F+g6;fcC~r2v85*0 z^Uw7-=QXEyO}AA4oyoiVkElS=t9XN-pO;P-d2T6O^;7%D?z>Zddt~#RjyK%v_Rs&~ v8YQ+rX1C5{?V3OFVv0v#n@H+F5?{G*)o-iR;c__!%(e`ku6{1-oD!M<{Ku>U literal 3737 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 Nprc`+j)vGr{|6oP?l=Gd diff --git a/res/edc/images/btn_music_contr_shuffle_nor_foc.png b/res/edc/images/btn_music_contr_shuffle_nor_foc.png index ff4046184b4f33b6fcf7cff6bdd7005769c8debd..c7207b6738e62f10569c131b533ac6a00bda10d8 100644 GIT binary patch literal 894 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 F;$Lth-uD0i diff --git a/res/edc/images/ic_mini_player_play_foc.png b/res/edc/images/ic_mini_player_play_foc.png index bf5d08e85a183c82036a7bf94babf7c3bd25337e..f686228252c83f7364f96d304df76b79cd2cd142 100644 GIT binary patch delta 735 zcmV<50wDdF9P9;<8Gi%-001UTqE-L^0<%d(K~z}7?U>I?R8bVizoU)6bL9-K40U6R zL?JXtXrZF@A57b(@ee3eTDOaqEktyg^#@14NHTJKSOYTvWQoz@ zn$bd(EC4e!90wL+705G5UD-+Mm?RIZ5~>syA_ZjWv)Ye7vOual&J<{31z4xuZtD^4 ztOF}F`G?H{X@A1jC}%Cwz^q@`2#}}W7s^@8JeW_W+h7eFz_f3a5Ys@?^xe4)Mt}^# zieN!9K*Syv2X4BI-(!AF3AS~Y!M+)2G&fD0$pyg(yBkMfEKlD zydgUDP%qSPEVjE^R6t`gPH@yNOIq@%-dD7yIkg+2OMi#6SXBMjz@X~_728*CxfZfZ zz$?2w`wX;M!2r@+E6HmEzSzO`!BBWjHdd5Z2khG&5WjYypSG!`u$-h;Yt*L3^}J}T zRnm7m*au17R-kXXtqXcqGTtp|+YYuNsn-)!(7bwdUq4)8y^`M9!QzsJJy0)oQ8)C- z5FM73aDR=IoS7~P>>R6H?U>4ypF;eAkK8o~pFbY;Q;1Lbim4?DOjQJ%@_TtYvS80r zR~_{}_JC1S-1OKykoMAnMeYcmIdg_7;7GZ*zNFlnN~N5Ck(#MoqzVyc4ahU?DZi)4 z18ZJ7v;6xu{%$OyuAjMRB1+~Y8VkoqNgcLK3s}S$AViQLAqI%CaM&`X%qP$v%xMOf z4b31dbKSNX3|RlW>eN*YsYe}Zm9(R6r4-i_KW(l(>;&xJ{WVdARbhV*>=(5yuN&g$ RbT$A0002ovPDHLkV1gA?RfPZm literal 3609 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 diff --git a/res/edc/images/ic_mini_player_play_nor.png b/res/edc/images/ic_mini_player_play_nor.png index c06083062e45879abe96ca10e814fa13e03f7aca..e3eae8ba34bf52b560de1202a1a85b44ab350f1c 100644 GIT binary patch delta 1136 zcmV-$1dsdE4}=MjBYy--Nkl6MKbX$Q<2LeYw2P4N%u3$48gogvj+FP`VJ zpF`NW_nuqZ_&qSr&fPiB_k4ElJ?A;kX&4$BVj|k4|9b#+uzxyO9c+AB9c;YWgax~+ ztb^40k&haIHNbMmum0^i@GI~Oa1!WtCb?JzSVP&!L%}8k>wz|4DbNtueF*3Q z_5z*GB!jWQV!Vp00S_DmmH{__PGAf01TYJjsz0;z*%siiwq2%ueQN#cSYU-`EVX_r z@IJ6vA6)>f4u5hW(9I0sMc{Q{u0Gobyy{GHvkX|F8B49737k-48Q@80lKvuobIn+4{dC}{ zLV2L24AdPUd)22`jiahrEg14mEdkB}tDH%$#)7JWyMGF-RE;I7Ssj?JSeuaVV7)WR z@3En3;QE2*Rclj`)iMYywSE%tfmU}pll)K>R1I7&uuH3ZQtKy22LoO}R<83vN7Ya@ z)}fm7kpLh%*j6pAGs)ip?RNubfj59@MX6Nl9j&%S1xu}OM52QMWb+NNZNS68TRZ_f!}iW&9uLX3D%8dlUh^j?+NsKtLFDhz(!ffcb0s@39LhsnG2D9 zr8y#0GqP_kQjK-0SuL2t^#dz_?~#mc53+KFo~`Z#G$pm(sIMmVy`pFq7|LBrOatEI z_DhMkkv%Ikg)kl28+R}q4@S9^h;cvmG_VIrNrUWLpCdVrUf?1U^nx5P86T1XfLu*R0RgZ7k}-@{a2ohRCe)qIOfG)>8o0`LF5%Ygv`h@$W`rpBukZ@r>-Hf zV;{0ed@*LPYR9ULh15VDtPWNO8;4d08*esY!Ttpyut0V1l_RzQ0000l@|( literal 2003 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 literal 1818 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 diff --git a/res/images/ic_thumbnail_song_player.png b/res/images/ic_thumbnail_song_player.png index cee21818bc46322a7ae93a3c30d9d6bc0e215a40..070da0dd837d4b7e87eafe033826e3d76d55f059 100644 GIT binary patch literal 1727 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 Date: Tue, 25 Aug 2015 14:23:05 +0900 Subject: [PATCH 05/16] add id on view_update_data Change-Id: Iae22b23ec3b539d8e5d4836b5423becc6c186b21 Signed-off-by: Minkyu Kang --- include/view.h | 1 + src/view/mplayer.c | 12 +++++++++++- src/view/viewer.c | 10 ++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/include/view.h b/include/view.h index 3e9b2ad..01e6765 100644 --- a/include/view.h +++ b/include/view.h @@ -33,6 +33,7 @@ view_class *view_action_menu_get_vclass(void); struct view_update_data { Eina_List *list; int index; + const char *id; }; /* view update type */ diff --git a/src/view/mplayer.c b/src/view/mplayer.c index e573f74..97e4e33 100644 --- a/src/view/mplayer.c +++ b/src/view/mplayer.c @@ -180,6 +180,15 @@ static app_media_info *_playlist_get_current_media_info(struct _priv *priv) return mi; } +static const char *_playlist_get_current_media_id(struct _priv *priv) +{ + app_media_info *mi; + + mi = _playlist_get_current_media_info(priv); + + return mi->media_id; +} + static int _playlist_get_index(Eina_List *dest, Eina_List *src, int index) { app_media *am; @@ -249,6 +258,7 @@ static void _update_info(struct _priv *priv, app_media_info *mi) /* update play info */ vdata.index = _playlist_get_index(priv->playlist.list_org, priv->playlist.list, priv->playlist.cur); + vdata.id = _playlist_get_current_media_id(priv); viewmgr_update_view(VIEW_BASE, UPDATE_PLAY_INFO, &vdata); /* update history */ @@ -558,7 +568,7 @@ static void _pop_view(struct _priv *priv) if (viewmgr_active_view_count() > 1) { vdata.index = _playlist_get_index(priv->playlist.list_org, priv->playlist.list, priv->playlist.cur); - + vdata.id = _playlist_get_current_media_id(priv); viewmgr_update_view(VIEW_BASE, UPDATE_FOCUS, &vdata); } diff --git a/src/view/viewer.c b/src/view/viewer.c index d800737..6fce492 100644 --- a/src/view/viewer.c +++ b/src/view/viewer.c @@ -382,6 +382,15 @@ static app_media_info *_get_current_media_info(struct _priv *priv) return mi; } +static const char *_get_current_media_id(struct _priv *priv) +{ + app_media_info *mi; + + mi = _get_current_media_info(priv); + + return mi->media_id; +} + static void _set_played_position(struct _priv *priv, int position) { video_meta_h video; @@ -619,6 +628,7 @@ static void _pop_view(struct _priv *priv) if (viewmgr_active_view_count() > 1) { vdata.index = priv->playlist.cur; + vdata.id = _get_current_media_id(priv); viewmgr_update_view(VIEW_BASE, UPDATE_FOCUS, &vdata); } -- 2.7.4 From 4a53a110b8174823d27a18109e53a949567a0068 Mon Sep 17 00:00:00 2001 From: Jehun Lim Date: Tue, 25 Aug 2015 11:04:19 +0900 Subject: [PATCH 06/16] action_menu: add clicked callback for livetv button Change-Id: I02808e20cad363a9ad1d829e2881ee5e756baac7 Signed-off-by: Jehun Lim --- res/edc/widgets/button.edc | 15 +++++++++++++++ src/view/action_menu.c | 46 +++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/res/edc/widgets/button.edc b/res/edc/widgets/button.edc index a854c6b..116dbfd 100644 --- a/res/edc/widgets/button.edc +++ b/res/edc/widgets/button.edc @@ -3368,9 +3368,24 @@ group { align: 0.5 1.0; } } + part { + name: "event"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + color: 0 0 0 0; + } + } } programs { program { + name: "button_clicked"; + signal: "mouse,clicked,1"; + source: "event"; + action: SIGNAL_EMIT "elm,action,click" ""; + } + program { name: "focused"; signal: "elm,action,focus"; source: "elm"; diff --git a/src/view/action_menu.c b/src/view/action_menu.c index 1560753..1946ed3 100644 --- a/src/view/action_menu.c +++ b/src/view/action_menu.c @@ -15,8 +15,10 @@ */ #include +#include #include #include +#include #include #include @@ -136,6 +138,45 @@ struct _content_info content_info[] = { } }; +static bool _livetv_clicked(struct _priv *priv) +{ + app_control_h app_ctrl; + int r; + + r = app_control_create(&app_ctrl); + if (r != APP_CONTROL_ERROR_NONE) { + _ERR("failed to create app control handle"); + return false; + } + + r = app_control_set_operation(app_ctrl, APP_CONTROL_OPERATION_DEFAULT); + if (r != APP_CONTROL_ERROR_NONE) { + _ERR("failed to set app control operation"); + app_control_destroy(app_ctrl); + return false; + } + + r = app_control_set_app_id(app_ctrl, APP_ID_LIVETV); + if (r != APP_CONTROL_ERROR_NONE) { + _ERR("failed to set app control app id"); + app_control_destroy(app_ctrl); + return false; + } + + r = app_control_send_launch_request(app_ctrl, NULL, NULL); + if (r != APP_CONTROL_ERROR_NONE) { + _ERR("failed to send app control launch request"); + app_control_destroy(app_ctrl); + return false; + } + + app_control_destroy(app_ctrl); + + viewmgr_hide_view(VIEW_ACTION_MENU); + + return true; +} + static bool _favorite_clicked(struct _priv *priv, Evas_Object *obj) { app_media_info *mi; @@ -233,12 +274,15 @@ static void _clicked_cb(int id, void *data, Evas_Object *obj) { struct _priv *priv; - if (!obj || !data) + if (!data || !obj) return; priv = data; switch (id) { + case ACTION_LIVETV_BTN: + _livetv_clicked(priv); + break; case ACTION_FAVORITE_BTN: _favorite_clicked(priv, obj); break; -- 2.7.4 From 5bcf466d5614f6c87f8caaf0faf2013407bedb6b Mon Sep 17 00:00:00 2001 From: Jehun Lim Date: Tue, 25 Aug 2015 16:04:27 +0900 Subject: [PATCH 07/16] add visible value to the object for visual effect Change-Id: Ifc68bdad3d9c6b43d52d0a671a19719f40fb0f1d Signed-off-by: Jehun Lim --- res/edc/view/base.edc | 1 + res/edc/view/mplayer.edc | 1 + res/edc/view/viewer.edc | 1 + 3 files changed, 3 insertions(+) diff --git a/res/edc/view/base.edc b/res/edc/view/base.edc index 08dd30c..b95e599 100644 --- a/res/edc/view/base.edc +++ b/res/edc/view/base.edc @@ -160,6 +160,7 @@ group { description { state: "show" 0.0; color: 255 255 255 0; + visible: 0; } } } diff --git a/res/edc/view/mplayer.edc b/res/edc/view/mplayer.edc index 13e8b80..36d82b9 100644 --- a/res/edc/view/mplayer.edc +++ b/res/edc/view/mplayer.edc @@ -467,6 +467,7 @@ group { description { state: "show" 0.0; color: 255 255 255 0; + visible: 0; } } } diff --git a/res/edc/view/viewer.edc b/res/edc/view/viewer.edc index 7412824..2c8b446 100644 --- a/res/edc/view/viewer.edc +++ b/res/edc/view/viewer.edc @@ -498,6 +498,7 @@ group { description { state: "show" 0.0; color: 255 255 255 0; + visible: 0; } } } -- 2.7.4 From 9b868fbc021126fb22001f1fe3ac98c7b02d103b Mon Sep 17 00:00:00 2001 From: Jehun Lim Date: Tue, 25 Aug 2015 15:30:22 +0900 Subject: [PATCH 08/16] base: find the item to be focused using media id Change-Id: I849d019370453f9b64b5233d243eeaa69fd31abd Signed-off-by: Jehun Lim --- include/util/listmgr.h | 2 +- src/layout/gallery.c | 12 +---------- src/layout/movie.c | 15 ++++++-------- src/layout/music.c | 15 ++++++-------- src/util/listmgr.c | 54 ++++++++++++++++++++++++++++++++------------------ 5 files changed, 49 insertions(+), 49 deletions(-) diff --git a/include/util/listmgr.h b/include/util/listmgr.h index 1820593..1999de3 100644 --- a/include/util/listmgr.h +++ b/include/util/listmgr.h @@ -57,7 +57,7 @@ bool listmgr_update_content_item(struct listmgr *lmgr); bool listmgr_update_content_list(struct listmgr *lmgr, Eina_List *list); bool listmgr_update_play_info(struct listmgr *lmgr, app_media_info *info); -bool listmgr_focus_content_list(struct listmgr *lmgr, int index, bool update); +bool listmgr_focus_content_list(struct listmgr *lmgr, const char *id); bool listmgr_focus_play_info(struct listmgr *lmgr); void listmgr_set_focus_state(struct listmgr *lmgr, Eina_Bool state); diff --git a/src/layout/gallery.c b/src/layout/gallery.c index 46fcc00..22e32e2 100644 --- a/src/layout/gallery.c +++ b/src/layout/gallery.c @@ -51,7 +51,6 @@ struct _priv { struct listmgr_data *ldata; struct mediadata *md; - int cur_index; Eina_List *media_list; }; @@ -182,7 +181,6 @@ static void _grid_selected_cb(void *data, Elm_Object_Item *it) vdata.list = mediadata_get_medialist(priv->md); vdata.index = util_get_media_index(vdata.list, am); - priv->cur_index = vdata.index; viewmgr_update_view(VIEW_VIEWER, UPDATE_CONTENT, &vdata); viewmgr_push_view(VIEW_VIEWER); @@ -212,7 +210,6 @@ static void _grid_key_down_cb(void *data, Elm_Object_Item *it, vdata.list = mediadata_get_medialist(priv->md); vdata.index = util_get_media_index(vdata.list, am); - priv->cur_index = vdata.index; viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_CONTENT, &vdata); viewmgr_show_view(VIEW_ACTION_MENU); @@ -442,7 +439,6 @@ static void _update(void *layout_data, int update_type, void *data) { struct view_update_data *vdata; struct _priv *priv; - bool update; if (!layout_data) { _ERR("failed to get layout data"); @@ -466,13 +462,7 @@ static void _update(void *layout_data, int update_type, void *data) vdata = data; - if (priv->cur_index != vdata->index) - update = true; - else - update = false; - - listmgr_focus_content_list(priv->listmgr, vdata->index, update); - + listmgr_focus_content_list(priv->listmgr, vdata->id); break; case UPDATE_RECENT: if (!data) { diff --git a/src/layout/movie.c b/src/layout/movie.c index 9d6561c..4639e8a 100644 --- a/src/layout/movie.c +++ b/src/layout/movie.c @@ -59,7 +59,6 @@ struct _priv { struct progressbar *prog; Eina_List *media_list; - int cur_index; app_media *recent_info; }; @@ -340,7 +339,6 @@ static void _item_selected(struct _priv *priv, app_media *am) vdata.list = mediadata_get_medialist(priv->md); vdata.index = util_get_media_index(vdata.list, am); - priv->cur_index = vdata.index; viewmgr_update_view(VIEW_VIEWER, UPDATE_CONTENT, &vdata); viewmgr_push_view(VIEW_VIEWER); @@ -403,7 +401,6 @@ static void _grid_key_down_cb(void *data, Elm_Object_Item *it, vdata.list = mediadata_get_medialist(priv->md); vdata.index = util_get_media_index(vdata.list, am); - priv->cur_index = vdata.index; viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_CONTENT, &vdata); viewmgr_show_view(VIEW_ACTION_MENU); @@ -523,7 +520,7 @@ static app_media *_get_recent_item(Eina_List *list) return am; } -static void _update_recent_item(struct _priv *priv, int index) +static void _update_recent_item(struct _priv *priv, const char *id) { Eina_List *list; app_media *am; @@ -531,8 +528,8 @@ static void _update_recent_item(struct _priv *priv, int index) list = mediadata_get_medialist(priv->md); - if (index >= 0) - am = eina_list_nth(list, index); + if (id) + am = util_find_media_info(list, id); else am = _get_recent_item(list); @@ -714,11 +711,11 @@ static void _update(void *layout_data, int update_type, void *data) switch (update_type) { case UPDATE_CONTENT: _update_content_list(priv); - _update_recent_item(priv, -1); + _update_recent_item(priv, NULL); break; case UPDATE_CONTENT_ITEM: listmgr_update_content_item(priv->listmgr); - _update_recent_item(priv, -1); + _update_recent_item(priv, NULL); break; case UPDATE_FOCUS: if (!data) { @@ -729,7 +726,7 @@ static void _update(void *layout_data, int update_type, void *data) vdata = data; listmgr_focus_play_info(priv->listmgr); - _update_recent_item(priv, vdata->index); + _update_recent_item(priv, vdata->id); break; case UPDATE_RECENT: if (!data) { diff --git a/src/layout/music.c b/src/layout/music.c index e031fb6..1ff80c0 100644 --- a/src/layout/music.c +++ b/src/layout/music.c @@ -55,7 +55,6 @@ struct _priv { struct mediadata *md; Eina_List *media_list; - int cur_index; app_media *playing_info; }; @@ -273,7 +272,6 @@ static void _item_selected(struct _priv *priv, app_media *am) vdata.list = mediadata_get_medialist(priv->md); vdata.index = util_get_media_index(vdata.list, am); - priv->cur_index = vdata.index; viewmgr_update_view(VIEW_MPLAYER, UPDATE_CONTENT, &vdata); viewmgr_push_view(VIEW_MPLAYER); @@ -336,7 +334,6 @@ static void _grid_key_down_cb(void *data, Elm_Object_Item *it, vdata.list = mediadata_get_medialist(priv->md); vdata.index = util_get_media_index(vdata.list, am); - priv->cur_index = vdata.index; viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_CONTENT, &vdata); viewmgr_show_view(VIEW_ACTION_MENU); @@ -454,15 +451,15 @@ static app_media *_get_playing_item(Eina_List *list) return am; } -static void _update_playing_item(struct _priv *priv, int index) +static void _update_playing_item(struct _priv *priv, const char *id) { Eina_List *list; app_media *am; app_media_info *info; list = mediadata_get_medialist(priv->md); - if (index >= 0) - am = eina_list_nth(list, index); + if (id) + am = util_find_media_info(list, id); else am = _get_playing_item(list); @@ -641,11 +638,11 @@ static void _update(void *layout_data, int update_type, void *data) switch (update_type) { case UPDATE_CONTENT: _update_content_list(priv); - _update_playing_item(priv, -1); + _update_playing_item(priv, NULL); break; case UPDATE_CONTENT_ITEM: listmgr_update_content_item(priv->listmgr); - _update_playing_item(priv, -1); + _update_playing_item(priv, NULL); break; case UPDATE_PLAY_INFO: if (!data) { @@ -655,7 +652,7 @@ static void _update(void *layout_data, int update_type, void *data) vdata = data; - _update_playing_item(priv, vdata->index); + _update_playing_item(priv, vdata->id); break; case UPDATE_FOCUS: listmgr_focus_play_info(priv->listmgr); diff --git a/src/util/listmgr.c b/src/util/listmgr.c index 0f8b84b..a96e005 100644 --- a/src/util/listmgr.c +++ b/src/util/listmgr.c @@ -452,6 +452,29 @@ bool _focus_to_content(struct listmgr *lmgr, Evas_Object *base) return true; } +Elm_Object_Item *_get_grid_item(Evas_Object *grid, const char *id) +{ + Elm_Object_Item *it; + app_media *am; + app_media_info *mi; + + for (it = elm_gengrid_first_item_get(grid); it; + it = elm_gengrid_item_next_get(it)) { + am = elm_object_item_data_get(it); + if (!am) + continue; + + mi = app_media_get_info(am); + if (!mi) + continue; + + if (!strcmp(id, mi->media_id)) + return it; + } + + return NULL; +} + void listmgr_set_focus_state(struct listmgr *lmgr, Eina_Bool state) { if (!lmgr) { @@ -477,26 +500,26 @@ bool listmgr_focus_play_info(struct listmgr *lmgr) return true; } -bool listmgr_focus_content_list(struct listmgr *lmgr, int index, bool update) +bool listmgr_focus_content_list(struct listmgr *lmgr, const char *id) { Eina_List *item, *l; Evas_Object *ly, *grid; Elm_Object_Item *it; - int count; - int r; - if (!update) { - r = _focus_to_content(lmgr, lmgr->focused); - if (!r) - _ERR("failed to focus to content"); - return r; + if (!lmgr) { + _ERR("failed to get listmgr"); + return false; + } + + if (!id) { + _ERR("invalid argument"); + return false; } item = elm_box_children_get(lmgr->box); - if (lmgr->show_play_info) - item = eina_list_next(item); grid = NULL; + it = NULL; EINA_LIST_FOREACH(item, l, ly) { grid = elm_object_part_content_get(ly, PART_ITEM_CONTENT); if (!grid) { @@ -504,18 +527,11 @@ bool listmgr_focus_content_list(struct listmgr *lmgr, int index, bool update) return false; } - count = elm_gengrid_items_count(grid); - - if (index < count) + it = _get_grid_item(grid, id); + if (it) break; - - index -= count; } - it = elm_gengrid_first_item_get(grid); - while (index--) - it = elm_gengrid_item_next_get(it); - if (!it) { _ERR("failed to get current grid item"); return false; -- 2.7.4 From 596d2e1a64ac037c78387b9778dca83685bfe083 Mon Sep 17 00:00:00 2001 From: Jehun Lim Date: Wed, 26 Aug 2015 11:36:10 +0900 Subject: [PATCH 09/16] base: add notify to inform of updating favorite value Change-Id: Ie2618c02913ccf5b52bdf5d570c90ca152b2b592 Signed-off-by: Jehun Lim --- include/util/util.h | 2 + include/view.h | 2 + include/view/base.h | 1 + res/edc/mediahub-theme.edc | 1 + res/edc/widgets/notify.edc | 160 +++++++++++++++++++++++++++++++++++++++++++++ src/util/util.c | 42 ++++++++++++ src/view/action_menu.c | 26 ++++++-- src/view/base.c | 54 +++++++++++++++ 8 files changed, 282 insertions(+), 6 deletions(-) create mode 100644 res/edc/widgets/notify.edc diff --git a/include/util/util.h b/include/util/util.h index dfc2d53..17bf998 100644 --- a/include/util/util.h +++ b/include/util/util.h @@ -26,6 +26,8 @@ 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); Evas_Object *util_add_image(Evas_Object *base, const char *file); +Evas_Object *util_add_notify(Evas_Object *base, const char *notify_style, + const char *label_style, const char *text, double time); Evas_Object *util_add_scroller(Evas_Object *base); Evas_Object *util_add_table(Evas_Object *base, int padding_x, int padding_y); diff --git a/include/view.h b/include/view.h index 01e6765..755c6e8 100644 --- a/include/view.h +++ b/include/view.h @@ -46,6 +46,8 @@ enum update_type { UPDATE_FAVORITE, UPDATE_RECENT, UPDATE_FOCUS_STATE, + UPDATE_TOAST_SHOW, + UPDATE_TOAST_HIDE, }; #endif /* __AIR_MEDIAHUB_VIEW_H__ */ diff --git a/include/view/base.h b/include/view/base.h index d30855c..03fa4e7 100644 --- a/include/view/base.h +++ b/include/view/base.h @@ -44,5 +44,6 @@ #define STYLE_BTN_MENU "base_btn_menu" #define STYLE_BTN_INDEX "base_btn_index" #define STYLE_BASE_PROGRESS "base_recent_progress" +#define STYLE_TOAST_FAVORITE "base_toast_favorite" #endif /* __AIR_MEDIAHUB_VIEW_BASE_H__ */ diff --git a/res/edc/mediahub-theme.edc b/res/edc/mediahub-theme.edc index f1981b6..e74c2b6 100644 --- a/res/edc/mediahub-theme.edc +++ b/res/edc/mediahub-theme.edc @@ -20,5 +20,6 @@ collections { #include "widgets/button.edc" #include "widgets/gengrid.edc" #include "widgets/genlist.edc" + #include "widgets/notify.edc" #include "widgets/slider.edc" } diff --git a/res/edc/widgets/notify.edc b/res/edc/widgets/notify.edc new file mode 100644 index 0000000..20bf305 --- /dev/null +++ b/res/edc/widgets/notify.edc @@ -0,0 +1,160 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +group { + name: "elm/notify/bottom_left/base_toast_favorite"; + parts { + part { + name: "padding.bottom.left"; + type: SPACER; + scale: 1; + description { + state: "default" 0.0; + rel1.relative: 0.0 1.0; + rel2.relative: 0.0 1.0; + min: 40 40; + align: 0.0 1.0; + fixed: 1 1; + } + } + part { + name: "base"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + rel1 { + to: "padding.bottom.left"; + relative: 1.0 0.0; + } + rel2 { + to: "padding.bottom.left"; + relative: 1.0 0.0; + } + min: 536 70; + align: 0.0 1.0; + color: COLOR_ITEM_BG; + fixed: 1 1; + } + } + part { + name: "border_top"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + rel1.to: "base"; + rel2 { + to: "base"; + relative: 1.0 0.0; + } + min: 0 1; + align: 0.5 0.0; + color: COLOR_ITEM_BORDER; + fixed: 0 1; + } + } + part { + name: "border_left"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + rel1 { + to: "border_top"; + relative: 0.0 1.0; + } + rel2 { + to: "base"; + relative: 0.0 1.0; + } + min: 1 0; + align: 0.0 0.5; + color: COLOR_ITEM_BORDER; + fixed: 1 0; + } + } + part { + name: "border_right"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + rel1 { + to: "border_top"; + relative: 1.0 1.0; + } + rel2 { + to: "base"; + relative: 1.0 1.0; + } + min: 1 0; + align: 1.0 0.5; + color: COLOR_ITEM_BORDER; + fixed: 1 0; + } + } + part { + name: "border_bottom"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + rel1 { + to: "border_left"; + relative: 1.0 1.0; + } + rel2 { + to: "border_right"; + relative: 0.0 1.0; + } + min: 0 1; + align: 0.5 1.0; + color: COLOR_ITEM_BORDER; + fixed: 0 1; + } + } + part { + name: "elm.swallow.content"; + type: SWALLOW; + description { + state: "default" 0.0; + rel1.to: "base"; + rel2.to: "base"; + } + } + } +} + +group { + name: "elm/label/base/base_toast_favorite"; + parts { + part { + name: "elm.text"; + type: TEXT; + scale: 1; + description { + state: "default" 0.0; + text { + font: FONT_LIGHT; + size: 28; + align: 0.5 0.5; + } + color: COLOR_TEXT_TITLE; + } + } + } +} diff --git a/src/util/util.c b/src/util/util.c index d5c5356..d7b0e06 100644 --- a/src/util/util.c +++ b/src/util/util.c @@ -129,6 +129,48 @@ Evas_Object *util_add_image(Evas_Object *base, const char *file) return image; } +Evas_Object *util_add_notify(Evas_Object *base, const char *notify_style, + const char *label_style, const char *text, double time) +{ + Evas_Object *notify, *label; + + if (!base) + return NULL; + + notify = elm_notify_add(base); + if (!notify) { + _ERR("failed to create notify object"); + return NULL; + } + + if (notify_style) + elm_object_style_set(notify, notify_style); + + evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + elm_notify_align_set(notify, 0.0, 1.0); + elm_notify_timeout_set(notify, time); + + label = elm_label_add(notify); + if (!label) { + _ERR("failed to create label object"); + evas_object_del(notify); + return NULL; + } + + if (label_style) + elm_object_style_set(label, label_style); + + elm_object_content_set(notify, label); + + if (text) + elm_object_text_set(label, text); + + evas_object_show(notify); + + return notify; +} + Evas_Object *util_add_scroller(Evas_Object *base) { Evas_Object *scr; diff --git a/src/view/action_menu.c b/src/view/action_menu.c index 1946ed3..4cfd499 100644 --- a/src/view/action_menu.c +++ b/src/view/action_menu.c @@ -180,6 +180,7 @@ static bool _livetv_clicked(struct _priv *priv) static bool _favorite_clicked(struct _priv *priv, Evas_Object *obj) { app_media_info *mi; + struct view_update_data vdata; int r; bool favorite; @@ -192,34 +193,45 @@ static bool _favorite_clicked(struct _priv *priv, Evas_Object *obj) mi = app_media_get_info(priv->am); if (!mi) { _ERR("failed to get app media info"); - media_content_disconnect(); - return false; + goto err; } r = app_contents_favorite_check(CONTENTS_MEDIA, mi->media_id, &favorite); if (r != APP_CONTENTS_ERROR_NONE) { _ERR("failed to check favorite"); - media_content_disconnect(); - return false; + goto err; } r = app_contents_favorite_set(CONTENTS_MEDIA, mi->media_id, !favorite); if (r != APP_CONTENTS_ERROR_NONE) { _ERR("failed to set favorite"); - media_content_disconnect(); - return false; + goto err; } app_media_update(priv->am); + mi = app_media_get_info(priv->am); + if (!mi) { + _ERR("failed to get app media info"); + goto err; + } + + vdata.id = mi->media_id; + viewmgr_update_view(VIEW_BASE, UPDATE_CONTENT_ITEM, NULL); + viewmgr_update_view(VIEW_BASE, UPDATE_TOAST_SHOW, &vdata); + viewmgr_hide_view(VIEW_ACTION_MENU); media_content_disconnect(); return true; + +err: + media_content_disconnect(); + return false; } static bool _delete_clicked(struct _priv *priv, Evas_Object *obj) @@ -872,6 +884,8 @@ static void _show(void *view_data) evas_object_show(priv->base); + viewmgr_update_view(VIEW_BASE, UPDATE_TOAST_HIDE, NULL); + elm_object_focus_set(priv->tv_btn, EINA_TRUE); } diff --git a/src/view/base.c b/src/view/base.c index 6ec6a6e..4db00f3 100644 --- a/src/view/base.c +++ b/src/view/base.c @@ -28,13 +28,19 @@ #include "define.h" #include "layout.h" #include "view.h" +#include "util/util.h" #define TITLE_TEXT "Media Hub" +#define TEXT_FAVORITE_ADDED "Added to your favorite." +#define TEXT_FAVORITE_REMOVED "Removed from your favorite." + #define VIDEO_COPYRIGHT "Unknown" #define BOX_PADDING_SIZE 80 +#define TIME_TOAST_FAVORITE 5.0 + enum _layout_type { E_LAYOUT_MOVIE = 0, E_LAYOUT_GALLERY, @@ -46,6 +52,8 @@ struct _priv { Evas_Object *win; Evas_Object *base; Evas_Object *btn[E_LAYOUT_MAX]; + Evas_Object *notify; + Evas_Object *focused_btn; layoutmgr *lmgr; @@ -473,6 +481,41 @@ static bool _draw_items(struct _priv *priv) return true; } +static void _hide_toast_favorite(struct _priv *priv) +{ + if (priv->notify) + evas_object_hide(priv->notify); +} + +static void _show_toast_favorite(struct _priv *priv, const char *id) +{ + Evas_Object *notify; + int r; + bool favorite; + + r = app_contents_favorite_check(CONTENTS_MEDIA, id, &favorite); + if (r != APP_CONTENTS_ERROR_NONE) { + _ERR("failed to check favorite"); + return; + } + + if (favorite) + notify = util_add_notify(priv->base, STYLE_TOAST_FAVORITE, + STYLE_TOAST_FAVORITE, TEXT_FAVORITE_ADDED, + TIME_TOAST_FAVORITE); + else + notify = util_add_notify(priv->base, STYLE_TOAST_FAVORITE, + STYLE_TOAST_FAVORITE, TEXT_FAVORITE_REMOVED, + TIME_TOAST_FAVORITE); + + if (!notify) { + _ERR("failed to add notify object"); + return; + } + + priv->notify = notify; +} + static Evas_Object *_create(Evas_Object *win, void *data) { struct _priv *priv; @@ -601,6 +644,17 @@ static void _update(void *view_data, int update_type, void *data) g_menu_item[priv->current_layout].layout_id, update_type, NULL); break; + case UPDATE_TOAST_SHOW: + if (!data) + goto err; + + vdata = data; + + _show_toast_favorite(priv, vdata->id); + break; + case UPDATE_TOAST_HIDE: + _hide_toast_favorite(priv); + break; case UPDATE_FAVORITE: if (!data) goto err; -- 2.7.4 From f27e83cbcb62fb9fbce1cf72e6f8c2414bfbf724 Mon Sep 17 00:00:00 2001 From: Minkyu Kang Date: Wed, 26 Aug 2015 16:37:12 +0900 Subject: [PATCH 10/16] player: enable set position Change-Id: If5da0ca7b37434f25ac6af7ccbe38be2c4a5d7c5 Signed-off-by: Minkyu Kang --- src/util/playermgr.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/util/playermgr.c b/src/util/playermgr.c index 252fc7d..d484431 100644 --- a/src/util/playermgr.c +++ b/src/util/playermgr.c @@ -150,9 +150,6 @@ bool playermgr_set_position(struct playermgr *m, int ms, { int r; - /* FIMXE */ - return true; - if (!m) { _ERR("invalid parameter"); return false; -- 2.7.4 From ff493604ca0816e8e4457d32b13c4cff1419115c Mon Sep 17 00:00:00 2001 From: Minkyu Kang Date: Wed, 26 Aug 2015 16:48:30 +0900 Subject: [PATCH 11/16] use capi-media-player instead of legacy library Change-Id: Idca92fccf217d8b834b7d6190a1b51d1dd21827f Signed-off-by: Minkyu Kang --- CMakeLists.txt | 2 +- packaging/org.tizen.mediahub.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 265f159..8f4c9db 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,7 +21,7 @@ pkg_check_modules(PKGS REQUIRED glib-2.0 elementary capi-appfw-application - legacy-capi-media-player + capi-media-player capi-ui-efl-util app-utils) diff --git a/packaging/org.tizen.mediahub.spec b/packaging/org.tizen.mediahub.spec index 581b47f..2d83d85 100644 --- a/packaging/org.tizen.mediahub.spec +++ b/packaging/org.tizen.mediahub.spec @@ -11,7 +11,7 @@ BuildRequires: cmake BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(elementary) BuildRequires: pkgconfig(capi-appfw-application) -BuildRequires: pkgconfig(legacy-capi-media-player) +BuildRequires: pkgconfig(capi-media-player) BuildRequires: pkgconfig(capi-ui-efl-util) BuildRequires: pkgconfig(app-utils) -- 2.7.4 From cacc3e7c741282163fd68ebc727eec23c82b7dea Mon Sep 17 00:00:00 2001 From: Minkyu Kang Date: Fri, 28 Aug 2015 14:46:20 +0900 Subject: [PATCH 12/16] get parameter name for launching app from app-utils Change-Id: I8231415347a575b6a1ed82ca78cb2ce744b803cd Signed-off-by: Minkyu Kang --- src/main.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main.c b/src/main.c index 36f007d..e18e1dd 100644 --- a/src/main.c +++ b/src/main.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -26,9 +27,6 @@ #define MEDIAHUB_WIN_TITLE PACKAGE -#define PARAM_MEDIA_ID "media_id" -#define PARAM_SENDER_ID "sender_id" - #define APP_ID_FAVORITE "org.tizen.favorite" #define APP_ID_RECENT "org.tizen.home" -- 2.7.4 From 22e5f1ea46b1f835fe96f215e63e7d129bdbbef5 Mon Sep 17 00:00:00 2001 From: Jehun Lim Date: Fri, 28 Aug 2015 14:25:31 +0900 Subject: [PATCH 13/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 14/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 15/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 zcmZXWbyU=Aw}5{L(j^QX(lOF`=op3$2L|bm0g*;Q5S#&N1xKVqQex;H0U1IHA^AS;I%0LV=|A&|RwJ$!?F13i5Gxbz?pF24X@ch3iI01z^l zYleWEZ854GFCA(c#35fB_?j}1a+zu-B0*>YFgF>kejInfECa0T78FXvHjp1jn3RNk z&HxjkOdy{jS?4ZHiYkgr_;~gutjKGs{rKz1Wz)3kX5~R{!zc-klrl|M8YYXREZ5|` zwG!3e+xKN%OdUne=LgV|Hn?&JUhonCClSiZcX)6l?*W342?|mGXOxYTV2{0``L3C1 zOMrYvfD1zZWk8Aq0qUVinr{JhZ31L&hJYE6PXss)xj3%@cSQk5!KYs*0A%h-W*7lr z^O~E1ARi5I(YwWI0Uk;~<>HTN3BJBmX1y|&PXUUuAr#U5bb|up*U+k=~bu{JTUR_7wRKj}zVNY1Es5{H-~Q1HZp-11)%oot@oSU!T$M z)wFT?Xc2yi=yt$aTs-&_p?rRPwDNwH4<%)X(jhuo=^j2bEMXsgMfS{j;cK$ac?-qW zImZM~ubwm35)4{{(fKE7Wj#NTD&dLOd?oyWfBedIby?($P<2@rsJ*XB5QY{lvvVQ* zZ6HW%8H8Is27vuG->%O>q=ZP1s4t_zS9@v~I{Ewn(p~SBKLFTk@rl7dHmLQJ0)SRN z3S6tfcG$%%f+J?{y1CFraqcMhOp~v-Ta#9k+!e_l;3!-fsVNjQQp*8$6#uNwA%lZ? z#H9F9i*=i~QmgpUoH~)_bqTej$cQusNa>xp=i&&Q6D)a?NSQLDPq@2uiRcpfxCY}u zFdhT6tgfVK0-VcSmt$Wg;D$o1t@b;#(f}Y8c^=cQBl#Lt4^#O}*#yCs$+JGwE~NP6 z8YG#O%$T43DWH*6<+)tJ<|m8?&0Ml7q+bH}jhRHc_ko01Uyo+pUm|2FE<<%Zm6Vu1 z*4lfOgl+LhE~9n9M06-9j!cdySd+_%Q$yF%(9(EDw~ULOPv+JfnLHWcGg!AEPfD3V zqrkgce|njnr6gl5bwzlm=#uHhX~W_mz4Cl?@enCN?8_T^b;a;;x^eAsA5-2fk@9RA zT~^+d!8up2dJ=`#B3yR{qStfRd)B4b+19!DZOC(-)%}Z4%vOa=Ki=18*`VE!*&uey zkkT+O$}(LnD}djUO}5soDrh#XfyI{5%RJ0d7>Q!kGbpJlOr2o$VDdQjtoau7?$%-| zr*Zlxi}9f?op0&i2oHlPsbUzS`r{BnEZNK?%m|iX=9&z{w=5HhEd6i^dCBdJ%}kn1 zUvo=vGx!Mu`XhO&eyTt!8(17(Uh%eKse;1%zUXgou z+l@S3hE$|@i%if&1TIOOUX+a zjZ_qms>Le2O4th8w1PW*N_R8z-rFPd41G(N9(Qb>vWJUbz%RT{OOJFYEr}Z_`H1H! z@yyB}Wc_`WImG+tf59MjJ?fAWr&Oo(FVE1}G3BC3?HAfK&prEW*Z9`F`@H*#1c(K= z1q_V78|`M98e!iGzg03+GVC829w{7|%9PDkk(`#=%-+nN&R%YDv<|TrX)bGSbC)qpo^s%y&fOHxZ#4#V=emVuTblOEqZhv;Ro% z?ED@V;JXi_OBu_>=tLCL)D7c||9bsXgBD!I_?&;AKA1m={Bbu&H-bleOl~Z024V~5 zG~U+*8->35fo_+5%=baML}UZ|OtAcAyCId~Vzy!)W7Z=sZz&bU4#}uj=$HPQ72HNC z&4}-aukMeAD&3;%FF*Jswup14k_>t^ysW%wB}(3``Su&!T4)+fQjc)6aPJ(6|EQ3L z$-6VMGu-fT{-u1*-kYl(x^B8JubN9@3@k)BEWdVC-dCts_J2H2zQ%C#PRu>xO6Ass zX0Z3931-J4y*i>pAk@eUW#9ENva5-}Yn#HHd?Px1dtrLV&cssOYPrejG$xl#l_5T% z8Z^(8&hT_bXdz^SE!OvAXXe7|#&S$A)^*f<+PkhF9*}~d?%lw#} zw`o7VP#t_fZ%$xtH0eI+cBXgMaI97xU$J$PcIItYW$f+0(@!`~ctOHT-8_x`JjpSx z0yj;by0fiA-GBT2W$s?ED3u(Q`HP&sRbD@>$Lm|iWXs2#REl$to`+R_A(^=Shy%eP zeqS?dKTA8?EbGk1+2)<_odKto%!1|IWo#tkM$4WgPwC+krOG1{n6*Sskz}1 zVt*DK=L?&|HeK+`_i23h-q8kq8HZjaZYs4a;cfR@gZAs^H|Q-|EwXA99lXB>eOJCr znK0>Z%W2E1#@c#ecSAdx!rYIy*z)A@i-#SLe=%N7P39@6EOs1(`W}BcK3Zm6j0h0C zzz?;}1`F<1wVSj%9IEeV%t97pC)I2&7iRVrp5Dg==O2tM=o}MAM~z;hkCJI1H#5L{$Dg_*vrnaGDJ&@|S44yv z2j?!*qVw1PO)eK*QzHNfn?>q4#1rSA>HB{ZhM_R1Hz*rqa;^?uJe}|jL2~+&Wsn~vrQf)(&IJd>&BJPV zHskGAMp|2^8)^3j>H71ysz^I-9d$6YxI^)Tqc^sZCde>Gr>vhAp93X)T9kHpuhiuG zd&31zu|E9tL?*`}+RRd-0eMg-{V3Ujrl_vfbG`kDxa~fn!2Wd94JlTe0j-*wlxC*mGSjpifJf2hU3TU zBGR& zhpw_bh%-PNnXY?1sMJ+vV_glXo#3l(nkt5J@_KXH6FhHJNJGc1si*SaGv~u43EeIU zS4djKxlsKQs^@dTIXQ~fVvQsp2#7L8u>68&+5Y}vYcLm4XW5ECaI%otCnaLDClJ=6 zL@F=`m@lIOxB0T?lFq3j=1t@BA@z9Lhv;+1JwiDGhko|`5NaOGd!+}gt*MPKp3?sW z`x(a{ryH^5@b46ejuY3v%zz|{Fvnd6FnAvP)J+NhO5*?Hn19=gf4Y}(mWaN%iZP}5 zGm6Yqe__9&eJ|8>X~1vrw0_7PzvV<5Tj=&46uwC>37ysa7_3ZxM=#7Z*bj_tdbFN( zTY*TK%$B9|O`OeMSh0#+3Qj!dl(TNd%+#m<7WCe>Pe54X02TkP*wdGC>YaB5(F$sm z&T?A7iV)mdrNZn&%bj=_*w@n184i~Il0`!5gww(?rX{{RyjP hul@fAZ{7m*@GP}=33xpQak`LXsh^X?yO_L_Ot?AV)T2DDUHr~m++yEV8$`%RAXODRti2#SUj2qBP_;G$#5fvzhH{hqK#2ckCdw?KL(tb zh)!U&kf4d9nuM(Ize;@eIwr37WHIcu_c-xrZQ%UvgywqXKCW&E(n>*-ZYXb|h^8rn z@iKmW*4^2)xFV$;K_%n|Fi_OF@jpBh1Odk=C{$da719ELf=8(-fL7C-RvGT-3;OS{ zEJqOfIjA)dqhd^fW&yNA6Jf=Gwmt}r%M`W(@<{>bKG(a;z)eZOS>(yuD1gQtXN7?P zhg5!6P(B9WV|I_x1w7S(%As3vdH_NOVDT{SR0Sp_0U0A(4@01~0cag$pvD6fG=Pjn zOyqTdGz@U=5flsto@W6p`g^v}pW@XF>tdIa%ECh%g;ez-94I9HA-1+syrP3f?BXm+ zE+j75+EVQyS)6ha3iMz1`vD*y!+QDJ{j=afy6V9}r9=YV9m($>$S(x$-d#Rl9jfrt z27tvt)bP24blnxSIyu_s{MEH>QqSAe`F|b7d*JD{-vap?)3*D5f6qp*Ah~gBYIS90 z@G9Y0{sWUD?x7UQ=XYn(UVb>^1qeeG#PqqdlK34h3E8Xq_44Ujxt{Mk)RPa9dYM%DT5stD6D< zbn_#`YIV2{+BhUy$+_FeX4|Mwot2)$ggV<{3@|D;GFWNi` ztrnh9SU)Tb{x(BWrg$N~ zPcbYO0>&6cLs`o>Yd#x8o;{5K64hu&{r4F49zgEtX%x{wHZ=loq49<0ExfT*`O0(s zSJa=~0%fz4*z$8e2h?BDNKh(R|6JioKb@or@0Mx(#sQJB0-6D?Rz6o zNmJ2vrS?`OxGDC~b?8kHDN}@AE2R=?5RA`-SH}=xf-svjEal@CQed2>RHg(!w`dm; zz?K@<3%_Ul-N|uRPBt20C?Pn`l*BB}5EcXPR2E{2h0BRFCX*PwDYPD88qptlU@5pE zQI?}%ctsHVY1+*j4^d5(;1lnOT*0k$tjMo$t?=(TP~q-s`xhQtEs0w8-n+rM%CM@i zO75O1r(^Rv+j6e7z?xAp$sSf!K(MT_h%RMT_$ym=;2E2daZ%N)w9zY`?4CznHQxf? zGtQ;)nq_>p9qHRJ_?Gbvd=NxK8^!vpI|eDrnZp6$Kyn6g)MT0zbB@Myc3aCR%Wh__ zXVGW*+91RTVvkudy;Ny8(uC8v#H6ju%8SeA%c*VlZThT}%5GbQSL@rzTP>GSeo3#e zDaYO1wBoWtmZ_IUmm^Dkt+fhKc4x8Vb{!@i=I}y`{5N-&iCuiuuAFtj68zq@6;Xdh zD0T|J8JK$fNUSOIjHfAHqr9v@6)t~6-nPziKh;AEvYhFEoEvCHxh`6gv5$(IXW6;F zbe*eM!K6{v-O;-|JtG}aVOU{NVX)b(RJ~P#D{j_nvO9^O)9Jn;;wWN(Od2G^ty@i5 z&6QAW9@BrJPoLn`<+v=g?9=7b z^;(!*m|xh~^tg{!(Y-c;38!dTL1hBd3m8%K83{v>=Nlr?bH zu1=EAR1+drhM`IMWdd{G^-eFGRnDjZk{#Lj@Y#M$e5~=)KB){%sT{7Zxt`{g8-a)Z zPK%)$v^zu(F6Z#u{x|p{W49)d!Z6#4mXcL zzFilTc9q81R!!746a|$Zx$LlO{?ZJ1xvaSiRi2ldx4YA?+}hC7&}ZJ^n|CL20schr z!tEmTVi+hvUjre*u@O2E4kRbXp^y1LBxyGAx^+7&JT!f4HFgM>kz} zJ_jjlu395`Ls3k#T0zbe zm`S*!7_Zr$p_plC$`1@tF+}L2e38Uz<8zU+WTFYJ$y|zBrE6cyu8?AYG+zZArwU!+e-2v)|xBtsp6sjAv09VtYqR*x5z7@ z@8SqzK4az;Tecb1sAl0%Q}2k|ZM{$1-h#Y0scooMBf~dmC$^l-5z=-GZ(aUG;kYze zW8X4o@WpG=C*2Cs5O`}TgwnoX@QtLSWW8}bjUdQ)=JwWb8lTHjvowfbA=Iq zDf}3laUdR@X?|*%u>skbj(Lo^pBSCg9cfj^mTw%VpZGXcnfdr{b%RI1XAnU;!bIbj zF`f|(Ys;i@@l6A|?yD{5xSb$LS|wVW7r9+af_}OoD;r0Y3rD=PYSWJr!YUUbqgNmC zAbF(k!Ls+V^>eJUPaN(#yf^RH93KBZA9`vqbCo_<0csa=W8eCd*Yw8IQ7m$AC;^v- z3r9))o^_siMF?AW9bC9a@4NG!A#ia-?;?I(ov1$Oxc4q_4?nZYZ2QhOyGHGf&-cLZ z&~xmld3RH8Q+9Quqj%$WX!F}JkE0E)JmtZ;gXWN*Y!~BWd8!(7&HJIgM<0(47ue=d z0U~FEeN9tABHL9&bK;!??Jb=t_+0dumc#k%kL>a31^ltMk5Ub~b6$@!00X;Be+}LB?JN_Jhyk zqOUF}`GEuVtrWp5wcI@xLqnhoOFdA&eyzVevwiRgvr?>C25pG!`#oLKAy zDL8Zg)Ky+`=JLPE=W1wa3IL(k008|A0DfOwasvSVk^zA4&H$j62>|TADR(~V0|4o$ zk*Zunf*ek&h8Y9CDQ!F=E7#`AhpIjn4d&A`nvg{Wyn5Q~mcXAN!hd@rA>|P+l z!)ls;O?%@uICyyUdd*90@(nEtMJ-v%{twsVtp5)G4HiAIzr%kcPJs3A@PE+5Z0Xu& zVQZ|#T({&{Ikq=9_Y)*!>(Et7RjX@C&gy=#rrxSqakGfNg&r1 zSwfrz6Ddq;>U>yK02)9&LQ-3L_qD*jYcI!4Qj#qhg6fnNHUVg~#^7*J1hpg0kJ7p- zunOZlnqZYqTJQw0Lvja9&6-884qKa6n?aFilHCF+gGE4n5zVc3!(UoJff4v?eZ9n_RSQjr+Kv&EC_zpCnzEj!xg-(* z3NqfHlJOU&`)Q9ch77?H5>84(P|464*>ys$6!nleGOn(f>`gghGX%H_|2SXX3=F-7 zI$%DkNcPTUtym4XrVGUTJEm$OQ_K~Uvf}RNa$3;2r%&88Ma4;YMXrXT-RJ7hQ|zpi zp6d3QxWik7Mc#BBA;Q@K^c*@{-g>rn}AMvVl>S6=py;;*# z^sET$oOw2d;>&~j7H_8Su1=jZ%s(wwIyp(JA-}M~+Rb2YtFQZdACr>TK5s*+!E|Ey zkROy;5W~7n0_!`E2V`cF96MfLi81j4ImTDL%Jtr6ZGm|OtBTc_GE&B0%v#Fa-nb>7 z;bZ5dyvyWgd#V9I>4}u5_Q;DTs7A%s zDQ{fe?sK)5;pqCwLz?Mid^KX5Y>?~$nI?InaFs3!bS$JMewdxTZ-gyNC*<_VU2t?7 z=0V!Z 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 f51516fedeab9e0b14142c7ec45ae4d7d742e531 Mon Sep 17 00:00:00 2001 From: Jehun Lim Date: Mon, 31 Aug 2015 21:31:48 +0900 Subject: [PATCH 16/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