informs the status of player to base view and detail view 23/49023/1
authorMinkyu Kang <mk7.kang@samsung.com>
Mon, 5 Oct 2015 08:14:48 +0000 (17:14 +0900)
committerMinkyu Kang <mk7.kang@samsung.com>
Mon, 5 Oct 2015 08:14:48 +0000 (17:14 +0900)
Change-Id: I9b8fe009c8a77c4c81d933c4edb25f5cf9c911c7
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
include/view.h
src/view/base.c
src/view/mplayer.c
src/view/viewer.c

index 2111f0e..78c2ed5 100644 (file)
@@ -72,4 +72,10 @@ enum toast_status {
        E_TOAST_HIDE
 };
 
+enum player_status {
+       E_PLAYER_STOP = 0,
+       E_PLAYER_PLAY,
+       E_PLAYER_PAUSE
+};
+
 #endif /* __AIR_MEDIAHUB_VIEW_H__ */
index c1ba4e4..fab2f2e 100644 (file)
@@ -837,7 +837,11 @@ err:
 
 static void _pause(void *view_data)
 {
-       viewmgr_update_view(VIEW_MPLAYER, UPDATE_PLAYER, NULL);
+       struct view_update_data vdata;
+
+       vdata.status = E_PLAYER_STOP;
+
+       viewmgr_update_view(VIEW_MPLAYER, UPDATE_PLAYER, &vdata);
 }
 
 static void _destroy(void *view_data)
index 9144827..c8a7bd6 100644 (file)
@@ -267,11 +267,38 @@ static void _update_info(struct _priv *priv, app_media_info *mi)
                        priv->playlist.list, priv->playlist.cur);
        vdata.id = _playlist_get_current_media_id(priv);
        viewmgr_update_view(VIEW_BASE, UPDATE_PLAY_INFO, &vdata);
+       viewmgr_update_view(VIEW_DETAIL, UPDATE_PLAY_INFO, &vdata);
 
        /* update history */
        util_add_to_recent(priv->playlist.list, priv->playlist.cur);
 }
 
+static void _update_player(struct _priv *priv)
+{
+       struct view_update_data vdata;
+       player_state_e state;
+
+       playermgr_get_state(priv->player, &state);
+
+       switch (state) {
+       case PLAYER_STATE_PAUSED:
+               vdata.status = E_PLAYER_PAUSE;
+               break;
+       case PLAYER_STATE_PLAYING:
+               vdata.status = E_PLAYER_PLAY;
+               break;
+       case PLAYER_STATE_IDLE:
+       case PLAYER_STATE_READY:
+       default:
+               vdata.status = E_PLAYER_STOP;
+               break;
+       }
+
+       /* update player */
+       viewmgr_update_view(VIEW_BASE, UPDATE_PLAYER, &vdata);
+       viewmgr_update_view(VIEW_DETAIL, UPDATE_PLAYER, &vdata);
+}
+
 static void _mplayer_show(struct _priv *priv)
 {
        struct controller *ctl;
@@ -432,6 +459,8 @@ static void _player_play_pause(struct _priv *priv)
                _ERR("player was not created");
                break;
        }
+
+       _update_player(priv);
 }
 
 static void _player_next(struct _priv *priv)
@@ -462,6 +491,8 @@ static void _player_next(struct _priv *priv)
                _ERR("player was not created");
                break;
        }
+
+       _update_player(priv);
 }
 
 static void _player_pause(struct _priv *priv)
@@ -487,6 +518,8 @@ static void _player_pause(struct _priv *priv)
 
        ctl = priv->ctl;
        ctl->ops->signal(ctl->handle, BTN_LOC_PLAY, SIG_SET_PLAY);
+
+       _update_player(priv);
 }
 
 static void _player_play(struct _priv *priv)
@@ -534,6 +567,8 @@ static void _player_play(struct _priv *priv)
 
        ctl = priv->ctl;
        ctl->ops->signal(ctl->handle, BTN_LOC_PLAY, SIG_SET_PAUSE);
+
+       _update_player(priv);
 }
 
 static void _player_stop(struct _priv *priv)
@@ -545,6 +580,8 @@ static void _player_stop(struct _priv *priv)
 
        ctl = priv->ctl;
        ctl->ops->signal(ctl->handle, BTN_LOC_PLAY, SIG_SET_PLAY);
+
+       _update_player(priv);
 }
 
 static void _player_complete_cb(void *data)
@@ -1065,7 +1102,7 @@ static void _update(void *view_data, int update_type, void *data)
        struct _priv *priv;
        struct view_update_data *vdata;
 
-       if (!view_data) {
+       if (!view_data || !data) {
                _ERR("failed to get view data");
                return;
        }
@@ -1075,9 +1112,6 @@ static void _update(void *view_data, int update_type, void *data)
 
        switch (update_type) {
        case UPDATE_CONTENT:
-               if (!vdata)
-                       break;
-
                if (priv->playlist.list_org != vdata->list) {
                        priv->playlist.list_org = vdata->list;
                        priv->playlist.list = eina_list_clone(vdata->list);
@@ -1095,7 +1129,9 @@ static void _update(void *view_data, int update_type, void *data)
                _add_playlist_item(priv);
                break;
        case UPDATE_PLAYER:
-               _player_stop(priv);
+               if (vdata->status == E_PLAYER_STOP)
+                       _player_stop(priv);
+               /* NOTE: if need, adds play/pause */
                break;
        default:
                break;
index 51420de..e7160a7 100644 (file)
@@ -518,7 +518,11 @@ static void _set_image_zoom(struct _priv *priv)
 
 static void _update_to_player(struct _priv *priv)
 {
-       viewmgr_update_view(VIEW_MPLAYER, UPDATE_PLAYER, NULL);
+       struct view_update_data vdata;
+
+       vdata.status = E_PLAYER_STOP;
+
+       viewmgr_update_view(VIEW_MPLAYER, UPDATE_PLAYER, &vdata);
 }
 
 static bool _viewer_show(struct _priv *priv)