},
};
+static void _player_play(struct _priv *priv);
+static void _player_stop(struct _priv *priv);
+static void _player_next(struct _priv *priv);
+
/* FIXME: test function */
static bool _media(media_info_h media_h, void *dt)
{
.get_value = _player_get_position,
};
+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_PAUSED:
+ progressbar_resume(priv->progress);
+ playermgr_resume(priv->player);
+ break;
+ case PLAYER_STATE_PLAYING:
+ progressbar_pause(priv->progress);
+ playermgr_pause(priv->player);
+ break;
+ 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;
+ default:
+ _ERR("player was not created");
+ break;
+ }
+}
+
+static void _player_next(struct _priv *priv)
+{
+ app_media_info *mi;
+ player_state_e state;
+
+ playermgr_get_state(priv->player, &state);
+
+ switch (state) {
+ case PLAYER_STATE_PAUSED:
+ case PLAYER_STATE_IDLE:
+ case PLAYER_STATE_READY:
+ progressbar_stop(priv->progress);
+ playermgr_stop(priv->player);
+ break;
+ case PLAYER_STATE_PLAYING:
+ mi = _get_current_media_info(priv);
+ if (!mi) {
+ _ERR("failed to getting media info");
+ return;
+ }
+
+ playermgr_play(priv->player, mi->file_path, 0);
+ break;
+ default:
+ _ERR("player was not created");
+ break;
+ }
+}
+
+static void _player_stop(struct _priv *priv)
+{
+ struct controller *ctl;
+
+ progressbar_stop(priv->progress);
+ playermgr_stop(priv->player);
+
+ ctl = priv->ctl;
+ ctl->ops->signal(ctl->handle, PLAY_BTN_LOC, SIG_SET_PLAY);
+}
+
static void _player_complete_cb(void *data)
{
- /* TODO */
+ struct _priv *priv;
+
+ if (!data)
+ return;
+
+ priv = data;
+
+ _mplayer_next(priv);
+ _player_next(priv);
}
static void _callback_music(void *data, const char *ev)
if (!strcmp(ev, SRC_BTN_MUSIC_PREV)) {
_mplayer_prev(priv);
+ _player_next(priv);
} else if (!strcmp(ev, SRC_BTN_MUSIC_NEXT)) {
_mplayer_next(priv);
+ _player_next(priv);
} else if (!strcmp(ev, SRC_BTN_MUSIC_PLAY)) {
- /* TODO */
+ _player_play(priv);
}
}