From a5beeee421359010e47a562cd3c69e9a31f5bd3b Mon Sep 17 00:00:00 2001 From: Minkyu Kang Date: Tue, 21 Jul 2015 15:18:50 +0900 Subject: [PATCH] musicplayer: play automatically when showing view Change-Id: I84f01a40b209cef272a023c00ce5cd12b95453ee Signed-off-by: Minkyu Kang --- src/view/mplayer.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/src/view/mplayer.c b/src/view/mplayer.c index 6675b90..261e9de 100644 --- a/src/view/mplayer.c +++ b/src/view/mplayer.c @@ -81,10 +81,6 @@ static struct _btn_info btn_player[] = { }, }; -static void _player_play(struct _priv *priv); -static void _player_stop(struct _priv *priv); -static void _player_next(struct _priv *priv); - static void _draw_playlist(struct _priv *priv) { struct _list_data *ld; @@ -234,7 +230,7 @@ static struct progressbar_ops _progressbar_ops = { .get_value = _player_get_position, }; -static void _player_play(struct _priv *priv) +static void _player_play_pause(struct _priv *priv) { app_media_info *mi; player_state_e state; @@ -289,8 +285,37 @@ static void _player_next(struct _priv *priv) return; } + progressbar_start(priv->progress); + playermgr_play(priv->player, mi->file_path, 0); + break; + default: + _ERR("player was not created"); + break; + } +} + +static void _player_play(struct _priv *priv) +{ + app_media_info *mi; + player_state_e state; + + playermgr_get_state(priv->player, &state); + + switch (state) { + case PLAYER_STATE_IDLE: + case PLAYER_STATE_READY: + mi = _get_current_media_info(priv); + if (!mi) { + _ERR("failed to getting media info"); + return; + } + + progressbar_start(priv->progress); playermgr_play(priv->player, mi->file_path, 0); break; + case PLAYER_STATE_PAUSED: + case PLAYER_STATE_PLAYING: + break; default: _ERR("player was not created"); break; @@ -337,10 +362,23 @@ static void _callback_music(void *data, const char *ev) _mplayer_next(priv); _player_next(priv); } else if (!strcmp(ev, SRC_BTN_MUSIC_PLAY)) { - _player_play(priv); + _player_play_pause(priv); } } +static void _list_set_focus(struct _priv *priv) +{ + struct _list_data *ld; + + ld = eina_list_nth(priv->item_list, priv->playlist.cur); + if (!ld) { + _ERR("failed to get list data"); + return; + } + + elm_object_item_focus_set(ld->item, EINA_TRUE); +} + static void _list_free(struct _priv *priv) { elm_genlist_clear(priv->list); @@ -632,6 +670,8 @@ static void _show(void *view_data) media_content_connect(); _mplayer_show(priv); + _list_set_focus(priv); + _player_play(priv); evas_object_show(priv->base); } -- 2.7.4