class XiamiRadio::View::Player

Public Class Methods

new() click to toggle source
# File lib/xiami_radio/view/player.rb, line 8
def initialize
  init_screen
  noecho
  stdscr.keypad true
  curs_set 0
  start_color
  init_pair(COLOR_CYAN, COLOR_CYAN, COLOR_BLACK)
  init_pair(COLOR_RED, COLOR_RED, COLOR_BLACK)
end

Public Instance Methods

curses_refresh(track, position)
Alias for: refresh
listen_on(player) click to toggle source
# File lib/xiami_radio/view/player.rb, line 27
def listen_on(player)
  Thread.start do
    while (key = getch)
      case key
        when KEY_LEFT
          player.rewind
        when KEY_RIGHT
          player.forward
        when KEY_DOWN
          player.next
        when 'l'
          XiamiRadio::Notice.push player.track.fav
        when ' '
          player.toggle
        else #
      end
    end
  end
end
refresh(track, position) click to toggle source
# File lib/xiami_radio/view/player.rb, line 19
def refresh(track, position)
  render_title_line track
  render_progress_line (position / track.duration), track.downloader.progress
  render_info_line track, position
  render_msg_line
  Curses.refresh
end
Also aliased as: curses_refresh

Private Instance Methods

render_info_line(track, position) click to toggle source
# File lib/xiami_radio/view/player.rb, line 69
def render_info_line(track, position)
  setpos(2, 0)
  clrtoeol
  addstr("#{track.reason.content}")
  addstr(": #{track.reason.title} ") unless track.reason.title.nil?
  addstr("- #{track.reason.artist} ") unless track.reason.artist.nil?
  addstr("    播放进度: ")
  attron(color_pair(COLOR_CYAN)|A_NORMAL) {
    addstr(" #{sec_2_min position} / #{sec_2_min track.duration} ")
  }
end
render_msg_line(msg = XiamiRadio::Notice.shift) click to toggle source
# File lib/xiami_radio/view/player.rb, line 81
def render_msg_line(msg = XiamiRadio::Notice.shift)
  setpos(3, 0)
  clrtoeol
  addstr(msg || '')
end
render_progress_line(play_rate, dawnload_rate) click to toggle source
# File lib/xiami_radio/view/player.rb, line 61
def render_progress_line(play_rate, dawnload_rate)
  d_cols = [(dawnload_rate * cols).round, cols].min
  p_cols = [(play_rate * cols).round, d_cols].min
  setpos(1, 0)
  clrtoeol
  addstr('_' * p_cols + '#' * (d_cols - p_cols) + ' ' * (cols - d_cols))
end
render_title_line(track) click to toggle source
# File lib/xiami_radio/view/player.rb, line 49
def render_title_line(track)
  setpos(0, 0)
  clrtoeol
  addstr('Now is playing ')
  attron(color_pair(COLOR_RED)|A_NORMAL) {
    addstr("  #{track.title} - #{track.artist}  ")
  }
  if User.instance.login?
    track.grade? ? addstr('    已收藏 ') : addstr('    按"L"加入收藏 ')
  end
end
sec_2_min(sec) click to toggle source
# File lib/xiami_radio/view/player.rb, line 87
def sec_2_min(sec)
  Time.at(sec).utc.strftime('%M:%S')
end