musicplayer: play automatically when showing view 59/44359/1
authorMinkyu Kang <mk7.kang@samsung.com>
Tue, 21 Jul 2015 06:18:50 +0000 (15:18 +0900)
committerMinkyu Kang <mk7.kang@samsung.com>
Tue, 21 Jul 2015 06:18:50 +0000 (15:18 +0900)
Change-Id: I84f01a40b209cef272a023c00ce5cd12b95453ee
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
src/view/mplayer.c

index 6675b90..261e9de 100644 (file)
@@ -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);
 }