mplayer: adds support the remote controller
[profile/tv/apps/native/air_mediahub.git] / src / view / mplayer.c
index c1cafd0..5109d7c 100644 (file)
@@ -469,6 +469,31 @@ static void _player_next(struct _priv *priv)
        }
 }
 
+static void _player_pause(struct _priv *priv)
+{
+       player_state_e state;
+       struct controller *ctl;
+
+       playermgr_get_state(priv->player, &state);
+
+       switch (state) {
+       case PLAYER_STATE_PLAYING:
+               progressbar_pause(priv->progress);
+               playermgr_pause(priv->player);
+               break;
+       case PLAYER_STATE_PAUSED:
+       case PLAYER_STATE_IDLE:
+       case PLAYER_STATE_READY:
+               break;
+       default:
+               _ERR("player was not created");
+               break;
+       }
+
+       ctl = priv->ctl;
+       ctl->ops->signal(ctl->handle, PLAY_BTN_LOC, SIG_SET_PLAY);
+}
+
 static void _player_play(struct _priv *priv)
 {
        app_media_info *mi;
@@ -569,6 +594,7 @@ static void _key_down(int id, void *data, Evas *e, Evas_Object *obj,
                        Evas_Event_Key_Down *ev)
 {
        struct _priv *priv;
+       bool r;
 
        if (!data || !ev)
                return;
@@ -576,8 +602,24 @@ static void _key_down(int id, void *data, Evas *e, Evas_Object *obj,
        priv = data;
 
        if (!strcmp(ev->keyname, KEY_BACK) ||
-                       !strcmp(ev->keyname, KEY_BACK_REMOTE))
+                       !strcmp(ev->keyname, KEY_BACK_REMOTE)) {
                _pop_view(priv);
+       } else if (!strcmp(ev->keyname, KEY_PLAY)) {
+               _player_play(priv);
+       } else if (!strcmp(ev->keyname, KEY_PAUSE)) {
+               _player_pause(priv);
+       } else if (!strcmp(ev->keyname, KEY_STOP)) {
+               _player_stop(priv);
+       } else if (!strcmp(ev->keyname, KEY_NEXT)) {
+               r = _mplayer_next(priv);
+               if (r)
+                       _player_next(priv);
+               else
+                       _player_stop(priv);
+       } else if (!strcmp(ev->keyname, KEY_PREVIOUS)) {
+               _mplayer_prev(priv);
+               _player_next(priv);
+       }
 }
 
 static void _list_set_focus(struct _priv *priv)