class MediaPlayer::Player

Attributes

is_playing[R]
paused[R]
playlist[R]
process_manager[R]

Public Class Methods

new(args = {}) click to toggle source
# File lib/player.rb, line 11
def initialize(args = {})
  @process_manager = args.fetch(:process_manager)
  @playlist = args.fetch(:playlist)
  @is_playing = false
  @paused = false
end

Public Instance Methods

add_media(media_file) click to toggle source
# File lib/player.rb, line 18
def add_media(media_file)
  @playlist.add(media_file)
end
next() click to toggle source
# File lib/player.rb, line 45
def next
  @process_manager.stop
  @process_manager.execute(next_media)
end
observe() click to toggle source
# File lib/player.rb, line 55
def observe
  Thread.new do
    while @is_playing
      self.next unless @process_manager.is_current_process_alive?
      sleep 2
    end
  end
end
pause() click to toggle source
# File lib/player.rb, line 39
def pause
  @is_playing = false
  @paused = true
  @process_manager.pause
end
play() click to toggle source
# File lib/player.rb, line 22
def play
  return if @is_playing
  if @paused
    @paused = false
    @process_manager.resume
  else
    @is_playing = true
    @process_manager.execute(current_media)
  end
  observe
end
previous() click to toggle source
# File lib/player.rb, line 50
def previous
  @process_manager.stop
  @process_manager.execute(previous_media)
end
stop() click to toggle source
# File lib/player.rb, line 34
def stop
  @is_playing = false
  @process_manager.stop
end