about summary refs log tree commit homepage
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/dtas/player/client_handler.rb7
-rw-r--r--lib/dtas/tracklist.rb6
2 files changed, 13 insertions, 0 deletions
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