From 72bdee181ad5d95f1925d3abedd7f860101a75d3 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 9 Sep 2013 07:51:06 +0000 Subject: player: implement previous/next commands This means we can go back and forth in the tracklist like a normal music player. This will allow an easier MPRIS 2.0 implementation. --- lib/dtas/player/client_handler.rb | 7 +++++++ lib/dtas/tracklist.rb | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/lib/dtas/player/client_handler.rb b/lib/dtas/player/client_handler.rb index 355451d..33cae05 100644 --- a/lib/dtas/player/client_handler.rb +++ b/lib/dtas/player/client_handler.rb @@ -583,6 +583,13 @@ module DTAS::Player::ClientHandler # :nodoc: when "current-id" path = @tl.cur_track io.emit(path ? path.object_id.to_s : "NONE") + when "next" + _tl_skip + io.emit("OK") + when "previous" + @tl.previous! + _tl_skip + io.emit("OK") end end end diff --git a/lib/dtas/tracklist.rb b/lib/dtas/tracklist.rb index e0b00cb..c3cd3ff 100644 --- a/lib/dtas/tracklist.rb +++ b/lib/dtas/tracklist.rb @@ -114,4 +114,10 @@ class DTAS::Tracklist @goto_pos = nil # noop if track_id is invalid end + + def previous! + return if @list.empty? + prev_idx = @pos - 1 + @goto_pos = @list[prev_idx] ? prev_idx : nil + end end -- cgit v1.2.3-24-ge0c7